/*
 * lucy
 * v1109 Application.js
 */

var Application = new Class({

	Implements: [Options],
	
	// vars

	/////

	// ** contructor **  //////////////////////////////

	initialize : function(options){
		
		this.setOptions(options);
		
		new Overlay({opacity : 0.5});
		
		if($('basic-search')){
			this.setSeachSliderLabel();
		}
		
		$('empresas-btn').addEvent('mouseover',function(){
			$$('#empresas-btn span').set('text','Proximamente');
		});
		
		$('empresas-btn').addEvent('mouseout',function(){
			$$('#empresas-btn span').set('text','Empresas/Profesionales');
		});
		
		if($$('.getConditionsPop')){ 
			
			$$('.getConditionsPop').addEvent('click',(function(event){
				this.setConditionsPop(true);
			}).bind(this));
			
		}
		
		if($$('.getConditionsPop_NoOverlay')){ 
			
			$$('.getConditionsPop_NoOverlay').addEvent('click',(function(event){
				this.setConditionsPop(false);
			}).bind(this));
			
		}

		
		return;
	},

	//* end contructor **  //////////////////////////////	
	
	// ** setSeachSliderLabel ** ///////////////////////
	setSeachSliderLabel : function(){

		var labelColor = '#999'; 
		var restingPosition = 10;
		  //for every form field
		  $$('div#basic-search .slider label').each(function(label){
		    //set the label enhancements into place
		    label.setStyles({
		      color: labelColor,
		      position: 'absolute',
		      top: 10,
		      display: 'inline',
		      'z-index': 99
		    });
		    //get input value
		    var input = label.getNext('input');
		    //grab label width, add resting position value
		    var height = label.getSize().y;
		    var width = label.getSize().x;
		    var move = height + restingPosition + 15;
		    //onload, check if a field is filled out, if so, move the label out of the way
		    if(input.get('value') !== '') {
		      label.tween('top',0 + move);
		    }
		    // if the input is empty on focus move the label to the left
		    // if it's empty on blur, move it back
		    input.addEvents({
		      focus: function() {
		        if(input.get('value') == '') {
		          label.tween('top',0 + move);
		        }
		        else {
		          label.setStyle('top',0 + move);
		        }
		      },
		      blur: function() {
		        if(input.get('value') == ''){
		          label.tween('top',restingPosition);
		        }
		      }
		    });
		    
		    label.addEvent('click',function(){
		    	
		    	if(input.get('value') == '') {
			          label.tween('top',0 + move);
			          input.focus();
			        }
			        else {
			          label.setStyle('top',0 + move);
			        }
		    	
		    });
		    
		  });
	},
	//* end setSeachSliderLabel ** ///////////////////////
	
	// ** postForm ** ///////////////////////

	postForm : function(event,onSuccess, displayOverlay){

		if($defined(displayOverlay)){
			displayOverlay = displayOverlay
		}else{
			displayOverlay = true;
		}
		
		var form = $(event.target);
		form.set('send', {

						url: form.getProperty('action'),

						method: 'post',

						onFailure: function(){alert('error');},

						onRequest: function(){
							
							if(displayOverlay){	
								byo.overlay.displayLoading();
							}

						},

						onSuccess : onSuccess

					});



		form.send(); //Sends the form.
		return false;
	},
	
	//* end postForm ** ///////////////////////
	
	// ** sendRequest ** ///////////////////////

	sendRequest : function(url, method ,onSuccess, datasend){

		if ( $defined(datasend) ) { datasend = datasend; } else { datasend = ''; }
		
		var request = new Request({

			method		: method,
			url			: url,
			data        : datasend,
			onFailure	: function(){alert('error');},
			onRequest	: function(){

				byo.overlay.displayLoading();

			},

			onSuccess : onSuccess

		});

		request.send();

		return false;
	},
	//* end sendRequest ** ///////////////////////
	
	// ** decodeAjaxResponse ** ///////////////////////

	decodeAjaxResponse : function(response){

		response = JSON.decode(response, true);
		if (response == null) {
			alert('Response error');
			byo.overlay.hideLoading();
			return false;

		}

		return response;

	},

	//* end decodeAjaxResponse ** ///////////////////////
	
	// ** decodeAjaxResponse ** ///////////////////////

	refreshSelectList : function (response) {
		
		//alert(response); 
		//byo.overlay.hideLoading(); 
		//return false; 
		
		var response = this.decodeAjaxResponse(response);
		var listData = response.data;
		
		var ct = $$('form select[name=' + response.selectList + ']');
		// destroy existing options
		$$('select[name=' + response.selectList + '] option').each(function (item, key) {
			if ( item.get('value') != '' ) {
				item.destroy();
			}
		});
		
		if ( response.result == 1 ) {
			//create new options
			listData.each(function (item, key) {
			
				var el = new Element('option', {
						'text'  : item.name,
						'value' : item.id
				});
				
				ct.adopt(el);
		
			},this);
			
			ct.removeProperty('disabled');
			
		} else { ct.setProperty('disabled','disabled'); }
		
		byo.overlay.hideLoading();
		return false;

	},
	//* end decodeAjaxResponse ** ///////////////////////
	
	// ** scaleImages ** ///////////////////////
	scaleImages : function (maxW, maxH, className){

		var maxheight = maxH;
		var maxwidth = maxW;
		
		$j('.' + className).load(function(){
			var elId = this.getProperty('id');
			var img = $(elId);
			
			var w = parseInt( img.width );
			var h = parseInt( img.height );
			
				if ( w > maxwidth ){
					
					h = ( maxwidth / w ) * h;
					w = maxwidth;
					img.height = h;
					img.width = w;
				}
	
				if ( h > maxheight ){
					
					img.width = ( maxheight / h ) * w;
					img.height = maxheight;
				}

			if(img.width < maxW){	
				var xValue = (maxW - img.width) / 2;
				img.style.marginLeft = xValue.toString() + 'px';
			}	
				
			if(img.height < maxH){	
				var yValue = (maxH - img.height) / 2;
				img.style.marginTop = yValue.toString() + 'px';
			}
				
		}); // load
	},
	//* end scaleImages ** ///////////////////////
	
	// ** loadDetailContent ** ///////////////////////
	loadDetailContent : function(){
		var divid = 'detail-container';
		var Yheight = 550;
		var scrolledY;
		
		if( self.pageYoffset ) {
			scrolledY = self.pageYoffset;
		} else if( document.documentElement && document.documentElement.scrollTop ) {
			scrolledY = document.documentElement.scrollTop;
		} else if( document.body ) {
			scrolledY = document.body.scrollTop;
		}

		// Next, determine the coordinates of the center of browser's window
		var centerY;
		if( self.innerHeight ) {
			centerY = self.innerHeight;
		} else if( document.documentElement && document.documentElement.clientHeight ) {
			centerY = document.documentElement.clientHeight;
		} else if( document.body ) {
			centerY = document.body.clientHeight;
		}

		var topoffset = (scrolledY + (centerY - Yheight) / 2) - 130;
		var o=document.getElementById(divid);
		var r=o.style;
		r.top = topoffset + 'px';
		
		$$('#detail-container .crl-loading').setStyle('display','block');
		$j('#detail-container').animate({
		    width: '100%'
		 }, 500, function() {
		    // Animation complete.
		});
		
	},
	//* end loadDetailContent ** ///////////////////////
	
	// ** setConditionsPop ** ///////////////////////
	
		setConditionsPop : function (displayovrelay){
			
			if(displayovrelay){
				var el = $('conditionsPop');
				byo.overlay.display();
			}else{
				var el = $('conditionsPop_NoOverlay');
			}
		
			var top = window.getScrollTop() + 30;
			var left = window.getWidth() / 2 - 420;
			
			el.setStyle('display','block');
			el.setStyle('top',top + 'px');
			
			if(displayovrelay) el.setStyle('left',left + 'px');
		
			if($('close-btn')){
				$('close-btn').addEvent('click',function(){
					if(displayovrelay) byo.overlay.hide();
					el.setStyle('display','none');
				});
			}
		}
	//* end setConditionsPop **  //////////////////////////////	


});
