// JavaScript Document




var form = "";
var submitted = false;
var error = false;
var error_message = "";
//^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$


function highlightMail(cat,checked)
{
	//	for (var i=0;i<categories[cat].length;i++)
		
	//		document.dataForm.mails.options[categories[cat][i]].selected;

 
	if (checked)
	{
		for (var i=0;i<categories[cat].length;i++)
			document.dataForm.elements['mails[]'].options[categories[cat][i]].selected = true;
		
	}
	else
	{
		if (!(document.dataForm.allCheckbox.checked))
		{
		for (var i=0;i<categories[cat].length;i++)
				document.dataForm.elements['mails[]'].options[categories[cat][i]].selected = false;
		}
	}
}

function getConfirm(action,where)
  {
  
  	switch (action)
  	{
			case 'deleteChanges' :
				message = "¿Está seguro de que quiere cancelar los cambios?";
				break;
			case 'deleteAll' :
				message = "¿Está seguro de que quiere borrar todos los elementos?";
				break;
			case 'deleteSingle' :
				message = "¿Está seguro de que quiere borrar este elemento?";
				break;
		
		}
   	
		if (confirm(message))
	 		location.href = where;
	 	else 
		 	return; 
  }	
  

function popUpWindow(URLStr, left, top, width, height)
{

  var popUpWin=0;
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }

  popUpWin = window.open(URLStr,'' ,'height='+height+',width='+width+',left=100,top=100,resizable=yes,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no, status=no');
}

function popUpWindowScroll(URLStr, left, top, width, height)
{

  var popUpWin=0;
  if(popUpWin)
  {
    if(!popUpWin.closed) popUpWin.close();
  }

  popUpWin = window.open(URLStr,'' ,'height='+height+',width='+width+',left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no, status=no');
}
  
	  
function checkEmail(address) 
{
  if (window.RegExp) {
    var notValid = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var valid = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
    var regnv = new RegExp(notValid);
    var regv = new RegExp(valid);
    if (!regnv.test(address) && regv.test(address))
      return true;
    return false;
	}
  else {
    if(indirizzo.indexOf("@") >= 0)
      return true;
    return false;
  	}
  };
	
function check_radio(field_name, message) {
  var isChecked = false;

  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var radio = form.elements[field_name];

    for (var i=0; i<radio.length; i++) {
      if (radio[i].checked == true) {
        isChecked = true;
        break;
      }
    }

    if (isChecked == false) {
      error_message = error_message + "* " + message + "\n";
      error = true;
    }
  }
}

function check_select(field_name, field_default, message) {
  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;

    if (field_value == field_default) {
      error_message = error_message + "* " + message + "\n";
      error = true;
    }
  }
}

function check_password(field_name_1, field_name_2, field_size, message_1, message_2) {
  if (form.elements[field_name_1] && (form.elements[field_name_1].type != "hidden")) {
    var password = form.elements[field_name_1].value;
    var confirmation = form.elements[field_name_2].value;

    if (password == '' || password.length < field_size) {
      error_message = error_message + "* " + message_1 + "\n";
      error = true;
    } else if (password != confirmation) {
      error_message = error_message + "* " + message_2 + "\n";
      error = true;
    }
  }
}

function check_password_new(field_name_1, field_name_2, field_name_3, field_size, message_1, message_2, message_3) {
  if (form.elements[field_name_1] && (form.elements[field_name_1].type != "hidden")) {
    var password_current = form.elements[field_name_1].value;
    var password_new = form.elements[field_name_2].value;
    var password_confirmation = form.elements[field_name_3].value;

    if (password_current == '' || password_current.length < field_size) {
      error_message = error_message + "* " + message_1 + "\n";
      error = true;
    } else if (password_new == '' || password_new.length < field_size) {
      error_message = error_message + "* " + message_2 + "\n";
      error = true;
    } else if (password_new != password_confirmation) {
      error_message = error_message + "* " + message_3 + "\n";
      error = true;
    }
  }
}
function check_input(field_name, field_size, message,message2) {


  if (form.elements[field_name] && (form.elements[field_name].type != "hidden")) {
    var field_value = form.elements[field_name].value;

    if (field_name == "r_email") 	
    {
      
        if (!checkEmail(field_value))
         {
          error_message = error_message + "* Atención: La dirección de correo introducida no es válida.\n";
          error = true;
        }
    }
    else 
		{
      if (field_value == '' ) {
      error_message = error_message + "* " + message + "\n";
      error = true;
    	}
    	else if (field_value.length < field_size)
    	{
			error_message = error_message + "* " + message2 + "\n";
      error = true;
			}
  }
}
}	

function checkHour(value)
{
	valid = /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?/;
	var regv = new RegExp(valid);

	if (!regv.test(value)) {
      error_message = error_message + "* HORARIO tiene que ser en el formato 00:00-23:59  \n";
      error = true;
 	}

}

function checkTel(value)
{
	valid = /^([0-9]{9})/;
	var regv = new RegExp(valid);

	if (!regv.test(value)) {

      error_message = error_message + "* Error en un numero telefonico ( 9 cifras obligatoriamente ). \n";
      error = true;
 	}

}

function checkcp(value)
{
	valid = /^([0-9]{5})/;
	var regv = new RegExp(valid);

	if (!regv.test(value)) {
      error_message = error_message + "* Error en un codigo postal ( 5 cifras obligatoriamente ). \n";
      error = true;
 	}

}
function checkForm(which)
{
	if (submitted == true) {
    alert("El formulario ya ha sido enviado. Pulse OK y espere unos instantes.");
    return false;
  }

  error = false;
  form = which;
  error_message = "Atención: El formulario no ha sido introducido correctamente :\n\n";

  for (i=0;i<which.length;i++) 
	{
		var tempobj=which.elements[i];
		
		switch (tempobj.type)
    {
      case 'checkbox': break;
      case 'radio': check_radio(tempobj.name, tempobj.name.substring(2).toUpperCase() + " es un dato obligatorio.");break;
      case 'password':   
      case 'file' :
      case 'textarea':
      case 'text':  
      
      	if (tempobj.name =="r_codigoPostal" ||  tempobj.name =="r_e_codigoPostal") checkcp(tempobj.value);
      	if (tempobj.name =="r_tel" || tempobj.name =="r_telefono" || tempobj.name =="r_e_tel") checkTel(tempobj.value);
       	if (tempobj.name =="horario" && tempobj.value != '') checkHour(tempobj.value);
      	if ((tempobj.name =="r_fecha" || tempobj.name=="r_fechaNacimiento") && tempobj.value != '') isDate(tempobj.value);
        else if (tempobj.name.substring(0,2)=="r_") check_input(tempobj.name, 2, tempobj.name.substring(2).toUpperCase() + " es un dato obligatorio.",tempobj.name.substring(2).toUpperCase() + " es demasiado corto.");
        break;
      
      case 'select-one': 
      			if (tempobj.name.substring(0,2)=="r_")
							check_select(tempobj.name, -1, tempobj.name.substring(2).toUpperCase() + " no ha sido elegido.");break;
      case 'select-multiple':break;
    
    }
    						

	}

  if (error == true) {
    alert(error_message);
   	return;
  } else {
    submitted = true;
    form.submit();
  
  }
    
}

var calendarWindow=false

function showCalendar(){
     if (typeof calendarWindow.document == "object") {
       calendarWindow.close()
    }
    calendarWindow = window.open("../calendar.php","Calendario", "width=300,height=190, left=100,top=100, scrollbars=no,menubars=no,statusbar=NO, status=NO, resizable=YES,location=NO")
} 

function getDate(day,month,year){
  
    eval ("opener.document.dataForm.r_fecha.value='" + day + "/" + month + "/" + year + "'")
    window.close()
} 


function ReturnKeyPressed(e,which)
{
var characterCode

if(e && e.which){ //if which property of event object is supported (NN4)
e = e
characterCode = e.which //character code is contained in NN4's which property
}
else{
e = event
characterCode = e.keyCode //character code is contained in IE's keyCode property
}

if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
checkForm(which,0); //submit the form
return false
}
else{
return true
}


}

var dtCh= "/";
var minYear=1980;
var maxYear=2100;

function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (c < "0" || c > "9") {
            return false;
        }
    }
    return true;
}

function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) {
            returnString += c;
        }
    }
    return returnString;
}

function daysInFebruary(year) {
    return year % 4 == 0 && (!(year % 100 == 0) || year % 400 == 0) ? 29 : 28;
}

function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31;
        if (i == 4 || i == 6 || i == 9 || i == 11) {
            this[i] = 30;
        }
        if (i == 2) {
            this[i] = 29;
        }
    }
    return this;
}

function isDate(dtStr) {

    if (typeof drStr == "undefined") {
        drStr = "";
    }
    var daysInMonth = DaysArray(12);
    var pos1 = dtStr.indexOf(dtCh);
    var pos2 = dtStr.indexOf(dtCh, pos1 + 1);
    var strDay = dtStr.substring(0, pos1);
    var strMonth = dtStr.substring(pos1 + 1, pos2);
    var strYear = dtStr.substring(pos2 + 1);
    strYr = strYear;
    if (strDay.charAt(0) == "0" && strDay.length > 1) {
        strDay = strDay.substring(1);
    }
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) {
        strMonth = strMonth.substring(1);
    }
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) {
            strYr = strYr.substring(1);
        }
    }
    month = parseInt(strMonth);
    day = parseInt(strDay);
    year = parseInt(strYr);
    if (pos1 == -1 || pos2 == -1) {
        error_message += "* La fecha resulta  incorrecta.(Formato : dd/mm/yyyy) \n";
        error = true;
        return;
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
       	error_message += "* La fecha resulta  incorrecta.(Formato : dd/mm/yyyy) \n";
         error = true;
          return;
    }
    if (strDay.length < 1 ||
        day < 1 ||
        day > 31 ||
        month == 2 && day > daysInFebruary(year) ||
        day > daysInMonth[month]) {
        error_message += "* La fecha resulta  incorrecta.(Formato : dd/mm/yyyy) \n";
         error = true;
          return;
    }
    if (strYear.length != 4 ||
        year == 0 || year < minYear || year > maxYear) {
        error_message += "* La fecha resulta  incorrecta.(Formato : dd/mm/yyyy) \n";
        error = true;
         return;
    }
    if (dtStr.indexOf(dtCh, pos2 + 1) != -1 ||
        isInteger(stripCharsInBag(dtStr, dtCh)) == false) {
        error_message += "* La fecha resulta  incorrecta.(Formato : dd/mm/yyyy) \n";
        error = true;
         return;
    }
   
}
