// start -> populate departure date from calendar  
// used in index.asp and checkrates.asp

/*   Dates accepted in mm/dd/yyyy format
     Return Code      
	 -------------------------------
	Date incremented by the days parameter	
*/
function addDays(myDate,days)
{	
	//convert string to date object
	var arrDateAdd = myDate.split("/"); 
	for(i=0;i<arrDateAdd.length;i++)
			arrDateAdd[i] = parseFloat(arrDateAdd[i]);

	var startMonth = arrDateAdd[0] -  parseInt(1);
	var obDate = new Date(arrDateAdd[2],startMonth,arrDateAdd[1])    

	//covert date object into string
	objDate  = new Date(obDate.getTime() + days*24*60*60*1000);

	var month = objDate.getMonth() +  parseInt(1);
	var day = objDate.getDate();

	if(month <= 9)
		month = "0" + month;
	
	if(day <= 9)
		day = "0" + day;

	//myDate = objDate.getMonth() + "/" + objDate.getDate() + "/" + objDate.getFullYear()
	myDate = month + "/" + day + "/" + objDate.getFullYear()
	return myDate;	
}

function getCurrentDate()
{
	var objDate  = new Date();
 	var mnth = objDate.getMonth() + parseInt(1);
	var currDate = mnth + "/" + objDate.getDate() + "/" + objDate.getFullYear()	
	return currDate;

}

function cal_addDays(myDate,days)
{
	return new Date(myDate.getTime() + days*24*60*60*1000);
}

function setDepartureDate(frm)
{
	//frm=document.ResLookup;
	
	var dt1 = frm.ArrivalDate.value;
	var dt2 = frm.DepartureDate.value;

	var date1 = new Date(dt1);
	
	dt2 = cal_addDays(date1,5);

	
	//alert(addDays(new Date(),10));

	var date2 = new Date(dt2.getYear(),dt2.getMonth(),dt2.getDate());
	var month = dt2.getMonth() + parseInt(1);

	if(month <= 9)
	month = "0" + month;

	var day = dt2.getDate();
	
	if(day <= 9)
	day = "0" + day;

	var year = dt2.getFullYear();

	var depDate = month+"/"+day+"/"+year;

	//for testing purposes
	if(dt2 != NaN)
	{
		//var status_text = "dt1= " + dt1 + " ### " + "dt2= " + depDate ;
		//window.status = status_text;
	}  

	if(dt1 == "")
	frm.DepartureDate.value = "";
	else
	frm.DepartureDate.value = depDate;
}

// end -> populate departure date from calendar

var rePattern = new RegExp("[;<>\.\{\}]");

function checkPattern(obj){	
 	if(rePattern.test(obj.value))	
	{
		alert("Please enter valid text.");
		obj.focus();
		return false;
	}
	return true;
}

var reEmail=/^[0-9a-zA-Z_\.-]+\@[0-9a-zA-Z_\.-]+\.[0-9a-zA-Z_\.-]+$/
function checkEmail(val){
 	if(!reEmail.test(val))
	{
		return false;
	}
	return true;
}

function checkEmail1(obj){
 	if(!reEmail.test(obj.value))
	{
		alert("Please enter a valid email address.");
		obj.focus();
		return false;
	}
	return true;
}

function isEmpty(val)
{   
	for(var i=0;i<val.length;i++)
	{
		if(val.charAt(i) != ' ')
		{
			return false;
		}
	}
	return true;
}


function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else { 
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}


/* Date format mm/dd/yyyy */
function checkDate(dt)
{
	var reg = new RegExp("[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}");
	if(reg.test(dt))
	{
		var datepart = dt.split("/");
		
		for(i=0;i<datepart.length;i++)
			datepart[i] = parseInt(parseFloat(datepart[i]));


		if(datepart[1] < 1 || datepart[1] > 31 || datepart[0] < 1 || datepart[0] > 12)
		{
			return false;
		}
		else if((datepart[0] == 4 || datepart[0] == 6 || datepart[0] == 9 || datepart[0] == 11) && datepart[1] == 31)
		{
			return false;	
		}
		else if(datepart[0] == 2)
		{
			if(datepart[1] > 29)
				return false;
			if(!LeapYear(datepart[2]) && datepart[1] == 29)
				return false;
		}
		return true;						
	}
	return false;			
}

/*   Dates accepted in mm/dd/yyyy format
     Return Code      
	 -------------------------------
	Differnce in days between the dates dt1 and dt2	
*/
function calDateDiff(dt1,dt2)
{	var differnce
	var jsnumofdays=0
	var arrEndDate = dt1.split("/");
	for(i=0;i<arrEndDate.length;i++)
		arrEndDate[i] = parseFloat(arrEndDate[i]);

	var endMonth = arrEndDate[0] -  parseInt(1);

	 arrEndDate = new Date(arrEndDate[2],endMonth,arrEndDate[1])
    
	var arrBegDate = dt2.split("/");
	for(i=0;i<arrBegDate.length;i++)
		arrBegDate[i] = parseFloat(arrBegDate[i]);

	var startMonth = arrBegDate[0] -  parseInt(1);


	arrBegDate = new Date(arrBegDate[2],startMonth,arrBegDate[1])
	
	difference = arrEndDate-arrBegDate	
	//calculate num of days between the arrival and departure dates
	jsnumofdays = Math.round(difference/1000/60/60/24)
	
	return 	jsnumofdays
}		
/*  
     Dates accepted in mm/dd/yyyy format
     Return Code          Condition
	 -------------------------------
	    -1              dt1 less than dt2
	     0              dt1 equal to dt2
  	     1     	        dt1 greater than dt2		        
*/

function compareDates(dt1,dt2)
{
	var datepart1 = dt1.split("/");
	var datepart2 = dt2.split("/");

			
	for(i=0;i<datepart1.length;i++)
	{
		datepart1[i] = parseInt(parseFloat(datepart1[i]));
		datepart2[i] = parseInt(parseFloat(datepart2[i]));		
	}	
	
	if(datepart1[2] > datepart2[2])
		return 1;
	else if(datepart1[2] < datepart2[2])	 
		return -1;
	else if(datepart2[2] == datepart1[2])	 	
	{
		if(datepart1[0] > datepart2[0])
			return 1;
		else if(datepart1[0] < datepart2[0])	
			return -1;
		else if(datepart1[0] == datepart2[0])					 
		{
			if(datepart1[1] > datepart2[1])
				return 1;
			else if(datepart1[1] < datepart2[1])	
				return -1;			
		}
	}
	return 0;	
}



function changeDateFormat(dt,from_format,to_format)
{
	var converted_date  = new Array(3);		
	var datepart        = dt.split("/");        
	var from_formatpart = from_format.split("/");
	var to_formatpart   = to_format.split("/");
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			if(to_formatpart[j] == from_formatpart[i])  	
			{
				converted_date[j] = datepart[i];  			
				break;
			}
		}
	}	
	return (converted_date[0]+"/"+converted_date[1]+"/"+converted_date[2]);	
}

function isNumeric(val){
	var reg = new RegExp("^[0-9]{1,}$");
	return reg.test(val);
}

function endsWith(str,list){
	var arr = list.split(",");	
	var len = str.length;
	var j;
	for(j=0;j<arr.length;j++){
		part_len = arr[j].length;
		if(str.lastIndexOf(arr[j]) + part_len == len){
			return true;
		}		
	}
	return false;
}

function validateEmail(email)
{
	if(email=="") return false;

	badstuff=";:/,'\"\\";

	for(i=0;i<badstuff.length;i++)
	{
		badcheck=badstuff.charAt(i);
		if(email.indexOf(badcheck,0)!=-1)
		return false;
	}//for

	posofAtsign=email.indexOf("@",1);
	if(posofAtsign==-1)
	return false;

	if(email.indexOf("@",posofAtsign+1) !=-1)
	return false;

	posofPeriod=email.indexOf(".",posofAtsign)
	if(posofPeriod==-1) return false;

	if(posofPeriod+2 > email.length)
	return false;

	return true;
}//validateEmail()

function isAlphaNumeric(val){
	//var vld_Alphanumeric = /^[a-zA-Z0-9. ]*$/
	var reg = new RegExp("^[a-zA-Z0-9. ]*$");
	return reg.test(val);
}

function isFloatNumeric(val){
	//var reg = new RegExp("^[0-9.]*$");
	var reg = new RegExp("/^([0-9]*(\.[0-9]*)?)?$/");
	return reg.test(val);
}

function format_number2(pnumber,decimals) 
{
  var strNumber = new String(pnumber);
  var arrParts = strNumber.split('.');
  var intWholePart = parseInt(arrParts[0],10);
  var strResult = '';
  if (isNaN(intWholePart))
    intWholePart = '0';
  if(arrParts.length > 1)
  {
    var decDecimalPart = new String(arrParts[1]);
    var i = 0;
    var intZeroCount = 0;
     while ( i < String(arrParts[1]).length )
     {
       if( parseInt(String(arrParts[1]).charAt(i),10) == 0 )
       {
         intZeroCount += 1;
         i += 1;
       }
       else
         break;
    }
    decDecimalPart = parseInt(decDecimalPart,10)/Math.pow(10,parseInt(decDecimalPart.length-decimals-1)); 
    Math.round(decDecimalPart); 
    decDecimalPart = parseInt(decDecimalPart)/10; 
    decDecimalPart = Math.round(decDecimalPart); 

    //If the number was rounded up from 9 to 10, and it was for 1 'decimal' 
    //then we need to add 1 to the 'intWholePart' and set the decDecimalPart to 0. 

    if(decDecimalPart==Math.pow(10, parseInt(decimals)))
    { 
      intWholePart+=1; 
      decDecimalPart="0"; 
    } 
    var stringOfZeros = new String('');
    i=0;
    if( decDecimalPart > 0 )
    {
      while( i < intZeroCount)
      {
        stringOfZeros += '0';
        i += 1;
      }
    }
    decDecimalPart = String(intWholePart) + "." + stringOfZeros + String(decDecimalPart); 
    var dot = decDecimalPart.indexOf('.');
    if(dot == -1)
    {
      decDecimalPart += '.'; 
      dot = decDecimalPart.indexOf('.'); 
    } 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  else
  {
    var dot; 
    var decDecimalPart = new String(intWholePart); 

    decDecimalPart += '.'; 
    dot = decDecimalPart.indexOf('.'); 
    var l=parseInt(dot)+parseInt(decimals); 
    while(decDecimalPart.length <= l) 
    {
      decDecimalPart += '0'; 
    }
    strResult = decDecimalPart;
  }
  return strResult;
}


function formatCurrency(num)
{
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
