/** * Copyright (c) Informa Healthcare, 2008. All rights reserved.
 * Unauthorized reproduction and/or distribution are strictly prohibited. 
 *
 * File: dateValidation.js
 * Created: 02/01/2009
 * @author: informa
 * @version: 5.0, 24/03/2009
 * 
 * **/

function checkDate(day, month, year) {
	
   try{
	var myDayStr = parseInt(day);
	var myMonthStr = parseInt(month);
	var myYearStr = parseInt(year);
	}catch(exception){
	alert("Please Enter Valid Date");
		return false;
	}
	var myMonth = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
	var myDateStr = myDayStr + " " + myMonth[myMonthStr] + " " + myYearStr;
	
	/* Using form values, create a new date object
     using the setFullYear function */
	var myDate = new Date(myYearStr, myMonthStr, myDayStr);
	//myDate.setFullYear(myYearStr, myMonthStr, myDayStr);
	if (myYearStr === 0 || myMonthStr === -1 || myDayStr === 0) {
		alert("Please Enter Valid Date");
		return false;
	}
	if (myDate.getMonth() != myMonthStr) {
		alert("Please Enter Valid Date");
		return false;
	} else {
		return true;
	}
}
function checkDate1(day,month,year) {
	alert("inside the live method");
  var myDayStr = day;
  var myMonthStr = month;
  var myYearStr = year;
  var myMonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
  var myDateStr = myDayStr + ' ' + myMonth[myMonthStr] + ' ' + myYearStr;

  /* Using form values, create a new date object
     using the setFullYear function */

  var myDate = new Date();
  myDate.setFullYear( myYearStr, myMonthStr, myDayStr );

  if ( myDate.getMonth() != myMonthStr ) {
       alert( 'Please Enter Valid Date' );
       return false;
  } else {
      return true;
  }
}

function checkdate(objName) {
	
	var datefield = objName;
	if (chkdate(objName) === false) {
		datefield.select();
		alert("Given date is invalid.  Please try again.");
		datefield.focus();
		return false;
	} else {
		return true;
	}
}
function chkdate(objName) {
var strDatestyle = "US"; //United States date style
	//var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-", " ", "/", ".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "1";
	strMonthArray[1] = "2";
	strMonthArray[2] = "3";
	strMonthArray[3] = "4";
	strMonthArray[4] = "5";
	strMonthArray[5] = "6";
	strMonthArray[6] = "7";
	strMonthArray[7] = "8";
	strMonthArray[8] = "9";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = datefield.value;
	if (strDate.length < 1) {
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound === false) {
		if (strDate.length > 5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
	}
	if (strYear.length == 2) {
		strYear = "20" + strYear;
	}
// US style
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0; i < 12; i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i + 1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth > 12 || intMonth < 1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		if (LeapYear(intYear) === true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		} else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	if (strDatestyle == "US") {
		datefield.value = strMonthArray[intMonth - 1] + "/" + intday + "/" + strYear;
	} else {
		datefield.value = intday + "/" + strMonthArray[intMonth - 1] + "/" + strYear;
	}
	return true;
}
function LeapYear(intYear) {
	if (intYear % 100 === 0) {
		if (intYear % 400 === 0) {
			return true;
		}
	} else {
		if ((intYear % 4) === 0) {
			return true;
		}
	}
	return false;
}
function doDateCheck(from, to) {
	
	if(!compareFromCurrentDate(from.value)){
	 	alert("From date should not be greater than current date.");
	}else if(!compareFromCurrentDate(to.value))
	{
		alert("To date should not be greater than current date.");
		return false;
	}else{
	
		if (Date.parse(transferDateString(from.value)) <= Date.parse(transferDateString(to.value))) {
			return true;
		} else {
			if (from.value == "" && to.value == "") {
				alert("Both dates must be entered.");
				return false;
			} else if(from.value === ""){
			alert("From date must be entered");
			return false;
			}else if(to.value === ""){
			alert("To date must be entered");
			return false;
			}else {
				alert("To date must occur after the from date.");
				return false;
			}
		}
	}
}
function transferDateString(orignalDate) {
	var date = orignalDate.substring(0, orignalDate.indexOf("/"));
	var month = orignalDate.substring(orignalDate.indexOf("/") + 1, orignalDate.lastIndexOf("/"));
	var year = orignalDate.substring(orignalDate.lastIndexOf("/") + 1);
	return month + "/" + date + "/" + year;
}

function compareFromCurrentDate(orignalDate) {
	var month = orignalDate.substring(0, orignalDate.indexOf("/"));
	var date = orignalDate.substring(orignalDate.indexOf("/") + 1, orignalDate.lastIndexOf("/"));
	var year = orignalDate.substring(orignalDate.lastIndexOf("/") + 1);
	
	var today = new Date();
	var currentDate=new Date(today.getFullYear(),today.getMonth(),today.getDate())
	var date = new Date(year,month-1,date);
	if(date > currentDate)
	{
	 return false;
	}else{
		
	 	 return true;
	}

}

function validateDate(day,month,year)
{
	var valDate= "";
   if(day != "00" || month != "00" || year != "0")
   {
   		valDate= day + month + year;
   }
	return valDate;
}


function validateDateRange(fromDate,toDate)
{
	var valDateRange= "";
   if(fromDate =="MM/DD/YYYY" && toDate == "MM/DD/YYYY")
   {
   		valDateRange= "";
   }
   else{
    	valDateRange = fromDate + toDate;
   }
	return valDateRange;	
}
