/* licuit.com */
/* home.js */
/* Created Oct, 2011 */
/* Modified Oct, 2011
--------------------------------------- */

licuitCore.home = new Class({
	Extends : licuitCore.licuit,
	
	currentHash : "home",
	
	maps_visible : false,
	cita_visible : false,
	
	mapsLayer : null,
	citasLayer : null,
	
	customizer : null,
	msg : null,
	
	initialize : function(){},
	
	setup : function(){		
		this.mapsLayer = $("maps_layer").clone(true,true);
		$("maps_layer").dispose();
		this.citasLayer = $("citas_layer").clone(true,true);
		$("citas_layer").dispose();
		
		this.customizer = Custom;
		
		var hash = self.location.hash.split("#")[1];
		this.hashChanged(hash);
	},
	
	hashChanged : function(newHash){
		if(newHash == undefined)
			return;
			
		newHash = newHash.toLowerCase();
		if(newHash == this.currentHash)
			return;
		
		switch(newHash){
			case "home":
				this.hideCita();
				this.hideMaps();
			break;
			case "cita":
				this.showCita();
				this.hideMaps();
			break;
			case "maps":
				this.hideCita();
				this.showMaps();
			break;
		}
		
		this.currentHash = newHash;
	},
	
	showCita : function(){
		if(this.cita_visible == true)
			return;
			
		this.cita_visible = true
		
		var layer = this.citasLayer.clone(true,true);
		layer.setStyle("opacity",0);
		
		appCore.layer.show();
		appCore.layer.addContent(layer);
		appCore.layer.addCloser();
		
		var tween = appCore.tween(layer,500,"opacity",1);
		tween.removeEvents();
		
		this.customizer.fixIn(layer);
		
		this.setupCitaForm(layer.getElement("form"));
	},
	
	hideCita : function(){
		if(this.cita_visible == false)
			return;
			
		this.cita_visible = false;		
		appCore.layer.hide();
	},
	
	showMaps : function(){
		if(this.maps_visible == true)
			return;
		
		this.maps_visible = true
		
		var layer = this.mapsLayer.clone(true,true);
		layer.setStyle("opacity",0);
		
		appCore.layer.show();
		appCore.layer.addContent(layer);
		appCore.layer.addCloser();
		
		var tween = appCore.tween(layer,500,"opacity",1);
		tween.removeEvents();
	},
	
	hideMaps : function(){
		if(this.maps_visible == false)
			return;
		
		this.maps_visible = false;
		
		appCore.layer.hide();
	},
	
	setupCitaForm : function(form){
		form.getElement(".btnConfirmar").addEvent("click",function(e){
			e.preventDefault();
			if(this.checkFields(form) == true)
				this.sendForm(form);
		}.bind(this))
		
		form.getElements("input").each(function(element){
			element.addEvent("blur",this.checkFields.pass([form,element.get("id")],this))
		}.bind(this));
		
		form.getElements("select").each(function(element){
			element.addEvent("change",this.checkFields.pass([form,element.get("id")],this))
		}.bind(this));
	},
	
	checkFields : function(form,fieldId){
		var nokColor = "#ffc9c9";
		var allOk = true;
		
		if(fieldId == undefined || fieldId == "iNombre"){
			var field = $("iNombre");
			field.set("value", String(field.get("value")).trim());
			if( field.get("value") == "" ){
				field.setStyle("background-color",nokColor);
				allOk = false;
			}else{
				field.setStyle("background-color",null);
			}
		}
		
		if (fieldId == undefined || fieldId == "iApellidos") {
			var field = $("iApellidos");
			field.set("value", String(field.get("value")).trim());
			if (field.get("value") == "") {
				field.setStyle("background-color", nokColor);
				allOk = false;
			}
			else {
				field.setStyle("background-color", null);
			}
		}
		
		if (fieldId == undefined || fieldId == "iEmail") {
			var field = $("iEmail");
			field.set("value", String(field.get("value")).trim());
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (field.get("value") == "" || !filter.test(field.get("value"))) {
				field.setStyle("background-color", nokColor);
				allOk = false;
			}
			else {
				field.setStyle("background-color", null);
			}
		}
		
		if (fieldId == undefined || fieldId == "iTelefono") {
			var field = $("iTelefono");
			field.set("value", String(field.get("value")).trim());
			if (field.get("value") != "" && String(field.get("value")).length < 9) {
				field.setStyle("background-color", nokColor);
				allOk = false;
			}
			else {
				field.setStyle("background-color", null);
			}
		}
		
		if (fieldId == undefined || fieldId == "iDia") {
			var field = $("iDia");
			if (field.selectedIndex  == 0) {
				field.addClass("nok");
				allOk = false;
			}
			else {
				field.removeClass("nok");
			}
		}
		
		if (fieldId == undefined || fieldId == "iHora") {
			var field = $("iHora");
			if (field.selectedIndex  == 0) {
				field.addClass("nok");
				allOk = false;
			}
			else {
				field.removeClass("nok");
			}
		}
		
		Custom.fixIn(form);
		
		if(allOk == false && fieldId == undefined)
			appCore.messages.show("customizedSay","Revisa los campos,","corrige los que están en rojo");
		
		return allOk;		
	},
	
	sendForm : function(form){
		this.msg = appCore.messages.show("customizedWaiter","Un segundo,","se está enviando...");
		form.setStyle("display","none");
		var params = {};
        params.component = "com.licuit.contact";
        params.method = "sendEmail";
        params.onComplete = this.formSent.bind(this);
		params.onError = this.formNoSent.pass([form],this);
        params.variables = {
			"nombre" : escape($("iNombre").get("value")),
			"apellidos" : escape($("iApellidos").get("value")),
			"email" : escape($("iEmail").get("value")),
			"telefono" : escape($("iTelefono").get("value")),
			"dia" : escape($("iDia").get("value")),
			"hora" : escape($("iHora").get("value")),
		};
        		
        appCore.ajaxCalls.newPHPRequest(params);        
	},
	
	formSent : function(result){
		appCore.messages.hide(this.msg);
		appCore.layer.clearContent();
		appCore.messages.show("customizedTell","¡Gracias!","Nos vemos en SIMA",function(){self.location.hash="#home";})
	},
	
	formNoSent : function(form){
		appCore.messages.hide(this.msg);
		appCore.messages.show("customizedSay","Hay un problema,","vuelve a intentarlo más tarde");
		form.setStyle("display","block");
	}
	
});
var home = new licuitCore.home();
window.addEvent("domready",function(){home.setup()});
window.addEvent("hashchange",home.hashChanged.bind(home));

