// ----------------------------------------------------------------------
// Javascript form validation routines.
// Author: Stephen Poley
// http://www.xs4all.nl/~sbpoley/webmatters/formval.html
// ----------------------------------------------------------------------


	function check()
	{
		var currdate;	
		d = new Date()

		var curr_date = d.getDate();

		var curr_month = d.getMonth();

		var curr_year = d.getFullYear();
		

		//currdate = (curr_date + "/" + curr_month + "/" + curr_year);

		if (document.Form.D4.value=="")
			{
				alert('Please select the departure date');
				document.Form.Date1.focus();
				return (false);
			}
		

		var  D4array=document.Form.D4.value.split("/");
		var strVal;

		strVal = D4array[1] + "/" + D4array[0]  + "/" + D4array[2] 
		
		//alert(strVal);
	
		if (CheckDate(strVal) == false)
			{
				alert('Departure date should be greater than current date');
				document.Form.Date1.focus();
				return (false);
			}	


		if (document.Form.Destination.value == "-1")
			{
				alert('Please select a destination');
				document.Form.Destination.focus();
				return (false);
			}

		if (document.Form.DepAirport.value=="-1")
			{
				alert('Please select the departure airport');
				document.Form.DepAirport.focus();
				return (false);
			}

					
		if (document.Form.Duration.value == "")
			{
				alert('Please enter No. of Nights in Resort');
				document.Form.Duration.focus();
				return (false);
			}

		//-------------------------------------------------------
			
                             if (document.Form.Adults.value == "")
			{
				alert('How many adults will be travelling?');
				document.Form.Adults.focus();
				return (false);
			}

                             if (document.Form.Board.value == "-1")
			{
				alert('Please enter your preferred meal plan');
				document.Form.Board.focus();
				return (false);
			}

                             if (document.Form.Budget.value == "-1")
			{
				alert('Please enter your maximum budget per person');
				document.Form.Budget.focus();
				return (false);
			}

                       if (document.Form.Name.value == "")
			{
				alert('Please enter your full name');
				document.Form.Name.focus();
				return (false);
			}
		
			if (document.Form.Email.value=="")
			  {alert ("Please enter your email address.");
			  document.Form.Email.focus();
			  return(false);
			  }
			else{
			if (document.Form.Email.value.indexOf('@')==-1)
			   {alert("Invalid email address format.");
			   document.Form.Email.focus();
			   return(false);
			   }
			if (document.Form.Email.value.indexOf(',')>=0)
			  {alert ("Invalid email address format.");
			   document.Form.Email.focus();
			   return(false);
			   }
			 }
			 
			fld_length=spaceStripper(document.Form.Email.value," ","");	
			if (fld_length.length==0)
			{
				alert("Please enter your email address.");
				document.Form.Email.value = "";
				document.Form.Email.focus();
				return false;
			}

			//---put the email validation

		if (document.Form.Phone.value == "")
			{
				alert('Please enter a daytime telephone no');
				document.Form.Phone.focus();
				return (false);
			}


	}


function gfb_IsNumber1(ctrlName)
{	
	var i;
	var ctrlText;
	var errMessage;
	ctrlText=ctrlName;
	var val=ctrlText.value;
	errMessage="";
    var val_Length=ctrlText.value.length;
       
		for(i=0;i<val_Length;i++)
		{
		  str=val.charCodeAt(i);
            if((str<48 || str>57)) 		  
		   
		  {	  
			errMessage="Only Numbers Are Allowed.\n No Special Characters, Blank Spaces are Allowed";
			
		  }
		  
		}
	if (errMessage !="")
	{
		alert(errMessage);
		ctrlText.focus();
		return false;
	}
    else
    {
		return true;
    }
}


function spaceStripper(incomingText,str1,str2)
{
	workString=incomingText;
	while (workString.indexOf(str1)!=-1)
	{
		workString=workString.substring(0,workString.indexOf(str1))+str2+workString.substring(workString.indexOf(str1)+str1.length,workString.length);
	}
	return workString;
}

//------------------------------------------


var nbsp = 160;		// non-breaking space char
var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

// --------------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// --------------------------------------------

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}


// --------------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// --------------------------------------------

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(valfield)
{
  // save valfield in global variable so value retained when routine exits
  global_valfield = valfield;
  setTimeout( 'setFocusDelayed()', 100 );
}


// --------------------------------------------
//                  msg
// Display warn/error message in HTML element.
// commonCheck routine must have previously been called
// --------------------------------------------

function msg(fld,     // id of element to display message in
             msgtype, // class to give element ("warn" or "error")
             message) // string to display
{
  // setting an empty string can give problems if later set to a 
  // non-empty string, so ensure a space present. (For Mozilla and Opera one could 
  // simply use a space, but IE demands something more, like a non-breaking space.)
  var dispmessage;
  if (emptyString.test(message)) 
    dispmessage = String.fromCharCode(nbsp);    
  else  
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;  
  
  elem.className = msgtype;   // set the CSS class to adjust appearance of message
}

// --------------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed), 
//         false (validation failed) or 
//         proceed (don't know yet)
// --------------------------------------------

var proceed = 2;  

function commonCheck    (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  if (!document.getElementById) 
    return true;  // not available on this browser - leave validation to the server
  var elem = document.getElementById(infofield);
  if (!elem.firstChild) return true;  // not available on this browser 
  if (elem.firstChild.nodeType != node_text) return true;  // infofield is wrong type of node  

  if (emptyString.test(valfield.value)) {
    if (required) {
      msg (infofield, "error", "???");  
      setfocus(valfield);
      return false;
    }
    else {
      msg (infofield, "warn", "");   // OK
      return true;  
    }
  }
  return proceed;
}


// --------------------------------------------
//            validateName
// Validate if something has been entered
// Returns true if so 
// --------------------------------------------

function validateName(valfield,   // element to be validated
                         infofield ) // id of element to receive info/error msg
{
  var stat = commonCheck (valfield, infofield, true);
  if (stat != proceed) return stat;

  msg (infofield, "warn", "");  
  return true;
}

// --------------------------------------------
//               validateEmail
// Validate if e-mail address
// Returns true if so (and also if could not be executed because of old browser)
// --------------------------------------------

function validateEmail  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
  if (!email.test(tfld)) {
    msg (infofield, "error", "Not a valid e-mail address");
    setfocus(valfield);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/  ;
  if (!email2.test(tfld)) 
    msg (infofield, "warn", "Unusual e-mail address eh?");
  else
    msg (infofield, "warn", "");
  return true;
}


// --------------------------------------------
//            validatePhone
// Validate telephone number
// Returns true if so (and also if could not be executed because of old browser)
// Permits spaces, hyphens, brackets and leading +
// --------------------------------------------

function validatePhone  (valfield,   // element to be validated
                         infofield,  // id of element to receive info/error msg
                         required)   // true if required
{
  var stat = commonCheck (valfield, infofield, required);
  if (stat != proceed) return stat;

  var tfld = trim(valfield.value);  // value of field with whitespace trimmed off
  var phone = /^\+?[0-9 ()-]+[0-9]$/  ;
  if (!phone.test(tfld)) {
    msg (infofield, "error", "Not a valid telephone number");
    setfocus(valfield);
    return false;
  }

  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
    if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<6) {
    msg (infofield, "error", "ERROR: " + numdigits + " digits - too short");
    setfocus(valfield);
    return false;
  }

  if (numdigits>14)
    msg (infofield, "warn", numdigits + " digits - check if correct");
  else { 
    if (numdigits<10)
      msg (infofield, "warn", "Only " + numdigits + " digits? ");
    else
      msg (infofield, "warn", "");
  }
  return true;
}

