// JavaScript Document

//////////////////////////////////////////////////////////////////
// FUNCIONES GENERALES DE VALIDACION

var numeros="0123456789"
var letras_minusculas="a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z"
var letras_mayusculas=letras_minusculas.toUpperCase()
var letras=letras_minusculas+letras_mayusculas

function validacion(f) {
	var formu;
	error=false
    mensaje=''
	validar(f)
    if (error){
		alert(mensaje)
	}else{
		formu = buscar_objeto(f)
		if(!formu.action) {
			formu.action = "index.php";
		}
		formu.submit()
	}
}

function validacionAlt(f) {
	var formu;
	error=false
    mensaje=''
	validarAlt(f)
    if (error){
		alert(mensaje)
	}else{
		formu = buscar_objeto(f)
		if(!formu.action) {
			formu.action = "index.php";
		}
		formu.submit()
	}
}

//  Funcion buscadora
function buscar_objeto(n, d){ //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function obj_val(obj){
	if(obj.type=="select-one")
		return obj;
	else  
		return obj.value
}

function validaCombo(id)
{
	combo = document.getElementById (id);
	if (combo==null) return true;
	if ( combo.options[combo.selectedIndex].value == -1)
		return false;
	else
		return true;
}


// validacion para los codigos de libros de precios de RENAULT
function esCodigo_LP(s){
	var result = false;
	if (_MARCA == 'renault'){
		if (/^\d{6}-F2$/i.test(s)){
			result = true;
		}
	} else if (_MARCA == 'dacia') {
		if (/^\d{5}-DF2$/i.test(s)){
  			result = true;
  		}
	}
	return result;
}
// valida formato fecha 'dd/mm/aaaa'
function esFecha(s){
	if (/^(0[1-9]|1\d|2\d|3[0-1])\/(0[1-9]|1[0-2])\/\d{4}$/.test(s)){
  		return (true);
  	} else {
   	   	return (false);
  	}
}
function esMatricula (s){
	return esAlfanumerico(s);
}

function esMatriculaEsp(s) {
	if (/^E?\d{4}[A-Z]{3}$/i.test(s)){
  		return (true);
  	} else if (/^[A-Z]{1,2}\d{4}[A-Z]{1,2}$/i.test(s)){
  		return (true);
    } else {
   	   return (false);
  	}
}

function esMatriculaEspNueva(s) {
	if (/^E?\d{4}[A-Z]{3}$/i.test(s)){
  		return (true);
  	} else {
   	   return (false);
  	}
}

function esAlfanumerico( str ) {
	// Return immediately if an invalid value was passed in
	if (str+"" == "undefined" || str+"" == "null" || str+"" == ""){
		return false
	}
	var isValid = true
   	str += ""
   	for (i = 0; i < str.length; i++)
   	{
      	if (!(((str.charAt(i) >= "0") && (str.charAt(i) <= "9")) || 
      			((str.charAt(i) >= "a") && (str.charAt(i) <= "z")) ||
      			((str.charAt(i) >= "A") && (str.charAt(i) <= "Z"))))
			{
				isValid = false
				break
			}	
   	} 
   	return isValid
}
function esContrasena(clave) {
	clave2 = buscar_objeto("clave2")
	clave2 = clave2.value
	return (clave==clave2)
}

function esIndiferente(s) {
	if (esVacio(s)) return false
	return true
}

function esNumero(s) {
	var num
	num=parseFloat(s)
	if (num!=''+s) return false
    return true
}

function esNumeroVia(s) {
	if(s == 's/n' || s == 'sn' || s == 's-n') {
		return true;
	} else {
		var num
		num=parseFloat(s)
		if (num!=''+s) return false
	    return true
	}
}

function esEntero(s) { 
	var num  
	s = "" + s;
	num=new String(parseInt(s, 10))
	if (num!=''+s) return false
  return true
}

function esEnteroPositivo(s) { 
	if (!esEntero(s)) return
	if (parseInt(s, 10)<0) return
    return true
}


function esVacio(s){
	if ((s == null) || (s.length < 3) || (s == ' ')) {
       return true;
	}
}

function esNombre (s){
    if (esVacio(s)) return false
    validos = letras+" "
    for (i = 0; i < s.length; i++){   
        c = s.charAt(i);
        if (validos.indexOf(c) == -1) return false;
    }
	return true
}

function esApellido (s){
    return esNombre(s)
}

function esDNI(s) {
	if (s.length<10) 
		return true;
	else
		return false;
}

function esNIF(s) {
	// INICIO: DNIs RESIDENTES (2009)
	primera = s.substring(0,1);
	primera = primera.toUpperCase();
	if(primera=='X') s = '0'+s.substring(1);
	if(primera=='Y') s = '1'+s.substring(1);
	if(primera=='Z') s = '2'+s.substring(1);
	// FIN: DNIs RESIDENTES

	lo=s.length;
	if (lo<2 || lo>10) return false;
	dni=s.substring(0,lo-1)
	if (!esDNI(dni)) return false;
	letra=new Array("T","R","W","A","G","M","Y","F",
					"P","D","X","B","N","J","Z","S",
					"Q","V","H","L","C","K","E");
	nif=s.substring(lo-1,lo).toUpperCase()
	if (nif!=letra[dni%23]) return false;
	return true;
}

function esCIF(s) {
	var v1 = new Array(0,2,4,6,8,1,3,5,7,9); 
	var ccl = 'JABCDEFGHI'; 
	var temp = 0;

	s = s.toUpperCase(); 
	if (!/^[A-Za-z0-9]{9}$/.test(s)) return(false);
	if (!/^[ABCDEFGHKLMNPQS]/.test(s)) return(false);
	
	for(i=2; i<=6; i+=2) {
		temp = temp + v1[ parseInt(s.substr(i-1,1), 10)];
		temp = temp + parseInt(s.substr(i,1), 10);
	};
	
	temp = temp + v1[parseInt(s.substr(7,1), 10)];
	temp = (10 - (temp%10));
	if(temp==10) temp=0;
	cc = s.substr(8, 1);
	
	return((temp==cc || cc==ccl.substr(temp, 1)));
}
function esEmail(s) {
  	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(s)){
  		return (true);
  	} else {
   	   return (false);
  	}
}

function esDominioEmail(s) {
	if (/@(\w+\.)?(?:renault|dacia|rci|rcibanque)\b(\.\w{2,3})+$/i.test(s)){
  		return (false);
  	} else {
   	   return (true);
  	}
}

function esTelefono(tel){
	primerdigito="96"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esTelefonoMovil(tel){
	primerdigito="6"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esTelefonoFijo(tel){
	primerdigito="9"
	if (tel.length!=9 || !esEntero(tel) || (primerdigito.indexOf(tel.charAt(0)) == -1)) 
		return false
	return true
}

function esCPostal(e)
{
	if (e=="") return false;
	num=parseInt(e, 10)
	if (num!=''+e)
		return false;

	if ((num < 1001) || (num > 52080) || (e.length!=5))
		return false;

	return true;
}

function esCP(e) {
	return (esCPostal(e));
}

function radio_button_activado(obj){
	for (i=0;i<obj.length;i++)
		if (obj[i].checked) {
        	return true
	}
	return false
}

function select_seleccionado(obj) {
	//alert(obj.name + " -> " + obj.selectedIndex);
	return(obj.selectedIndex!=0);
}

function checkbox_seleccionado(obj) {
	//alert(obj.name + " -> " + obj.checked);
	return(obj.checked);
}

///////Funcion validadora de un campo
function v(campo,tipo,req,mens) {
	var obj,v
    if (error && !todos) return
    obj=buscar_objeto(campo)
	if (obj==null) return
	//obj.value=mi_trim(obj.value)
	if (!req && esVacio(obj.value)) return
	//alert(campo + " -> " + obj.name + " -> " + obj.type);
	switch(obj.type){
		case "select-one": 
							//alert('select')
							valido=eval(tipo+'(obj)')
							if (!valido && !error) obj.focus()
							break
		case "checkbox": 				 
							valido=eval(tipo+'(obj)')
							if (!valido && !error) obj.focus()
							break
		case "radiobutton": 				 
							valido=eval(tipo+'(obj)')
							objeto_compuesto=true
							if (!valido && !error) obj[0].focus()
							break
		case "radio": 				 
							valido=eval(tipo+'(obj)')
							objeto_compuesto=true
							if (!valido && !error) obj[0].focus()
							break
		case "hidden": 
							valido=eval(tipo+"('"+obj.value+"')")
					   		break
		default:
							v=obj_val(obj)
							v = v.toString();
							valido=eval(tipo+"('"+escape(v)+"')")
							if (!valido && !error) 
								foco_obtener(obj)
	}
	if (!valido) {
		error=true
		mensaje=mensaje+"\n"+mens
	}
}

function verror(campo,mens) {
    if (error && !todos) return
	obj=buscar_objeto(campo)
	error=true
	mensaje=mensaje+"\n"+mens
	foco_obtener(obj)
}

function vpass(campo1,campo2,mens){
	var obj1,obj2
	if (error && !todos) return
	obj1=buscar_objeto(campo1)
	obj2=buscar_objeto(campo2)
	
	if (obj1.value==obj2.value) return
	
	obj1.value=""
	obj2.value=""
	foco_obtener(obj1)
	error=true
	mensaje=mensaje+"\n"+mens	
}

function mi_trim(ss){
	var i,re
	var l=ss.length-1
	for (i=0;i<=l;i++){
		if (ss.charAt(i)!=" ") break
	}
	re=ss.substring(i,l+1)
	l=re.length-1
	for (i=l;i>0;i--){
		if (re.charAt(i)!=" ") break
	} 
	re=re.substring(0,i+1)
	return re
}

function valgunonovacio(){
	var v,i,args=valgunonovacio.arguments,mens=args[args.length-1]
	if (error && !todos) return
	for (i=0; i<args.length-1; i++){
		obj=buscar_objeto(args[i])

		if (obj.type=="checkbox") {
			if (obj.checked) return
		}
		else {
			v=obj_val(obj)
			if (esIndiferente(v)) return
		}
	}
	error=true
	mensaje=mensaje+"\n"+mens
}

function foco_obtener(obj){
	obj.focus()
}

function validar_fecha(dia,mes,ano,mensa)
{
	objdia=buscar_objeto(dia);
	objmes=buscar_objeto(mes);
	objano=buscar_objeto(ano);
	
	if((objano.value%4)==0){
		mes=Array(31,29,31,30,31,30,31,31,30,31,30,31);
	}else{
		mes=Array(31,28,31,30,31,30,31,31,30,31,30,31);
	}
	
	if(parseInt(objdia.value)>mes[objmes.value-1]){
		error=true;
	 	mensaje=mensa;
	}
		
}

function validar_secuencia_fechas(diai,mesi,anoi,diaf,mesf,anof,mensaj){
	validar_fecha(diai,mesi,anoi,'Introduzca una fecha inicial correcta');
	validar_fecha(diaf,mesf,anof,'Introduzca una fecha final correcta');
	
	objdiai=buscar_objeto(diai);
	objmesi=buscar_objeto(mesi);
	objanoi=buscar_objeto(anoi);
	objdiaf=buscar_objeto(diaf);
	objmesf=buscar_objeto(mesf);
	objanof=buscar_objeto(anof);
	
	ai=String(objanoi.value);
	mi=String(objmesi.value);
	di=String(objanoi.value);
	fi=ai+mi+di;
	af=String(objanof.value);
	mf=String(objmesf.value);
	df=String(objdiaf.value);
	ff=af+mf+df;
	if(fi>ff)
	{
		error=true;
		mensaje=mensaj;
	}
}


function comprobarEdad(dia,mes,ano,hoyd,hoym,hoya) {
	objdia=buscar_objeto(dia);
	objmes=buscar_objeto(mes);
	objano=buscar_objeto(ano);

	dia=objdia.options[objdia.selectedIndex].value;
	mes=objmes.options[objmes.selectedIndex].value;
	ano=objano.options[objano.selectedIndex].value;

	if(dia!='' & mes!='' & ano!='') {
		if(calcularEdad(dia,mes,ano,hoyd,hoym,hoya)<18) {
			mostrarTutor(1);
			//alert('Debes tener más de 18 años para poder registrarte');
			//return false;
		} else {
			mostrarTutor(0);
		}
	}
	return true;
}


function calcularEdad(dia,mes,ano,hoyd,hoym,hoya){
	var edad;
	edad = hoya-ano;
	if(hoym<mes) {
		edad--;
	} else if(hoym==mes) {
		if(hoyd<dia) edad--;
	}

	return(edad);
}


function solonumeros(evt){
	 var charCode = (evt.which) ? evt.which : event.keyCode;
	 if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	 return true;
}
function sololetras(evt){
	 var charCode = (evt.which) ? evt.which : event.keyCode;
	 if ((((charCode < 65 || charCode > 90) && charCode < 97) || charCode > 122) &&  charCode != 8)
		return false;
	 return true;
}

function cargaMatricula (modelos){ 
	if (modelos.value == 'new'){
		document.getElementById ('matricula_num').value = '';
		document.getElementById ('matricula_letra').value = '';
		document.getElementById ('matricula_num').disabled=false;
		document.getElementById ('matricula_letra').disabled=false;
	} else{
		document.getElementById ('matricula_num').value = '';
		document.getElementById ('matricula_letra').value = '';
		document.getElementById ('matricula_num').disabled=true;
		document.getElementById ('matricula_letra').disabled=true;
	}
}

function comprueba_ext(file){	
	ext = 'doc|pdf|bmp|tif|gif|jpg|jpeg|png';
	var pattern = new RegExp('.*\.' + ext + '');
	if(pattern.test(file.toLowerCase())){
		return true;
	} else {
		return false;
	}	
}
/*  FIN VALIDACIONES */



///////////////////////////////////////////////////////////////////
// AJAX
// Permite obtener el objeto para el manejo de las peticiones HTTP
function GetHTTPObject() { 
	var xmlhttp; 
	// para IE
	try { 
		xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); 
	} catch (e) { 
		try { 
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
		} catch (E) { 
			xmlhttp = false; 
		} 
	} 
	// para el resto de navegadores
 	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { 
		try { 
			xmlhttp = new XMLHttpRequest();
		} catch (e) { 
			xmlhttp = false; 
		} 
	} 
	return xmlhttp;
}
// objeto global para toda la aplicacion,
var http = GetHTTPObject(); 
// FIN AJAX 
////////////////////////////////////////////////////////////////////////

//***********************************//
//FUNCIONES DE LOS COMBOBOX         //
//***********************************//
//inicializa los combos de puntos de red
var combosinicializados = false;
var combosVehiculosInicializados = false;

function initCombosVehiculos (cargacombos) {
	if (combosVehiculosInicializados == false && cargacombos == '-2') {	
		document.getElementById('vehiculo_marca').disabled = false;
		document.getElementById('vehiculo_matricula').disabled = false;
		combosVehiculosInicializados = true;
	} else {
		combosVehiculosInicializados = false;
		document.getElementById('vehiculo_marca').selectedIndex = 0;
		document.getElementById('vehiculo_marca').disabled = true;
		document.getElementById('vehiculo_modelo').selectedIndex = 0;
		document.getElementById('vehiculo_modelo').disabled = true;
		document.getElementById('vehiculo_matricula').value = '';
		document.getElementById('vehiculo_matricula').disabled = true;		
	}
}

function initCombosPR (cargacombos){
	if (combosinicializados == false && cargacombos==true){
		limpiaCombo ('rmprovincia'); // tambien hace la carga inicial
	 	limpiaCombo ('rmlocalidad');
	 	limpiaCombo ('razon_social');
		combosinicializados = true;
	}
}

function crearCombo_provincia ()
{
	name = "rmprovincia";
	cssclass = "triple";
	disabled = false;
	return crearCombo (name,cssclass,disabled,cargar_combo_localidades);
}

function crearCombo_localidad ()
{
	name = "rmlocalidad";
	cssclass = "triple";
	disabled = true;
	return crearCombo (name,cssclass,disabled,cargar_combo_razon_social);
}

function crearCombo_razon_social ()
{
	name = "razon_social";
	cssclass = "triple";
	disabled = true;
	return crearCombo (name,cssclass,disabled,false);
}

function crearCombo_modelos ()
{
	name = "vehiculo_modelo";
	cssclass = "doble";
	disabled = true;
	return crearCombo (name,cssclass,disabled,false);
}

function crearCombo (name,cssclass,disabled,fevent){
	var combo = document.createElement('select');
	combo.setAttribute('id',name);
	combo.setAttribute('name',name);
	combo.className = cssclass;
	combo.disabled = disabled;
	if (fevent != false) addEvent (combo,'change',fevent);
	return combo;
}

function cargar_combo_localidades (comboProvincias)
{
	comboProvincias = document.getElementById('rmprovincia');
	provincia = comboProvincias.options[comboProvincias.selectedIndex].firstChild.nodeValue;
	name = "rmlocalidad";
	limpiaCombo ('rmlocalidad');
	combobox = document.getElementById(name);
	combobox.disabled = false;
	oldoption = combobox.firstChild;
	option = document.createElement('option');
	option.setAttribute('value','-1');
	option.appendChild(document.createTextNode(' '));
	combobox.replaceChild(option,oldoption);
	for(p in a_localidades) {
		if (p == provincia){
			for (i in a_localidades[p]){
				localidad = a_localidades[p][i];
				option = document.createElement('option');
				option.setAttribute('value',localidad);
				option.appendChild(document.createTextNode(localidad));
				combobox.appendChild(option);
			}
		}
	}
}
function cargar_combo_razon_social ()
{
	comboLocalidades = document.getElementById('rmlocalidad');
	localidad = comboLocalidades.options[comboLocalidades.selectedIndex].value;
	comboProvincias = document.getElementById('rmprovincia');
	provincia = comboProvincias.options[comboProvincias.selectedIndex].firstChild.nodeValue;	
	name = "razon_social";
	limpiaCombo (name);
	combobox = document.getElementById(name);
	combobox.disabled = false;
	oldoption = combobox.firstChild;
	option = document.createElement('option');
	option.setAttribute('value','-1');
	option.appendChild(document.createTextNode(' '));
	combobox.replaceChild(option,oldoption);
	for(loc in a_puntos_renault[provincia]) {
		
		if (loc==localidad){

			for (i in a_puntos_renault[provincia][loc]){
				puntorenault = a_puntos_renault[provincia][loc][i];
				option = document.createElement('option');
				option.setAttribute('value',i);
				option.appendChild(document.createTextNode(puntorenault));
				combobox.appendChild(option);
			}
		}
	}
}
function addEvent(obj, evType, fn){
	 if (obj.addEventListener){
	   	obj.addEventListener(evType, fn, false);
	   	return true;
	 } else if (obj.attachEvent){
	   	var r = obj.attachEvent("on"+evType, fn);
	   	return r;
	 } else {
	   	return false;
	 }
}
function limpiaCombo (idcombo)
{	
	//alert (combo_localidad_Vacio);
	var combo = document.getElementById(idcombo);
	var parentCombo = combo.parentNode;
	if(idcombo == "rmprovincia") {
		newcombo = crearCombo_provincia();
		option = document.createElement('option');
		option.setAttribute('value','-1');
		option.appendChild(document.createTextNode('SELECCIONA PROVINCIA'));
		newcombo.appendChild(option);
		// carga de las provincias
		for(pro in a_provincias) {
			option = document.createElement('option');
			option.setAttribute('value',pro);
			option.appendChild(document.createTextNode(pro));
			newcombo.appendChild(option);			
		}
	}	
	else if(idcombo == "rmlocalidad") {
		newcombo = crearCombo_localidad();
		option = document.createElement('option');
		option.setAttribute('value','-1');
		option.appendChild(document.createTextNode('SELECCIONA LOCALIDAD'));
		newcombo.appendChild(option);
	}
	else if (idcombo == "razon_social"){
		newcombo = crearCombo_razon_social();
		option = document.createElement('option');
		option.setAttribute('value','-1');
		option.appendChild(document.createTextNode('SELECCIONA TALLER RENAULT'));
		newcombo.appendChild(option);
	}

	parentCombo.replaceChild(newcombo,combo);
}
function cargar_combo_modelos (marca){
	
	name = "vehiculo_modelo";
	combobox = document.getElementById(name);
	combobox.disabled = false;
	marca = marca.options[marca.selectedIndex].firstChild.nodeValue;
	var parentCombo = combobox.parentNode;	
	newcombo = crearCombo_modelos();
	parentCombo.replaceChild(newcombo,combobox);
	option = document.createElement('option');
	option.setAttribute('value','-1');
		
	if( marca.toLowerCase() == "renault") {
		
		option.appendChild(document.createTextNode('Elige tu modelo Renault'));
		newcombo.appendChild(option);
		
		name = "vehiculo_modelo";
		combobox = document.getElementById(name);
		combobox.disabled = false;
		
		for (i in a_modelos_renault){
			modelo = a_modelos_renault[i];
			option = document.createElement('option');
			option.setAttribute('value',modelo);
			option.appendChild(document.createTextNode(modelo));
			combobox.appendChild(option);
		}
		
		document.getElementById('vehiculo_modelo').disabled = false;

		
	} else if ( marca.toLowerCase() == "dacia") {
		
		option.appendChild(document.createTextNode('Elige tu modelo Dacia'));
		newcombo.appendChild(option);
		
		name = "vehiculo_modelo";
		combobox = document.getElementById(name);
		combobox.disabled = false;
		
		for (i in a_modelos_dacia){
			modelo = a_modelos_dacia[i];
			option = document.createElement('option');
			option.setAttribute('value',modelo);
			option.appendChild(document.createTextNode(modelo));
			combobox.appendChild(option);
		}
		
		document.getElementById('vehiculo_modelo').disabled = false;
	
	} else {
		document.getElementById('vehiculo_modelo').selectedIndex = 0;
		document.getElementById('vehiculo_modelo').disabled = true;
	}
}

//oculta o muestra los selectores para IE6
function mostrar_select(a) {
	// solo para IE6
	var isIE6 = '\v'=='v';
	if (isIE6 == true){
		var  f_num = document.forms.length;
		for(var f_id=0; f_id<f_num; f_id++) {
			f_e_num = document.forms[f_id].length;
			for(var f_e=0; f_e<f_e_num; f_e++) {
				if(document.forms[f_id].elements[f_e].type=='select-one')
					document.forms[f_id].elements[f_e].style.display = a;
			}
		}
	}
}


