// JavaScript Document

//*****************
// Global section
//*****************
keystyped = '';
select_hasFocus = '';
id_key_timeout = null;

//***********************
// Generic DOM functions
//***********************

// Show exception message
function showMessage (message) {
	alert(message);
}

// Check if IE6 browser
function isIE6() {
  try {		
    return (navigator.userAgent.indexOf("MSIE 6")>=0);
  }
  catch (e) {
	showMessage(e.description);
  }   
}

// Add to favourites
function addFavourites() {
  try {		
    if (window.sidebar) 
      window.sidebar.addPanel('NuevasRutas.com','http://www.nuevasrutas.com/','') 
   else if ((document.all) && (!window.opera))
      window.external.AddFavorite('http://www.nuevasrutas.com/','NuevasRutas.com')	
   else
     showMessage ('No soportado por su navegador, pruebe a pulsar Control+D.');
  }
  catch (e) {
	showMessage(e.description);
  }	 	 
}

// Hide wait layer
function hideWait() {
  try {			
    if (!isIE6()) {
      if ((document.getElementById('art-contentLayout')) && (document.getElementById('art-contentLayout').style.visibility == 'hidden')) 
	    document.getElementById('art-contentLayout').style.visibility = 'visible';		
      if ((document.getElementById('art-separator')) && (document.getElementById('art-separator').style.visibility == 'hidden'))
	    document.getElementById('art-separator').style.visibility = 'visible';		
      if (document.getElementById('waitlayer')) {		 
	    for (i = 0; i <= 10; i++) {		  
	      window.setTimeout ("document.getElementById('waitlayer').style.opacity = '" + (1-(i/10)) + "'; document.getElementById('waitlayer').style.filter  = 'alpha(opacity=" + (100 - (i*10)) + ")';", (i*40));
		  if (i == 10)
		    window.setTimeout ("document.getElementById('waitlayer').style.visibility = 'hidden'; document.getElementById('waitlayer').style.filter  = 'alpha(opacity=90)'; document.getElementById('waitlayer').style.opacity = '.9';", (i*40));
	    }				       
	  }
	}
	else {		
	  if (document.getElementById('waitlayer'))
	    document.getElementById('waitlayer').style.visibility = 'hidden';	
      if ((document.getElementById('art-Sheet-cc')) && (document.getElementById('art-Sheet-cc').style.visibility == 'hidden')) 
	    document.getElementById('art-Sheet-cc').style.visibility = 'visible';			
      if ((document.getElementById('art-contentLayout')) && (document.getElementById('art-contentLayout').style.visibility == 'hidden')) 
	    document.getElementById('art-contentLayout').style.visibility = 'visible';		
      if ((document.getElementById('art-separator')) && (document.getElementById('art-separator').style.visibility == 'hidden'))
	    document.getElementById('art-separator').style.visibility = 'visible';		
	}
  }
  catch (e) {
	showMessage(e.description);
  }		
}

// Hide reservation layer
function hideReservation() {
  try {	
    document.getElementById('popup_reservation').style.visibility = 'hidden'; 
    document.getElementById('popup_reservation_shadow').style.visibility = 'hidden'; 
    document.getElementById('reservationlayer').style.visibility='hidden';
  }
  catch (e) {
	showMessage(e.description);
  }     
}

// Ajax loader
function loadXMLDoc(url, params) {
  try {	
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      xmlhttp.open("GET", url + '?' + params, false);
      xmlhttp.send(null);
      }
    else {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      xmlhttp.open("GET", url + '?' + params, false);
      // Do not send null for ActiveX
      xmlhttp.send();
    } 
  }
  catch (e) {
	showMessage(e.description);
  }	 	
}

//*******************
// Windows functions
//*******************

// Run inner scripts after AJAX update 
function runScripts(e) {
  try {	
    if (e.nodeType != 1) return;
 	  if (e.tagName.toLowerCase() == 'script') {	
   	    eval(e.text); //run the script
	  }
	  else {
  	    var n = e.firstChild;
	    while ( n ) {
		  if ( n.nodeType == 1 ) runScripts( n ); //if it's an element node, recurse
		  n = n.nextSibling;
	    }
     }
  }
  catch (e) {
	showMessage(e.description);
  }   	 
}

// Update reservation select
function updateReservationSelect(span, spanall, postalcode) {
  try {	
    if (postalcode != '') {
      var obj = document.getElementById(span);
	  var objall = document.getElementById(spanall);
      loadXMLDoc ('nrscripts/busca-agencias.php', 'pc=' + postalcode);
	  if (xmlhttp.responseText.indexOf ('<table') == 0) {
	    objall.innerHTML = xmlhttp.responseText;
		runScripts(document.getElementById('popup_reservation'));
	  }
	  else 		
	    obj.innerHTML = xmlhttp.responseText;	  
	}
  }
  catch (e) {
	showMessage(e.description);
  }   
}

// Get document height
function getDocHeight() {
  try {		
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight)
    );
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Get coordinates of an HTML element
function getCoords(element){
  try {		
    var coords = { x: 0, y: 0, width: element.offsetWidth, height:element.offsetHeight };
    while (element) {
      coords.x += element.offsetLeft;
      coords.y += element.offsetTop;
      element = element.offsetParent;
    }
    return coords;
  }
  catch (e) {
	showMessage(e.description);
  }	 	  
}

// Open viewHotel popUp
function openViewhotelPopup(id, clickObject) {
  try {	
    var obj= document.getElementById('popup_viewhotel');
	var objshadow= document.getElementById('popup_viewhotel_shadow');
	if ((obj) && ((obj.style.visibility == 'hidden') || (obj.style.visibility == ''))) {
      loadXMLDoc ('nrscripts/ver-hotel.php', 'hid=' + id);	  		
	  obj.innerHTML = xmlhttp.responseText;	
      clickObjectCoords = getCoords(document.getElementById(clickObject));	
      if (window.pageYOffset)
        scrollTop = window.pageYOffset;
      else
        scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;	    
	  if (clickObject.indexOf ('td_hotel_c_') != -1)
	     lcor = 100;
	  else if (clickObject.indexOf ('td_hotel_b_') != -1)
	     lcor = 200;	
	  else if (clickObject.indexOf ('td_hotel_a_') != -1)
	     lcor = 300;	 
	  if ((clickObjectCoords.y - scrollTop) > obj.clientHeight)	  
	     obj.style.top = (clickObjectCoords.y - obj.clientHeight - clickObjectCoords.height) + 'px';
	  else
	    obj.style.top  = (clickObjectCoords.y + clickObjectCoords.height) + 'px';		
      obj.style.left = (clickObjectCoords.x - lcor) + 'px';	  		
	  obj.style.width = "674px";	  
	  obj.style.visibility = 'visible';
	  obj.style.opacity = '0.0';
	  obj.style.filter = 'alpha(opacity=0)';
	  objshadow.style.width = "674px";
	  objshadow.style.height = obj.clientHeight + 'px';
	  objshadow.style.top =  (5 + parseInt(obj.style.top.replace  ('px', ''))) + 'px';
	  objshadow.style.left = (5 + parseInt(obj.style.left.replace ('px', ''))) + 'px';
	  objshadow.style.visibility = 'visible';	  
	  objshadow.style.opacity = '0.0';
	  objshadow.style.filter = 'alpha(opacity=0)';	 
      for (i = 0; i <= 10; i++) {		  
	    window.setTimeout ("document.getElementById('popup_viewhotel').style.opacity = '" + (i/10) + "'; document.getElementById('popup_viewhotel').style.filter  = 'alpha(opacity=" + (i*10) + ")';document.getElementById('popup_viewhotel_shadow').style.opacity = '" + (i/25) + "'; document.getElementById('popup_viewhotel_shadow').style.filter  = 'alpha(opacity=" + (i*4) + ")';", (i*50));
	  }
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		 
}

// Close viewHotel popUp
function closeViewhotelPopup() {
  try {	
    var obj= document.getElementById('popup_viewhotel');
	var objshadow= document.getElementById('popup_viewhotel_shadow');	
	if ((obj) && (obj.style.visibility == 'visible')) {
	  obj.innerHTML = '';
	  obj.style.visibility = 'hidden';
      objshadow.style.visibility = 'hidden';
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 	
}

// Open reservation popUp
function openReservationPopup(id, username, startdate, clickObject) {
  try {
	if (!isIE6())
      document.getElementById('reservationlayer').style.visibility = 'visible';
    var obj= document.getElementById('popup_reservation');
	var objshadow= document.getElementById('popup_reservation_shadow');
	if ((obj) && ((obj.style.visibility == 'hidden') || (obj.style.visibility == ''))) {
      loadXMLDoc ('nrscripts/reserva.php', 'cid=' + id + '&username=' + username + '&startdate=' + startdate);	  		
	  obj.innerHTML = xmlhttp.responseText;	
      clickObjectCoords = getCoords(clickObject);
      if (window.pageYOffset)
        scrollTop = window.pageYOffset;
      else
        scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;	
	  if ((clickObjectCoords.y - scrollTop - 20) > obj.clientHeight)	  
	     obj.style.top = (clickObjectCoords.y - obj.clientHeight) + 'px';
	  else
	    obj.style.top  = (clickObjectCoords.y) + 'px';		
	  sheetCoords = getCoords(document.getElementById('art-Sheet-cc'));
	  lcor = sheetCoords.x + 185;
      obj.style.left = lcor + 'px';	  		
	  obj.style.width = "530px";	  
	  obj.style.visibility = 'visible';
	  obj.style.opacity = '0.0';
	  obj.style.filter = 'alpha(opacity=0)';
	  objshadow.style.width = "530px";
	  objshadow.style.height = obj.clientHeight + 'px';
	  objshadow.style.top =  (5 + parseInt(obj.style.top.replace  ('px', ''))) + 'px';
	  objshadow.style.left = (5 + parseInt(obj.style.left.replace ('px', ''))) + 'px';
	  objshadow.style.visibility = 'visible';	  
	  objshadow.style.opacity = '0.0';
	  objshadow.style.filter = 'alpha(opacity=0)';
      for (i = 0; i <= 10; i++) {		  
	     window.setTimeout ("document.getElementById('popup_reservation').style.opacity = '" + (i/10) + "'; document.getElementById('popup_reservation').style.filter  = 'alpha(opacity=" + (i*10) + ")';document.getElementById('popup_reservation_shadow').style.opacity = '" + (i/25) + "'; document.getElementById('popup_reservation_shadow').style.filter  = 'alpha(opacity=" + (i*4) + ")';", (i*50));
	  }
	  runScripts(document.getElementById('popup_reservation'));
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		 
}

// Close reservation popUp
function closeReservationPopup() {
  try {	
    var obj= document.getElementById('popup_reservation');
	var objshadow= document.getElementById('popup_reservation_shadow');	
	if ((obj) && (obj.style.visibility == 'visible')) {
	  obj.innerHTML = '';
	  obj.style.visibility = 'hidden';
      objshadow.style.visibility = 'hidden';
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 	
}

// Check usernames availibility
function userExists(id, clickObject) {
  try {	
    if (document.getElementById('input_username').value.length >= 6) {
      loadXMLDoc ('nrscripts/existe-usuario.php', 'username=' + document.getElementById('input_username').value);	  	
	  if (xmlhttp.responseText == 'true') {
        document.getElementById('icon_result_username').src = 'images/icono-registro-nook.png';
        document.getElementById('icon_result_username').alt = 'El usuario está ocupado';
  	  }
	  else {
        document.getElementById('icon_result_username').src = 'images/icono-registro-ok.png';
        document.getElementById('icon_result_username').alt = 'El usuario está libre';	  
 	  }
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		 
}

//***************************
// Form functions
//***************************

// Validate chars
function validateChars(strobj) { 
  try {	
    var validpattern = /^[a-zA-Z0-9ñÑ -.,_:;´¨}çÇáéíóúÁÉÍÓÚäëïöüÄËÏÖÜ`àèìòùÀÈÌÒÙ^\[+*\]âêîôûÂÊÎÔÛºª!|"@·#$~%&¬/()=?¡¿']$/;  //'
	var replacements = false;
    var straux = strobj.value;		
	for (var i = 0; i < strobj.value.length; i++)
      if (validpattern.test(strobj.value.charAt (i)) == false) {
        straux = straux.replace (strobj.value.charAt (i), '');
		replacements = true;
	  }
	if (replacements)
	  strobj.value = straux;
  }
  catch (e) {
	showMessage(e.description);
  }	 		
} 

// Validate chars including carriage return
function validateCharsTextarea(strobj) { 
  try {	
    var validpattern = /^[a-zA-Z0-9ñÑ -.,_:;´¨}çÇáéíóúÁÉÍÓÚäëïöüÄËÏÖÜ`àèìòùÀÈÌÒÙ^\[+*\]âêîôûÂÊÎÔÛºª!|"@·#$~%&¬/()=?¡¿'\n]$/;  //'
	var replacements = false;
    var straux = strobj.value;		
	for (var i = 0; i < strobj.value.length; i++)
      if (validpattern.test(strobj.value.charAt (i)) == false) {
        straux = straux.replace (strobj.value.charAt (i), '');
		replacements = true;
	  }
	if (replacements)
	  strobj.value = straux;
  }
  catch (e) {
	showMessage(e.description);
  }	 		
} 

// Validate chars including carriage return
function validateCharsOnlydigits(strobj) { 
  try {	
    var validpattern = /^[a-zA-Z0-9@._-]$/;
	var replacements = false;
    var straux = strobj.value;		
	for (var i = 0; i < strobj.value.length; i++)
      if (validpattern.test(strobj.value.charAt (i)) == false) {
        straux = straux.replace (strobj.value.charAt (i), '');
		replacements = true;
	  }
	if (replacements)
	  strobj.value = straux;
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Validate email
function validateEmail(id) { 
  try {		
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/; 
    return emailPattern.test(id); 
  }
  catch (e) {
	showMessage(e.description);
  }	 		
} 

// Checks if an url seems valid
function checkUrl(url){
  try {	
    var x = url;
    var filter  = /^([a-zA-Z0-9_\.\-\/\:])+$/;
    if ((filter.test (x)) && (url.toUpperCase().indexOf('HTTP://') == 0) && (url.indexOf('.') > 0))
      return true;
    else
      return false;
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Count selected items in a multiple select
function countSelected(myselect) {
  try {	
    var count = 0;
    if (myselect)	
      for (var i = 0; i < myselect.length; i++) {	  
        if (myselect.options[i].selected == true)
		  count++;
      }
	return count;
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Select some id at select
function selectSelectId(myselect, id, forcetrue) {
  try {	
    if (myselect)	
      for (var i = 0; i < myselect.length; i++) {	  
	    if (myselect.options[i].value == id) {
		  if (forcetrue)
		    myselect.options[i].selected = true;			
		  else {
			if (myselect.options[i].selected == true)
		      myselect.options[i].selected = false;
		    else
		      myselect.options[i].selected = true;	
		  }
		}
      }
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Clear all selections
function clearSelection(myselect, borrar) {
  try {	
    if (myselect) {
      for (var i = 0; i < myselect.length; i++)
	    myselect.options[i].selected = false;
	  if (borrar == null)
	    myselect.selectedIndex = 0;
	  else
	    myselect.selectedIndex = -1;
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Search a string in a select to simulate a suggest mechanism
function searchSel(key) {
  try {	
    if (select_hasFocus != '') {	
      if (id_key_timeout != null)
	  	window.clearTimeout(id_key_timeout);
      id_key_timeout = window.setTimeout('keystyped=\'\';', 2000);
      if (key > 32)
        keystyped = keystyped + deleteAccents (String.fromCharCode (key).toLowerCase());
      var myselect = document.getElementById(select_hasFocus);	
      if ((myselect.type=='select-one') && (keystyped.length >= 2))
        for(var i = 0; i < myselect.length; i++) {	  
          var straux = deleteAccents (myselect.options [i].text.toLowerCase());
          if (straux.indexOf(keystyped) >= 0)
            myselect.options [i].selected = true;
        }	
	  if (key == 13) {
	    keysaux = keystyped;
        var myselect = document.getElementById(select_hasFocus);
	    if ((myselect.type=='select-one') && (keysaux.length >= 2)) {
          for(var i = 0; i < myselect.length; i++) {	  
            var straux = deleteAccents (myselect.options [i].text.toLowerCase());
            if (straux.indexOf(keysaux) >= 0) {
              myselect.options [i].selected = true;
              keystyped = '';
	          keystypedaux = '';			
		      if (myselect.onchange) {
			    var func = "document.getElementById('"+select_hasFocus+"').onchange()";
			    setTimeout(func, 200);			  
		      }			
		    }
		  }
	    }	  
	  }	  
    }
    else {
      keystyped = '';
	  keystypedaux = '';
    }
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Delete all accents in a UTF8 string
function deleteAccents(str) {
  try {	
    var straux = str;
    straux = straux.replace(/\u00e1/g,'a');
    straux = straux.replace(/\u00e9/g,'e');
    straux = straux.replace(/\u00ed/g,'i');
    straux = straux.replace(/\u00f3/g,'o');
    straux = straux.replace(/\u00fa/g,'u');  
    srtaux = straux.replace(/\u00c1/g,'A');
    straux = straux.replace(/\u00c9/g,'E');
    straux = straux.replace(/\u00cd/g,'I');
    straux = straux.replace(/\u00d3/g,'O');
    straux = straux.replace(/\u00da/g,'U');    
    straux = straux.replace(/\u00fc/g,'u');
    straux = straux.replace(/\u00dc/g,'U'); 
    straux = straux.replace(/\u00e0/g,'n');
    straux = straux.replace(/\u00f1/g,'n');  
    straux = straux.replace(/\u00d1/g,'N'); 
    straux = straux.replace(/\u00c0/g,'N');   
    return straux;
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Highlight error fields array
function highlightErrors(errors) {
  try {	
    var focused = false;
    for (i = 0; i < errors.length; i++) {
      errors [i].style.border = 'red 2px solid';
	  if (!focused) {
	    errors [i].focus();
	    focused = true;	  
	  }
    }
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Unhighlight error fields array
function unhighlightErrors(noerrors) {
  try {	
    for (i = 0; i < noerrors.length; i++) {
      if ((noerrors[i]) && ((noerrors [i].style.border == 'red 2px solid') || (noerrors [i].style.border == '2px solid red') || (noerrors [i].style.border == '2px solid #ff0000'))) {		
        noerrors [i].style.border = '#0C3 2px solid'; 
	  }
    }
  }
  catch (e) {
	showMessage(e.description);
  }	 		
}

// Validate contact form
function validateLoginForm(form) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
    noerrors.push(document.getElementById('edit-name'));  
	noerrors.push(document.getElementById('edit-pass'));  
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if ((document.getElementById('edit-name').value == '') || (document.getElementById('edit-name').value.length < 6))
	  errors.push(document.getElementById('edit-name'));  
	if ((document.getElementById('edit-pass').value == '')  || (document.getElementById('edit-pass').value.length < 6))
	  errors.push(document.getElementById('edit-pass'));  	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0)
	  form.submit();	
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Validate course search form
function validateSearchForm(form) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
    noerrors.push(document.getElementById('input_max_prize'));  
	noerrors.push(document.getElementById('input_startdate'));  
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if (isNaN (document.getElementById('input_max_prize').value))   
	  errors.push(document.getElementById('input_max_prize'));  
	formdate = document.getElementById('input_startdate').value;
	day = formdate.substr(0, 2);
	month = formdate.substr(3, 2);
	year = formdate.substr(6, 4);
	try { var userdate = new Date(year, month, day);} 
	catch (e) {}
	if ((formdate == '') || (formdate=='dd/mm/aaaa') || (typeof(userdate) == 'undefined') || (isNaN (userdate)) || (userdate.toString().indexOf(' 1899') != -1) )
	  errors.push(document.getElementById('input_startdate'));
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0)
	  form.submit();	
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Validate contact form
function validateContactForm(form) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
    noerrors.push(document.getElementById('input_name'));  
	noerrors.push(document.getElementById('input_phone'));  
	noerrors.push(document.getElementById('input_email'));
	noerrors.push(document.getElementById('input_text'));
	noerrors.push(document.getElementById('security_code'));  	
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if (document.getElementById('input_name').value == '')   
	  errors.push(document.getElementById('input_name'));  
	if (document.getElementById('input_phone').value == '')   
	  errors.push(document.getElementById('input_phone'));  	  
	if ((document.getElementById('input_email').value == '') || (!(validateEmail(document.getElementById('input_email').value))) )
	  errors.push(document.getElementById('input_email'));  
	if (document.getElementById('input_text').value == '')   
	  errors.push(document.getElementById('input_text'));  	  
	if ((document.getElementById('input_captcha').value == '') || (document.getElementById('input_captcha').value.length != 4))
	  errors.push(document.getElementById('input_captcha')); 	 	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0)
	  form.submit();	
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Validate register form
function validateRegisterForm(form) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
    noerrors.push(document.getElementById('input_username'));  
	noerrors.push(document.getElementById('input_password'));
	noerrors.push(document.getElementById('input_repeat_password'));		
	noerrors.push(document.getElementById('input_email'));
	noerrors.push(document.getElementById('input_repeat_email'));
	noerrors.push(document.getElementById('input_agency'));
	noerrors.push(document.getElementById('input_dni'));
	noerrors.push(document.getElementById('input_address'));
	noerrors.push(document.getElementById('td_select_city'));
	noerrors.push(document.getElementById('input_city'));
	noerrors.push(document.getElementById('input_cp'));
	noerrors.push(document.getElementById('td_select_country_reg'));
	noerrors.push(document.getElementById('input_phone'));
    noerrors.push(document.getElementById('input_web'));			
	noerrors.push(document.getElementById('input_captcha'));
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if ((document.getElementById('input_username').value == '') || (document.getElementById('input_username').value.length < 6))
	  errors.push(document.getElementById('input_username'));
	if ((document.getElementById('input_password').value == '') || (document.getElementById('input_password').value.length < 6))
	  errors.push(document.getElementById('input_password'));	  
	if ((document.getElementById('input_repeat_password').value == '') || (document.getElementById('input_repeat_password').value.length < 6) || (document.getElementById('input_repeat_password').value != document.getElementById('input_password').value))
	  errors.push(document.getElementById('input_repeat_password'));	  
	if ((document.getElementById('input_email').value == '') || (!(validateEmail(document.getElementById('input_email').value))) )
	  errors.push(document.getElementById('input_email'));
	if ((document.getElementById('input_repeat_email').value == '') || (!(validateEmail(document.getElementById('input_repeat_email').value))) || (document.getElementById('input_repeat_email').value != document.getElementById('input_email').value) )
	  errors.push(document.getElementById('input_repeat_email'));  	  
	if ((document.getElementById('input_agency').value == '') || (document.getElementById('input_agency').value.length < 3))
	  errors.push(document.getElementById('input_agency')); 
	if ((document.getElementById('input_dni').value == '') || (document.getElementById('input_dni').value.length < 6))
	  errors.push(document.getElementById('input_dni'));
	if ((document.getElementById('input_address').value == '') || (document.getElementById('input_address').value.length < 3))
	  errors.push(document.getElementById('input_address'));  	  
	if ((document.getElementById('select_city').options[form.select_city.selectedIndex].value == '-1') && (document.getElementById('input_city').value == ''))
	  errors.push(document.getElementById('td_select_city'));	  		
	if ((document.getElementById('select_city').options[form.select_city.selectedIndex].value.toLowerCase() == 'otra') && (document.getElementById('input_city').value == ''))
	  errors.push(document.getElementById('input_city'));
	if ((document.getElementById('input_cp').value == '') || (document.getElementById('input_cp').value.length < 3))
	  errors.push(document.getElementById('input_cp')); 
	if (document.getElementById('select_country_reg').options[document.getElementById('select_country_reg').selectedIndex].value == '-1')
	  errors.push(document.getElementById('td_select_country_reg'));
	if ((document.getElementById('input_phone').value == '') || (document.getElementById('input_phone').value.length < 6))
	  errors.push(document.getElementById('input_phone'));
    if ((!checkUrl (document.getElementById('input_web').value)) && (document.getElementById('input_web').value != ''))
	  errors.push(document.getElementById('input_web'));  
	if ((document.getElementById('input_captcha').value == '') || (document.getElementById('input_captcha').value.length != 4))
	  errors.push(document.getElementById('input_captcha'));	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0)
	  form.submit();		  
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Validate get password form
function validateGetPasswordForm(form) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
	noerrors.push(document.getElementById('input_email'));
	noerrors.push(document.getElementById('input_captcha'));
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if ((document.getElementById('input_email').value == '') || (!(validateEmail(document.getElementById('input_email').value))) )
	  errors.push(document.getElementById('input_email'));
	if ((document.getElementById('input_captcha').value == '') || (document.getElementById('input_captcha').value.length != 4))
	  errors.push(document.getElementById('input_captcha'));	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0)
	  form.submit();		  
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

// Validate reservation form
function validateReservationForm(cid, agency_id, startdate) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
	noerrors.push(document.getElementById('input_reservation_startdate'));
	noerrors.push(document.getElementById('input_reservation_num_passengers'));
	unhighlightErrors(noerrors);	
	// Highlight errors	  
	if ((document.getElementById('input_reservation_num_passengers').value == '') || (isNaN (document.getElementById('input_reservation_num_passengers').value)))
	  errors.push(document.getElementById('input_reservation_num_passengers'));
	if (document.getElementById('input_reservation_startdate')) {  
	  formdate = document.getElementById('input_reservation_startdate').value;
	  day = formdate.substr(0, 2);
	  month = formdate.substr(3, 2);
	  year = formdate.substr(6, 4);
	  try { var userdate = new Date(year, month, day);} 
	  catch (e) {}
	  if ((formdate == '') || (formdate=='dd/mm/aaaa') || (typeof(userdate) == 'undefined') || (isNaN (userdate)) || (userdate.toString().indexOf(' 1899') != -1) )
	    errors.push(document.getElementById('input_reservation_startdate'));
	}  	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0) {
      var obj = document.getElementById('popup_reservation');
	  var objshadow = document.getElementById('popup_reservation_shadow');
	  var oheight = obj.clientHeight;
	  if (obj) {
		if (startdate == '')
		  startdate = document.getElementById('input_reservation_startdate').value;
        loadXMLDoc ('nrscripts/post-reserva.php', 'cid=' + cid + '&agency_id=' + agency_id + '&agent=' + document.getElementById('input_reservation_agent').value + '&startdate=' + startdate + '&numpassengers=' + document.getElementById('input_reservation_num_passengers').value + '&passengers=' + document.getElementById('textarea_reservation_passengers').value.replace(/\n/g,'<br>') + '&remarks=' + document.getElementById('textarea_reservation_remarks').value.replace(/\n/g,'<br>'));				   
	    obj.innerHTML = xmlhttp.responseText;
		objshadow.style.width = "530px";
	    objshadow.style.height = obj.clientHeight + 'px';
		runScripts (document.getElementById('popup_reservation'));
	  }
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}

function validateReservationFinalcustomerForm(cid, startdate) {
  try {	
    var errors = new Array();
	var noerrors = new Array();
	// Set default style	
	noerrors.push(document.getElementById('input_reservation_postalcode'));
	noerrors.push(document.getElementById('td_select_reservation_agency'));
	noerrors.push(document.getElementById('input_reservation_customer'));	
	noerrors.push(document.getElementById('input_reservation_phone'));	
	noerrors.push(document.getElementById('input_reservation_email'));		
	noerrors.push(document.getElementById('input_reservation_num_passengers'));	
	noerrors.push(document.getElementById('input_reservation_startdate'));
	unhighlightErrors(noerrors);	
	// Highlight errors	
	if (document.getElementById('input_reservation_postalcode').value == '')
	  errors.push(document.getElementById('input_reservation_postalcode'));
	if ((document.getElementById('select_reservation_agency').length == 0) || (document.getElementById('select_reservation_agency').options [document.getElementById('select_reservation_agency').selectedIndex].value == -1))
	  errors.push(document.getElementById('td_select_reservation_agency'));	  
	if (document.getElementById('input_reservation_customer').value == '')
	  errors.push(document.getElementById('input_reservation_customer'));
	if (document.getElementById('input_reservation_phone').value == '')
	  errors.push(document.getElementById('input_reservation_phone'));	  	  
	if ( (document.getElementById('input_reservation_email').value == '') || (!(validateEmail(document.getElementById('input_reservation_email').value))) )
	  errors.push(document.getElementById('input_reservation_email'));	  	  	  	  	
	if ((document.getElementById('input_reservation_num_passengers').value == '') || (isNaN (document.getElementById('input_reservation_num_passengers').value)))
	  errors.push(document.getElementById('input_reservation_num_passengers'));
	if (document.getElementById('input_reservation_startdate')) {  
	  formdate = document.getElementById('input_reservation_startdate').value;
	  day = formdate.substr(0, 2);
	  month = formdate.substr(3, 2);
	  year = formdate.substr(6, 4);
	  try { var userdate = new Date(year, month, day);} 
	  catch (e) {}
	  if ((formdate == '') || (formdate=='dd/mm/aaaa') || (typeof(userdate) == 'undefined') || (isNaN (userdate)) || (userdate.toString().indexOf(' 1899') != -1) )
	    errors.push(document.getElementById('input_reservation_startdate'));
	}  	  
	highlightErrors(errors);
	// Send form if valid
    if (errors.length == 0) {
      var obj = document.getElementById('popup_reservation');
	  var objshadow = document.getElementById('popup_reservation_shadow');
	  var oheight = obj.clientHeight;
	  if (obj) {
		if (startdate == '')
		  startdate = document.getElementById('input_reservation_startdate').value;
        loadXMLDoc ('nrscripts/post-reserva-clientefinal.php', 'cid=' + cid + '&agency_id=' + document.getElementById('select_reservation_agency').options [document.getElementById('select_reservation_agency').selectedIndex].value + '&customer=' + document.getElementById('input_reservation_customer').value + '&phone=' + document.getElementById('input_reservation_phone').value + '&email=' + document.getElementById('input_reservation_email').value + '&startdate=' + startdate + '&numpassengers=' + document.getElementById('input_reservation_num_passengers').value + '&remarks=' + document.getElementById('textarea_reservation_remarks').value.replace(/\n/g,'<br>'));				   
	    obj.innerHTML = xmlhttp.responseText;
		objshadow.style.width = "530px";
	    objshadow.style.height = obj.clientHeight + 'px';
		runScripts (document.getElementById('popup_reservation'));
	  }
	}
  }
  catch (e) {
	showMessage(e.description);
  }	 		  
}
