//Gracias a Diseņorama.com y zigotica.com;
 EXTRAS = {

	// Event listener by Scott Andrew (www.scottandrew.com):
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		} 
		else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} 
		else {
			return false;
		}
	}, 
	
	// Method adapted from Dan Pupius (pupius.co.uk):
	getElementsByClass : function(className,node) {
		if(!node) node=document;
		var refTags = document.all ? node.all : node.getElementsByTagName("*");
		var retVal = new Array();
		for(var z=0;z<refTags.length;z++) {
			if(refTags[z].className == className) 
			retVal.push(refTags[z]);
		}
		return retVal; 
	}
}


// adds 1 or more elements to an array (IE only)
if(!Array.prototype.push)
{
	Array.prototype.push =  function()
	{
		var i;
		for(i=0; j=arguments[i]; i++) this[this.length] = j;
		return this.length;
	}
}

// ==============================================================
// Crossbrowser Get computed styles 
// (c)2004 Sergi Meseguer http://zigotica.com/ under CC license:
// http://creativecommons.org/licenses/by-sa/2.0/
// ==============================================================
var  CSS = {
	setStyle : function(node,rule,value){
		if(typeof(node)=="string")  node = document.getElementById(node);
		node.style[rule] = value;
	},
	
	getStyle : function(node,rule){
		if(typeof(node)=="string")  node = document.getElementById(node);
		if(rule=="width") return CSS.getW(node);
		else if(rule=="height") return CSS.getH(node);
		else {
			if (window.getComputedStyle) return window.getComputedStyle(node, null)[rule];
			else return node.currentStyle[rule];
		}
	},

	getH : function(node){
		if(typeof(node)=="string")  node = document.getElementById(node);
		return node.offsetHeight;
	},

	getW : function(node){
		if(typeof(node)=="string")  node = document.getElementById(node);
		return node.offsetWidth;
	}
}







// JavaScript Document
// ==============================================================
// ACCESSIBLE VALIDATION FORM SCRIPT: VALID v2.0 
// (c)2004 Sergi Meseguer http://zigotica.com/ under CC license:
// http://creativecommons.org/licenses/by-sa/2.0/
// Requires EXTRAS namespace (extras.js in this folder)
// ==============================================================
// Strongly based on the excellent article by Simon Willison at
// http://www.sitepoint.com/article/simple-tricks-usable-forms/
VALID = {
	
	compulsorytitle : " es un campo obligatorio",
	optionaltitle : " es un campo opcional",
	compulsory : "Algo te dejas! Revisa la/s casilla/s marcada/s con X",
	goodemail : "Hey!!! No me times,pon bien tu correo. | ejem:nombre@dominio.com",
	goodphone : "se requiere un tel?fono valido: solo se permiten numeros\Por favor corrija el formato",

	start : function() {
		var areas = document.getElementsByTagName('textarea');
		for (var a = 0; (area = areas[a]); a++) {
			EXTRAS.addEvent(area, 'blur', VALID.bluring, false);
		}
		var inputs = document.getElementsByTagName('input');
		for (var a = 0; (input = inputs[a]); a++) {
			if(input.type == "text") {
				EXTRAS.addEvent(input, 'blur', VALID.bluring, false);			
			}
		}
		var forms = document.getElementsByTagName('form');
		for (var a = 0; (form = forms[a]); a++) {
			form.onsubmit = VALID.checkForm;
		}
		var labels = document.getElementsByTagName('label');
		for (var i = 0; i < labels.length; i++) {
			label =  labels[i];
			valor = label.innerHTML;
			valor = valor.replace(/\(\*\)/i, ""); 
			valor = valor.replace(/:/i, ""); 
			if (label.className.indexOf("required") != -1) {
				label.title = valor + VALID.compulsorytitle;
			}
			else {
				label.title = valor + VALID.optionaltitle;
			}
		}
	},

	checkForm : function(e) {
		// hacking IE events:
		var e = (e) ? e : window.event ;
		var target = (e.target) ? e.target : e.srcElement ; 

		var remaining = [];
		var requireds = EXTRAS.getElementsByClass('required problem');
		for (var i = 0; i < requireds.length; i++) {
			valor = requireds[i].innerHTML;
			valor = valor.replace(/: \(\*\)/i, ""); 
			remaining.push("\r\n"+valor);
			VALID.checkfield(document.getElementById(requireds[i].htmlFor));
		}
		var requireds = EXTRAS.getElementsByClass('required');
		for (var i = 0; i < requireds.length; i++) {
			valor = requireds[i].innerHTML;
			valor = valor.replace(/: \(\*\)/i, ""); 
			remaining.push("\r\n"+valor);
			//alert(requireds[i].htmlFor)
			VALID.checkfield(document.getElementById(requireds[i].htmlFor));
		}
		
		if(remaining.length > 0) {
			alert(VALID.compulsory);
			return false; // stop submission!
		}
		else {
			
			return true; //reemplazar por return true;
			//return true; // do submit
		}
	},

	checkfield : function(target) {
		var label;
		var labels = document.getElementsByTagName('label');
		for (var i = 0; i < labels.length; i++) {
			if (labels[i].htmlFor == target.id) {
				label =  labels[i];
			}
		}
		if (target.value.length == 0 && label.className.indexOf("required") != -1) {
			label.className = 'required problem';
		} 
		else if (target.value.length != 0 && label.className.indexOf("required") != -1) {
			label.className = 'required completed';
		}
		else if (target.value.length != 0 && label.className.indexOf("required") == -1) {
			label.className = 'completed';
		}
		else if (target.value.length == 0 && label.className.indexOf("required") == -1) {
			label.className = '';
		}
		
    		// Regular Expression matching http://
    		var urlRegExp = /http:\/\//i;
    		if(target.id == "url" && target.value.length != 0 && !urlRegExp.test(target.value)) {
			target.value = "http://"+target.value;
	    	}
    		// Regular Expression matching phone number
    		var phoneRegExp = /[a-zA-Z_]/i;
    		if(target.id == "phone" && target.value.length != 0 && phoneRegExp.test(target.value)) {
			target.value = target.value.replace(/[a-zA-Z_]/gi,"-");
			alert(VALID.goodphone);
	    	}
	    	
    		// Regular Expression matching from
		// http://regexlib.com/UserPatterns.aspx?authorId=1758
    		var emailRegExp = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/i;
	    	if(target.id == "email" && target.value.length != 0 && emailRegExp.test(target.value)) {
			if (label.className.indexOf("required") != -1) {
				label.className = 'required completed';
			} 
			else {
				label.className = 'completed';
			}
	    	}
	    	else if(target.id == "email" && target.value.length != 0 && !emailRegExp.test(target.value)) {
			if (label.className.indexOf("required") != -1) {
				label.className = 'required problem';
			} 
	    		else {
	    			label.className = 'problem';
	    		}
	    		alert(VALID.goodemail);
	    	}
	},

	bluring : function(e) {
		// hacking IE events:
		var e = (e) ? e : window.event ;
		var target = (e.target) ? e.target : e.srcElement ; 

		VALID.checkfield(target);
	}
	
}


if(document.getElementsByTagName) EXTRAS.addEvent(window, 'load', VALID.start, false);
