function ContactController(){
	this.onLoadComplete=function(){
		Event.observe($("btnSubmit"),"click",this.validate.bindAsEventListener({pScope:this}));
		Event.observe($("pais"),"change",this.changeCountry.bindAsEventListener({pScope:this}));
	}
	this.changeCountry=function(){
		if($("pais").value=="US"){
			$("cnt_estado_usa").style.display="";
			$("cnt_estado").style.display="none";
		} else {
			$("cnt_estado_usa").style.display="none";
			$("cnt_estado").style.display="";
		}
	}		
	this.validate=function(e){
		Event.stop(e);
		var validatorObj=new ValidatorContactForm();
		lLbs=$("contactForm").getElementsByTagName("label");
		if (lLbs){
			for (var i=0;i<lLbs.length;i++){
				lLbs[i].getElementsByTagName("span")[0].className="";
			}
		}
		if (!validatorObj.validate($("contactForm"))){
			var noValidRules=validatorObj.getNoValidRules();
			if (noValidRules){
				for (var i=0;i<noValidRules.length;i++){
					$(noValidRules[i].obj).parentNode.getElementsByTagName("span")[0].className="error";
				}
			}
			new Effect.Grow('msgErrorImg');
		
		} else {
			this.pScope.sendForm();
		}
	}
	this.sendForm=function(){
		$("btnSubmit").disabled="disabled";
		$("msgErrorImg").style.display="none";
			new Effect.Grow('msgSendImg');
		url="../sendmail/contact_send.php";
		var lOptions={
			caller:this.caller,
			method:"post",
			onSuccess:this.onSend,
			onFailure:this.onFailSend,
			parameters:Form.serialize($("contactForm"))
		};
		var a=new Ajax.Request(url,lOptions);
	}
	this.onSend=function(){
		$("msgSendImg").style.display="none";
		new Effect.Grow('msgGraciasImg');
	}
	this.onFailSend=function(){
		$("msgSendImg").style.display="none";
		new Effect.Grow('msgErrorSendImg');
		$("btnSubmit").disabled="";
	}
}




var ValidatorContactForm = function(pForm){
  this.inheritFrom = Validator;
  this.inheritFrom();
  this.oForm=pForm;
  this.validate=function(){
    this.addRule({fnc:exist,obj:$("nombre"),id:"nombre"});
    this.addRule({fnc:exist,obj:$("correo"),id:"correo"});
    this.addRule({fnc:exist,obj:$("ciudad"),id:"ciudad"});
    this.addRule({fnc:exist,obj:$("telefono"),id:"telefono"});
    this.addRule({fnc:exist,obj:$("texto"),id:"texto"});
    var lIsValid=this.applyRules();
    return lIsValid;
  }
  exist=function(pObj){
    if (pObj.value!=""){
      return true
    }
    return false;
  }
  existMax100=function(pObj){
    if (pObj.value!=""&&pObj.value.length<=100){
      return true
    }
    return false;
  }
  existMax20=function(pObj){
    if (pObj.value!=""&&pObj.value.length<=20){
      return true
    }
    return false;
  }
  existMax50=function(pObj){
    if (pObj.value!=""&&pObj.value.length<=50){
      return true
    }
    return false;
  }
}

Validator=function(){
  var mRules=new Array()
  this.addRule=function(pRuleParams) {
    mRules[mRules.length]=pRuleParams;
  }
  this.removeRule=function(pRuleId){
    var lPosition=this.getRulePosition(pRuleId);
    mRules.splice(lPosition,1);
  }
  this.getRulePosition=function(pRuleId){
    for (i=0;i<mRules.length;i++) {
      if (mRules[i].id==pRuleId) {
        return i;
      }
    }
    return false;
  }
  this.applyRules=function(){
    var lIsValid=true;
    for (var i=0;i<mRules.length;i++) {
      var lValidation=mRules[i].fnc(mRules[i].obj);
      if (!lValidation) {
        lIsValid=false;
        mRules[i].status=false;
      } else {
        mRules[i].status=true;
      }
    }
    
    return lIsValid;
  }
  this.getNoValidRules=function(){
    var lAux=Array();
    for (i=0;i<mRules.length;i++) {
      if (mRules[i].status==false){
        lAux[lAux.length]=mRules[i];
      }
    }
    return lAux;
  }
}
var controller=new ContactController();
controller.onLoadComplete();