/******************************/
/*           AJAX             */
/******************************/
/*	AJAXCrearObjeto()         */
/*	doc_parser(http)          */
/******************************/
function AJAXCrearObjeto(){
	var obj = false;
	var ids = new Array("Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP");
	for(var i=0; !obj && i<ids.length; i++){
		try{
			obj = new ActiveXObject(ids[i]);
		}
		catch(e){
			obj = false;
		}
	}
	if (!obj && typeof XMLHttpRequest!='undefined'){
		obj = new XMLHttpRequest();
		if(obj.overrideMimeType){
			obj.overrideMimeType('text/xml');
		}
	}
	return obj;
}

function doc_parser(http){
	if (window.ActiveXObject){
		var doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async = "false";
		doc.loadXML(http.responseText);
	}
	else{
		var parser = new DOMParser();
		var doc = parser.parseFromString(http.responseText,"text/xml");
	}
	return doc;
}

/****************************************/
/* FUNCIONES GENRICAS PARA OBJETOS		*/
/****************************************/
/*	obtener_objeto(inputID)				*/
/*	writeLayer(layerID,txt)				*/
/****************************************/
/*	writeinputValue(inputID,txt)		*/
/*	readinputValue(inputID)				*/
/*	readinputText(inputID)				*/
/*	disable_input(inputID,true_false)	*/
/*	readselectValue(inputID)			*/
/*	readselectText(inputID)				*/
/*	readRadiosValue(inputName)			*/
/****************************************/
function obtener_objeto(inputID){
	var objeto = false;
	if(document.getElementById){
		objeto = (document.getElementById(inputID) != null)?document.getElementById(inputID):false;
	}else if(document.all){
		objeto = (document.all[inputID] != null)?document.all[inputID]:false;
	}else if(document.layers){
		objeto = (document.layers[inputID] != null)?document.layers[inputID]:false;
	}
	return objeto;
}

function writeLayer(layerID,txt){
	if(document.getElementById){
		document.getElementById(layerID).innerHTML=txt;
	}else if(document.all){
		document.all[layerID].innerHTML=txt;
	}else if(document.layers){
		with(document.layers[layerID].document){
			open();
			write(txt);
			close();
		}
	}
}

function writeinputValue(inputID,txt){
	if(document.getElementById){
		document.getElementById(inputID).value = txt;
	}else if(document.all){
		document.all[inputID].value = txt;
	}else if(document.layers){
		document.layers[inputID].value = txt;
	}
}

function readinputValue(inputID){
	var texto;
	if(document.getElementById){
		texto = document.getElementById(inputID).value;
	}else if(document.all){
		texto = document.all[inputID].value;
	}else if(document.layers){
		texto = document.layers[inputID].value;
	}
	return texto;
}

function readinputText(inputID){
	var texto;
	if(document.getElementById){
		texto = document.getElementById(inputID).text;
	}else if(document.all){
		texto = document.all[inputID].text;
	}else if(document.layers){
		texto = document.layers[inputID].text;
	}
	return texto;
}

function readselectValue(inputID){
	var texto;
	var indice;
	if(document.getElementById){
		indice = document.getElementById(inputID).selectedIndex;
		texto = document.getElementById(inputID).options[indice].value;
	}else if(document.all){
		indice = document.all[inputID].selectedIndex;
		texto = document.all[inputID].options[indice].value;
	}else if(document.layers){
		indice = document.layers[inputID].selectedIndex;
		texto = document.layers[inputID].options[indice].value;
	}
	return texto;
}

function readselectmultipleValue(inputID){
	var texto="";
	var indice;
	var obj = obtener_objeto(inputID);
	for(indice=0;indice < obj.length;indice++){
		if(obj.options[indice].selected == true){
			texto += ","+obj.options[indice].value;
		}
	}
	return texto;
}

function readcheckboxValue(inputID){
	var texto = "";
	$("input[@type=checkbox]").each(function(){
		if(this.checked){
			texto += ","+this.value;
		}
	});
	return texto;
}

function readselectText(inputID){
	var texto;
	var indice;
	if(document.getElementById){
		indice = document.getElementById(inputID).selectedIndex;
		texto = document.getElementById(inputID).options[indice].text;
	}else if(document.all){
		indice = document.all[inputID].selectedIndex;
		texto = document.all[inputID].options[indice].text;
	}else if(document.layers){
		indice = document.layers[inputID].selectedIndex;
		texto = document.layers[inputID].options[indice].text;
	}
	return texto;
}

function readRadiosValue(inputName){
	var radios = document.getElementsByName(inputName);
	var radios;
	var txt;
	var i;
	if(document.getElementsByName){
		radios = document.getElementsByName(inputName);
	}else if(document.all){
		radios = document.all[inputName];
	}else if(document.layers){
		radios = document.layers[inputName];
	}
	for (i=0;i<radios.length;i++) {
		if(radios[i].checked){
			txt = radios[i].value;
			break;
		}
	}
	return txt;
}

function disable_input(inputID,true_false){
	if(document.getElementById){
		document.getElementById(inputID).disabled = true_false;
	}else if(document.all){
		document.all[inputID].disabled = true_false;
	}else if(document.layers){
		document.layers[inputID].disabled = true_false;
	}
}

/************************************************/
/*	FUNCIONES PARA VALIDAR CAMPOS				*/
/*	Todas retornan true/false					*/
/************************************************/
/*	ValidarDataNeixement(valor)					*/
/*	ValidarData(valor)							*/
/*	compruebaBisiesto(Anno)						*/
/*	ValidarTexto(valor)							*/
/*	ValidarSoloTexto(valor)						*/
/*	ValidarID(valor)							*/
/*	ValidarEmail(valor)							*/
/*	ValidarTelefon(valor)						*/
/*	numerico(valor)								*/
/*	soloNumeros(valor)							*/
/*	ValidarDocumentoIdentificacion(valor,tipo)	*/
/*	ValidarDNI(valor)							*/
/*	ValidarNIE(valor)							*/
/*	ValidarCIF(valor)							*/
/*	ValidarNIF(valor)							*/
/************************************************/

function afegir_error(errors,txt){
	var temp = errors+"\n<br />"+txt;
	return (temp);
}

function comprueba_campo(valor, tipo, permitir_vacio){
	var ok = false;
	if( (valor == "") && (permitir_vacio) ){
		ok = true;
	}
	else if((valor == "") && (!permitir_vacio)){
		ok = false;
	}
	else{
		switch(tipo){
			case "checkbox":
				ok=ValidarTexto(valor);
				break;
			case "multiple":
				ok=ValidarTexto(valor);
				break;
			case "texto":
				ok=ValidarTexto(valor);
				break;
			case "solotexto":
				ok=ValidarSoloTexto(valor);
				break;
			case "documento_identificacion":
				ok=ValidarDocumentoIdentificacion(valor, readRadiosValue('tipo_documento').toUpperCase());
				break;
			case "dni":
				ok=ValidarDNI(valor);
				break;
			case "ID":
				ok=ValidarID(valor);
				break;
			case "ID2":
				ok=ValidarID2(valor);
				break;
				case "email":
				ok=ValidarEmail(valor);
				break;
			case "telefon":
				ok=ValidarTelefon(valor);
				break;
			case "mobil":
				ok=ValidarTelefon(valor);
				break;
			case "data_neix":
				ok=ValidarDataNeixement(valor);
				break;
			case "data":
				ok=ValidarData(valor);
				break;
			default:
				ok=ValidarTexto(valor);
				break;
		}
	}
	return ok;
}

function splitdata(valor){
	var mask = new Array();
	//	dd/mm/aaaa
	mask[0] = /\d{2}\/\d{2}\/\d{4}/;
	//	dd-mm-aaaa
	mask[1] = /\d{2}\-\d{2}\-\d{4}/;
	//	aaaa/mm/dd
	mask[2] = /\d{4}\-\d{2}\-\d{2}/;
	//	aaaa-mm-dd
	mask[3] = /\d{4}\-\d{2}\-\d{2}/;
	var separador = '';
	for(var i=0;i<mask.length;i++){
		if(mask[i].test(valor)){
			if(/\//.test(valor)){
				separador = '/';
			}
			else if(/\-/.test(valor)){
				separador = '-';
			}
			break;
		}
	}
	if(separador == ""){
		return false;
	}
	var temp = valor.split(separador);
	return temp;
}
function ValidarData(valor){
	var temp = splitdata(valor);
	if(temp[0].length > 2){
		var Anno = temp[0];
		var Mes = temp[1];
		var Dia = temp[2];
	}
	else{
		var Anno = temp[2];
		var Mes = temp[1];
		var Dia = temp[0];
	}
	return ValidarFecha(Anno,Mes,Dia);
}
function ValidarDataNeixement(valor){
	var temp = splitdata(valor);
	if(temp[0].length > 2){
		var Anno = temp[0];
		var Mes = temp[1];
		var Dia = temp[2];
	}
	else{
		var Anno = temp[2];
		var Mes = temp[1];
		var Dia = temp[0];
	}
	var hoy = new Date();
	var annoSys = hoy.getYear();
	var mesSys = hoy.getMonth() + 1;
	var diaSys = hoy.getDate();

/*se hace la comprobacion siguiente porque en el IExplorer getYear devuelve el ao completo*/
/*mientras que en el Netscape devuelve los aos desde el 1900*/
	if(annoSys<200){
		annoSys+=1900;
	}
/*Comproba que no sigui una data superior al dia d'avu*/
	if(parseInt(Anno) > parseInt(annoSys)){
		return (false);
	}
	else if((parseInt(Anno) == parseInt(annoSys)) && ((parseInt(mesSys)*100 + parseInt(diaSys)) < (parseInt(Mes)*100 + parseInt(Dia)) )){
		return (false);
	}
	else{
		return ValidarFecha(Anno,Mes,Dia);
	}
}

function ValidarFecha(Anno,Mes,Dia){
	if(Mes.charAt(0) == '0'){
		Mes = Mes.charAt(1);
	}
	if(Dia.charAt(0) == '0'){
		Dia = Dia.charAt(1);
	}
	var dia= parseInt(Dia);
	var mes= parseInt(Mes);
	if( mes==2 && 0<dia && dia<=28 ){
		return true;
	}
	else if( mes==2 && dia==29 ){
		if(compruebaBisiesto(Anno)){
			return true;
		}
		else{
			return false;
		}
	}  	
	else if((mes==1 || mes ==3 || mes ==5 || mes ==7 || mes ==8 || mes ==10 || mes ==12)&& (0<dia) && (dia<32)){
		return true;
	}
	else if ((mes==4 || mes ==6 || mes ==9 || mes ==11)&& (0<dia) && (dia<31)){
		return true;
	}
	else{
		return false;
	}
}

function compruebaBisiesto(Anno){
	var siglo= parseInt(Anno.substring(0,2));
	var decada= parseInt(Anno.substring(2,4));
	if (decada%4==0){
		if(decada==0 && siglo%4==0){
			return true;
		}
		else if (decada!=0){
			return true;
		}
	}
	return false;
}

function ValidarTexto(valor){
	var ok = false;
	if(valor.length > 0){
		ok = true;
	}
	return ok;
}
function ValidarSoloTexto(valor){
	/*	Formato UTF-8	*/
	var patron = /^[ a-zA-ZáàéèíìóòúùÁ???Í??????ü?ñ?ç\']+$/;
	var patron2 = /^[^\s]/;
	/*	Formato ISO-8859-1	*/
	/*var patron = /^[a-zA-Z\']+$/;*/
	var cadenaEncontrada = valor.match(patron);
	var cadenaEncontrada = valor.match(patron2);
	if(cadenaEncontrada != null){
		return true;
	}
	return false;
}
function ValidarDocumentoIdentificacion(valor,tipo){
	var patron = /-/;
	var cadenaEncontrada = valor.match(patron);
	var valor2 = "";
	if(cadenaEncontrada != null){
		for(i=0; i<=valor.length; i++){
			if(valor.charAt(i) != '-'){
				valor2 += valor.charAt(i);
			}
		}
		valor = valor2;
	}
	var ok = false;
	if(tipo == 'NIF'){
		ok = ValidarNIF(valor);
	}
	else if(tipo == 'NIE'){
		ok = ValidarNIE(valor);
	}
	else if(tipo == 'CIF'){
		ok = ValidarCIF(valor);
	}
	return ok;
}
function ValidarDNI(valor){
	var ok = true;
	ok = ValidarNIF(valor);
	return ok;
}
function ValidarNIE(valor){
	var ok = true;
	if((valor.length<9) || (valor.length>10)){
		ok = false;
	}
	else if(valor.charAt(0) == 'x' || valor.charAt(0) == 'X'){
		var dni = valor.substring(1,valor.length-1);
		var letra = valor.substring(valor.length-1,valor.length);
		if (dni.length == 8 && dni.charAt(0) == "0"){
			ok = false;
		}
		else{
			ok = ValidarNIF(valor);
		}
	}
	else{
		ok = false;
	}
	return ok;
}

function ValidarCIF(valor){
	/*/El dgito de control puede ser una letra o un nmero.*/
	/*A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 0*/
	var ok = true;
	var letra = valor.substr(0,1);
	letra = letra.toUpperCase();
	var dgcontrol = valor.substr(valor.length-1,1);
	
	if (!(/^[A-Za-z0-9]{9}$/.test(valor))){
		ok = false;
	}
	if (!/^[ABCDEFGHKLMNPQS]/.test(letra)){
		ok = false;
	}
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9);
	var v2 = new Array('J','A','B','C','D','E','F','G','H','I');
	var tempdgcontrol = 0; 
	for(i=2; i <= 6; i+=2 ){
		tempdgcontrol = tempdgcontrol + v1[parseInt(valor.substr(i-1,1))];
		tempdgcontrol = tempdgcontrol + parseInt(valor.substr(i,1));
	}
	tempdgcontrol = tempdgcontrol + v1[ parseInt(valor.substr(7,1)) ];
	tempdgcontrol = (10 - ( tempdgcontrol % 10));

	if((dgcontrol != tempdgcontrol)&&(dgcontrol.toUpperCase() != v2[tempdgcontrol])){
		ok = false;
	}
	return ok;
}

function ValidarNIF(valor){
	var cadena="TRWAGMYFPDXBNJZSQVHLCKET";
	if(valor.length == 9){
		var numero = valor.substring(0,8);
		var letra = valor.substring(8);
		letra = letra.toUpperCase();
		var posicion = numero % 23;
		if(cadena.substring(posicion,posicion+1) == letra){
			return (true);
		}
		else{
			return (false);
		}
	}
	else{
		return (false);
	}
}

function ValidarID(valor){
	var ok = numerico(valor);
	if(ok){
		if(valor > -1){
				ok=true;
		}
		else{
			ok=false;
		}
	}
	return ok;
}
function ValidarID2(valor){
	var ok = false;
	if(valor != -1){
		ok=true;
	}
	return ok;
}

function ValidarEmail(valor){
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
		return (true);
	}
	else {
		return (false);
	}
}

function ValidarTelefon(valor){
	var ok = true;
	if(!soloNumeros(valor)){
		ok = false;
	}
	if(valor.length != 9){
		ok = false;
	}
	var cadtmp = valor.substring(0,1);
	if((cadtmp != '9') &&  (cadtmp != '6') && (cadtmp != '8')){
		ok = false;
	}
	return ok;
}

function numerico(valor){
	var temp;
	temp = parseInt(valor,10);
	if (!isNaN(temp)&&(temp==valor)) { 
		return (true); 
	}else{ 
		return (false);
	} 
}

function soloNumeros(valor){
	var patron = /^[0-9]+$/;
	var cadenaEncontrada = valor.match(patron);
	if(cadenaEncontrada != null){
		return true;
	}
	else{
		return false;
	}
}
