var Suscripcion = { };


Suscripcion.init = function() {
	var form;

	insertStyle();

	try{

		 form = document.forms[formulariocanalmail];
		 var check = destino.substr(0,1);
		 check = botonsubmit.substr(0,1);

	}catch(variable){
		alert(variable);
		return false;
	}

	form.onsubmit = Suscripcion.valida;

	for(var id in formModel.hiddens){

		var meta = formModel.hiddens[id];

		var campo = document.forms[formulariocanalmail][meta.alias?meta.alias:id];

		if(meta.required){

			if(!campo){
				if(meta.label)
					alert(meta.label+""+getMessage("necesario$label")+"");
				else
					alert(meta +""+getMessage("necesario$label")+"");
			}
		}
	}

	for (var id in formModel.fields) {
		var meta = formModel.fields[id];
		if (meta.refresh) {
			forEachControl(id, function(control, value) {
				if (control.type == "radio" || control.type == "checkbox") {
					control.onclick = Suscripcion.refresh;
				} else {
					control.onchange = Suscripcion.refresh;
				}
			} );
		}
	}
	Suscripcion.refresh();

	/*if (valida) {
		var pestanhas = valida.split(",");
		cambiaForm(pestanhas[0], pestanhas[1], true)
	} */

	init();
};

Suscripcion.valida = function(name) {
	var errors = [];
	var id;

	var focus = null;


//   if($(botonsubmit)==etiquetacorregistro)
//		return validaCorregistro("corregistro");

   if(Suscripcion.labelErrorMode)
      hideErrorLabels();

   var meta = formModel.hiddens["corregistro"]

   if(meta.state){
      return validaCorregistro(meta.label);
   }


   try{
		for (id in formModel.fields) {
			if (typeof name == "string" && id.indexOf(name) != 0) continue;
         errorid=id;
			var meta = formModel.fields[id];
			if(meta.alias)
				id=meta.alias;

			if (meta.hidden && !eval(meta.hidden)) continue;

			var error = "";
			var value = cm_get(id);

			if(document.forms[formulariocanalmail][id]){
			   var controls = document.forms[formulariocanalmail][id];
			   var control = controls.nodeName? controls : controls[0];
			   var label = meta.label;
			   if (label.indexOf("$")!=-1)
				   label = getMessage(meta.label);
			   
			  
			   var emp = empty(value);
         }else
            continue;

         if (emp && meta.required && eval(meta.required)) {

            if (control.type == "radio" || control.type == "checkbox" || control.name.toLowerCase() == "select") {
            		
					error = getMessage(formModel.messages.requiredSelect);
					
				} else {
               if(id!="cp" || (id=="cp" && cm_get("pais")=="ESP") )
                  error = getMessage(formModel.messages.requiredText);
				}
			}

			if (!error && !emp && meta.pattern && !value.match(meta.pattern)) {
            if(id!="cp" || (id=="cp" && cm_get("pais")=="ESP") )
               error = getMessage(formModel.messages.error);
			}

			if (!error && !emp && meta.validate) {
				error = meta.validate(value);
			}

			if (error) {
			   var errorObj = new Object;
			   
			   errorObj.msg=error.replace("$$", label);

			   /*
			   ************************

			   debe coincidir con esta estructura
			      <tag id="-contenedor campos-">
			         <input type="text/radio/check" .. id="id_campo" />
			      </tag>
			   De forma que se aņadira un label al tag "contenedor campos" con el error
			   en el procesamiento de errores

			   ************************
			   */
			   errorObj.id = getid(errorid);

				errors.push(errorObj);
				if(focus==null){
					focus=control;
				}
			}

		}

		if( proccesErrors(errors, Suscripcion.labelErrorMode,"cm_errors", focus))
		   if(validacionesasociado()) {
				enviar();
				return false;
		   }

	   return false;

	}catch(mensaje){
		alert("error en "+id+" error="+mensaje.description);
		return false;
	}

};


Suscripcion.refresh = function() {
	for (var id in formModel.fields) {
		var meta = formModel.fields[id];

		if (meta.required) {
			var required = eval(meta.required);


			try{
			/*
				if(id=="operacion.carencia"||id=="economico.respuesta"){
					setClass(document.forms[formulariocanalmail][id].item(0).parentNode.parentNode, "required", required);
				}else{
					setClass(document.forms[formulariocanalmail][id].parentNode.parentNode, "required", required);
				}
*/
			}catch (variable){

				return false;
			}
		}

		if ( document.forms[formulariocanalmail][id] && meta.hidden ) {
			var value = eval(meta.hidden);


			var controls = document.forms[formulariocanalmail][id];
			var control = controls.nodeName? controls : controls[0];

			if (!value) {
				forEachControl(id, function(control) {
					if (control.type == "radio" || control.type == "checkbox") {
						control.checked = null;
					} else {
						control.value = "";
					}

					control.disabled = true;
				} );
			} else {
				forEachControl(id, function(control) {
					control.disabled = false;
				} );
			}

			//control.parentNode.style.visibility = value? "visible" : "hidden";
			//var fieldChilds = control.parentNode.parentNode.childNodes;
			//var todoOculto = true;

			//for (var i = 0; i < fieldChilds.length; i++) {
				//var child = fieldChilds[i];

				//if (child.className == "control" && child.style.visibility != "hidden") {
					//todoOculto = false;
					//break;
				//}
			//}

			//control.parentNode.parentNode.style.display = todoOculto? "none" : "";
		}

		if (meta.calculate) {
			var controls = document.forms[formulariocanalmail][id];
			var control = controls.length > 0? controls[0] : controls;
			control.value = eval(meta.calculate);
		}
	}
};


//Valores de estilo e idioma por defecto
Suscripcion.labelErrorMode=false;
Suscripcion.paisMensajes="ESP";
Suscripcion.tratamiento="tu";



if (window.addEventListener) {
   window.addEventListener("load", Suscripcion.init, false);
} else {
	window.attachEvent("onload", Suscripcion.init);
}

