function strlen (string) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Sakimori
    // +      input by: Kirk Strobeck
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +    revised by: Brett Zamir (http://brett-zamir.me)
    // %        note 1: May look like overkill, but in order to be truly faithful to handling all Unicode
    // %        note 1: characters and to this function in PHP which does not count the number of bytes
    // %        note 1: but counts the number of characters, something like this is really necessary.
    // *     example 1: strlen('Kevin van Zonneveld');
    // *     returns 1: 19
    // *     example 2: strlen('A\ud87e\udc04Z');
    // *     returns 2: 3
 
    var str = string+'';
    var i = 0, chr = '', lgth = 0;
 
    var getWholeChar = function (str, i) {
        var code = str.charCodeAt(i);
        var next = '', prev = '';
        if (0xD800 <= code && code <= 0xDBFF) { // High surrogate(could change last hex to 0xDB7F to treat high private surrogates as single characters)
            if (str.length <= (i+1))  {
                throw 'High surrogate without following low surrogate';
            }
            next = str.charCodeAt(i+1);
            if (0xDC00 > next || next > 0xDFFF) {
                throw 'High surrogate without following low surrogate';
            }
            return str.charAt(i)+str.charAt(i+1);
        } else if (0xDC00 <= code && code <= 0xDFFF) { // Low surrogate
            if (i === 0) {
                throw 'Low surrogate without preceding high surrogate';
            }
            prev = str.charCodeAt(i-1);
            if (0xD800 > prev || prev > 0xDBFF) { //(could change last hex to 0xDB7F to treat high private surrogates as single characters)
                throw 'Low surrogate without preceding high surrogate';
            }
            return false; // We can pass over low surrogates now as the second component in a pair which we have already processed
        }
        return str.charAt(i);
    };
 
    for (i=0, lgth=0; i < str.length; i++) {
        if ((chr = getWholeChar(str, i)) === false) {
            continue;
        } // Adapt this line at the top of any loop, passing in the whole string and the current iteration and returning a variable to represent the individual character; purpose is to treat the first part of a surrogate pair as the whole character and then ignore the second part
        lgth++;
    }
    return lgth;
}


function nuevoAjax()
{ 
	var xmlhttp=false; 
	try 
	{ 
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}


function reloadCaptcha(){
	var captchaImg = new Image();
	captchaImg.src = "captcha.php?i="+captcha;
	document.images["captchaImg"].src = captchaImg.src;
	captcha++;
	}

function formSubmit(step){
	
	var contactoForm = document.getElementById("contactoForm");
	var contactoLoading = document.getElementById("contactoLoading");
	var contactoCampos = new Array(document.getElementById("contactoName"),document.getElementById("contactoMail"),document.getElementById("contactoWeb"),document.getElementById("contactoMsj"),document.getElementById("contactoBoton"));
	var captchaCampos = new Array(document.getElementById("captchaDiv"),document.getElementById("captchaInput"));
		/*
			contactoForm.style.display="none";
			contactoLoading.style.display="block";
		*/
	
	if(step == 1){
	
	// Anulamos todos los input, para evitar dobles envios
		contactoCampos[0].disabled=true; contactoCampos[1].disabled=true; 
		contactoCampos[2].disabled=true; contactoCampos[3].disabled=true; 
		contactoCampos[4].disabled=true;
		
		if(contactoCampos[0].value !== "" && contactoCampos[1].value !== "" && contactoCampos[3].value !== ""){
				contactoForm.style.display="none";
				captchaCampos[0].style.display="block";
			} else {
				alert(msj[0]);
				contactoCampos[0].disabled=false; contactoCampos[1].disabled=false; 
				contactoCampos[2].disabled=false; contactoCampos[3].disabled=false; 
				contactoCampos[4].disabled=false;
			}
	} else if(step == 2){
		captchaCampos[1].disabled=true;
		
		if(captchaCampos[1].value !== "" && strlen(captchaCampos[1].value) == 8){
			
			var ajax=nuevoAjax();
			ajax.open("POST", "contacto.ajax.php?s=captcha", true);
			ajax.onreadystatechange=function(){ 
				if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){ contactoLoading.style.display="block"; }
				if (ajax.readyState==4){ 
					contactoLoading.style.display="none";
					if(ajax.responseText !== "ERROR"){
							
							if(ajax.responseText !== "fallo"){
								alert(msj[3]);								
							} else {
								alert(msj[2]);	
								}
							
								contactoForm.style.display="block";
								contactoLoading.style.display="none";
								captchaCampos[0].style.display="none";	
								contactoCampos[0].disabled=false; contactoCampos[1].disabled=false; 
								contactoCampos[2].disabled=false; contactoCampos[3].disabled=false; 
								contactoCampos[4].disabled=false; captchaCampos[1].disabled=false;
							
						} else {
							alert(msj[1]);	
							captchaCampos[1].disabled=false;
							}
				} 
			}
			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			ajax.send("code="+captchaCampos[1].value+"&name="+contactoCampos[0].value+"&mail="+contactoCampos[1].value+"&web="+contactoCampos[2].value+"&msj="+contactoCampos[3].value);
			
			
		} else {
			alert(msj[1]);	
			captchaCampos[1].disabled=false;
			}
		
	}
	
		
}

function showhide(capa){
	
	var div = document.getElementById(capa);	
		display = div.style.display;
		
		if(display == "none"){
			div.style.display="inline";
			} else {
			div.style.display="none";	
				}
}

function changeDiv(divE,divS){
	
	var capaEntrada = document.getElementById(divE);
	var capaSalida 	= document.getElementById(divS);
	
	capaEntrada.style.display="none";
	capaSalida.style.display="block";
	
	}

var c = 0;

function crear(obj,elem,tipo,name,klass) {

  var destino = document.getElementById(obj); 
  
  contenedor = document.createElement('div'); 
  contenedor.id = 'c'+c; 
  destino.appendChild(contenedor); 

  ele = document.createElement(elem); 
  ele.type = tipo; 
  ele.name = name+"[]"; 
  ele.className = klass;  
  contenedor.appendChild(ele); 
  
  c++;
} 

function xSend(capa,tipo,vars){
	
	var caja = document.getElementById(capa);
			
		var ajax=nuevoAjax();
		ajax.open("GET", "inc/ajax."+tipo+".php"+vars, true);
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){  caja.innerHTML=loading;  } 
			if (ajax.readyState==4){  
					caja.innerHTML = ajax.responseText;
				} 
		
		}
		ajax.send(null);
	
	}

function insert(id,tipo,sec,campos,div){
	
	num = campos.length;
	
	var xPost = "1="+id;
	var e = 2;
	
	for(i = 0; i < num; i++){	
		c = campos[i];
		input = document.getElementById(c);
		xPost += "&"+e+"="+input.value;
		e++;
	}
	
	caja = document.getElementById(div);
	
	var ajax=nuevoAjax();
		ajax.open("POST", "inc/ajax."+tipo+".php?sec="+sec, true);
		ajax.onreadystatechange=function(){ 
		
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){  
				caja.innerHTML=loading;
				} 
			
			if (ajax.readyState==4){  
				caja.innerHTML=ajax.responseText;  	
				} 
		
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(xPost);


}

function update(id,tipo,sec,extra){

var caja = document.getElementById("s"+id);

	if(extra == "name"){
		
	var input = document.getElementsByName("iedit");
	num = input.length;
	var post = "";
	for(i = 0; i < num; i++){
		post += "&"+i+"="+input[i].value;
		}
		
		var ajax=nuevoAjax();
		ajax.open("POST", "inc/ajax."+tipo+".php?sec="+sec, true);
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){ caja.innerHTML=loading; } 
			if (ajax.readyState==4){ caja.innerHTML=ajax.responseText; } 
		
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("id="+id+""+post);
		
	} else if(extra == "lista"){ 
	
	var input = document.getElementsByName("iedit"+id);
	
	num = input.length;
	
	var post = "";
	
	for(i = 0; i < num; i++){
		
		post += "&"+input[i].className+"="+input[i].value;
		
	}
		
		var ajax=nuevoAjax();
		ajax.open("POST", "inc/ajax."+tipo+".php?sec="+sec, true);
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){ caja.innerHTML=loading; } 
			if (ajax.readyState==4){ caja.innerHTML=ajax.responseText; } 
		
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("id="+id+""+post);
		
		
	} else {
	
	
	var input = document.getElementById("i"+id);	
		inValue = input.value;
		
		
		var ajax=nuevoAjax();
		ajax.open("POST", "inc/ajax."+tipo+".php?sec="+sec, true);
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){  caja.innerHTML=loading; input.disabled=true;  } 
			if (ajax.readyState==4){  caja.innerHTML=ajax.responseText; input.disabled=false; 	} 
		
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("id="+id+"&in="+inValue);
		
	}
	
}
	
function deleteX(id,tipo,sec){
	
	var caja = document.getElementById("s"+id);
	var lista = document.getElementById("li"+id);	
	
		
		var ajax=nuevoAjax();
		ajax.open("POST", "inc/ajax."+tipo+".php?sec="+sec, true);
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3){  caja.innerHTML=loading;  } 
			if (ajax.readyState==4){  caja.innerHTML=ajax.responseText;  	} 
		
		}
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send("id="+id);
		
		setTimeout("xClose('li"+id+"')",1000);
	
	}
	
function timeClose(capa,tiempo){
	setTimeout("xClose('"+capa+"')",tiempo);
	}

function timeEmpty(capa,tiempo){
	setTimeout("xEmpty('"+capa+"')",tiempo);
	}

function timeFunction(capa,tiempo,func,atributos){
	setTimeout("x"+func+"('"+capa+"','"+atributos[0]+"','"+atributos[1]+"')",tiempo);
	}

function xStyle(capa,Cl,fondo){
	var div = document.getElementById(capa);
		div.className=Cl;
		div.style.background=fondo;
	}

function xEmpty(capa){
	var div = document.getElementById(capa);
		div.innerHTML="";
	}


function xOpen(capa){
	var div = document.getElementById(capa);
		div.style.display="block";
	}

function xClose(capa){
	var div = document.getElementById(capa);
		div.style.display="none";
	}