// Global Variables
var strDay;
var strMonth;
var strYear;
var strSeparator;

function checkValidDate(sender, args)
{
    var date = args.Value;
    args.IsValid = IsValidDate(date);   
}

function IsValidDate(strDate) 
{
    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 strSeparatorArray = new Array("-"," ","/",".");
    var intElementNr;
    var err = 0;
    var strMonthArray = new Array(12);
    strMonthArray[0] = "Jan";
    strMonthArray[1] = "Feb";
    strMonthArray[2] = "Mar";
    strMonthArray[3] = "Apr";
    strMonthArray[4] = "May";
    strMonthArray[5] = "Jun";
    strMonthArray[6] = "Jul";
    strMonthArray[7] = "Aug";
    strMonthArray[8] = "Sep";
    strMonthArray[9] = "Oct";
    strMonthArray[10] = "Nov";
    strMonthArray[11] = "Dec";
    
    if (strDate.length < 1) 
    {
        return true;
    }
    for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) 
    {
        if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
        {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            strSeparator = 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);
        }
        else
        {
            err = 2;
            return false;
        }
    }
    if (strYear.length == 2)
    {
        // Check to see if strYear is between 0 and 99
        intYear = parseInt(strYear, 10);
        if (intYear >= 0 || intYear <= 99)
            strYear = '20' + strYear;
    }
    // US style
    if (strDatestyle == "US") 
    {
        strTemp = strDay;
        strDay = strMonth;
        strMonth = strTemp;
    }
    intday = parseInt(strDay, 10);
    if (isNaN(intday)) 
    {
        err = 3;
        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 = 4;
            return false;
        }
    }
    if (strYear.length != 4)
    {
        err = 5;
        return false;
    }
    intYear = parseInt(strYear, 10);
    if (isNaN(intYear)) 
    {
        err = 6;
        return false;
    }
    if (intMonth>12 || intMonth<1) 
    {
        err = 7;
        return false;
    }
    if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
    {
        err = 8;
        return false;
    }
    if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
    {
        err = 9;
        return false;
    }
    if (intMonth == 2) 
    {
        if (intday < 1) 
        {
            err = 10;
            return false;
        }
        if (LeapYear(intYear) == true) 
        {
            if (intday > 29) 
            {
                err = 11;
                return false;
            }
        }
        else 
        {
            if (intday > 28) 
            {
                err = 12;
                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;
}

function ValidateUploadExtension(sender, args)
{
    var fileName = document.form1.wzdApplication_inpUploadFile.value;
    var fileIsValid = false;
    if (fileName.length == 0)
    {
        fileIsValid = true;
    }
    else
    {
        //var extArray = new Array(".pdf",".xml");
        var extArray = new Array(".xml",".txt");
        while (fileName.indexOf("\\") != -1)
        {
            fileName = fileName.slice(fileName.indexOf("\\") + 1);
        }
        var fileExt = fileName.substring(fileName.lastIndexOf("."),fileName.length).toLowerCase();
        for (var i = 0; i < extArray.length; i++)
        {
            if (extArray[i] == fileExt)
            {
                fileIsValid = true;
                break;
            }
        }
    }
    args.IsValid = fileIsValid;
}

function SetCount(textField, countLabel, maxLength)
{
	var Field = document.getElementById(textField);
	if (window.event)
        var charCount = Field.value.length;
	else
	{
        try
        {
            var charCount = Field.value.length + Field.value.match(/[\r\n]/g).length;
        }
        catch (err)
        {
            var charCount = Field.value.length;
        }
    }
	var Label = document.getElementById(countLabel);
	Label.innerHTML = "You have used " + charCount +" of "+ maxLength + " characters.";
	setCookie('prevTextValue',textField);
}

function HandlePaste(textField, countLabel, maxLength)
{
	var Field = document.getElementById(textField);
   	var charCount = Field.value.length;
	var clipData = window.clipboardData.getData("text");
	var clipLength = clipData.length;
	var textSelection = document.selection.createRange().text;
   	var Label = document.getElementById(countLabel);	
	if (charCount - textSelection.length + clipLength > maxLength)
	{
		alert("The data you are trying to paste exceeds the " + maxLength + " character limit.");
	    Label.innerHTML = "You have used " + charCount + " of " + maxLength + " characters.";
		return false;
	}
	else
        Label.innerHTML = "You have used " + (charCount - textSelection.length + clipLength) + " of " + maxLength + " characters.";
}
        
function UpdateCount(textField, maxLength, e)
{
	var Field = document.getElementById(textField);
	if (window.event)
	{
		var code = window.event.keyCode;
		var charCount = Field.value.length;
	}
	else
	{
		var code = e.keyCode;
		try
		{
            var charCount = Field.value.length + Field.value.match(/[\r\n]/g).length;
        }
        catch (err)
        {
            var charCount = Field.value.length;
        }
    }
	if (code == 8)//allows backspace
	{
		return true;
	}
	else
	{
		if (charCount >= maxLength)
		{
			return false;
		}
		else if (charCount < maxLength)
		{
            //document.cookie = "prevTextValue=" + escape(Field.value);
            setCookie ("prevTextValue",textField);
			return true;
		}
	}		
}

function HandleOnInput(textField, countLabel, maxLength)
{
	var Field = document.getElementById(textField);
	try
	{
	    var charCount = Field.value.length + Field.value.match(/[\r\n]/g).length;
	}
	catch (err)
	{
	    var charCount = Field.value.length;
	}
	if (charCount > maxLength)
	{
        Field.value = getCookie('prevTextValue');
		alert("The data you are trying to paste exceeds the " +maxLength+ " character limit.");
	}
    SetCount(textField, countLabel, maxLength);	
}

function getCookie (cookieName)
{
    var results = document.cookie.match ('(^|;) ?' + cookieName + '=([^;]*)(;|$)');

    if (results)
        return (unescape(results[2]));
    else
        return null;
}

function setCookie (cookieName, textField)
{
	var Field = document.getElementById(textField);
    document.cookie = cookieName + "=" + escape(Field.value);
}

/*
function deleteCookie (cookieName)
{
  var cookieDate = new Date ( );  // current date & time
  cookieDate.setTime ( cookieDate.getTime() - 1 );
  document.cookie = cookieName += "=; expires=" + cookieDate.toGMTString();
}
*/

function displayWarning()
{
    var agree = confirm('You will lose any unsaved data.\rClick OK to continue or Cancel to remain.');
	if (agree) 
	{
		return true;
	}
	else
	{
		return false;
	}			
}



function Trim(STRING)
{
	STRING = LTrim(STRING);
	return RTrim(STRING);
}

function RTrim(STRING)
{
	while(STRING.charAt((STRING.length -1))==" ")
	{
		STRING = STRING.substring(0,STRING.length-1);
	}
	return STRING;
}

function LTrim(STRING)
{
	while(STRING.charAt(0)==" ")
	{
		STRING = STRING.replace(STRING.charAt(0),"");
	}
	return STRING;
}

function isNumeric(sText) 
{
	var ValidChars = "0123456789,";
	var IsNumber=true;
	var Char;
 
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i);
		//if ( i == 0 && Char == 0)
		//{
		//	IsNumber = false;
		//} 
		//else
		if (ValidChars.indexOf(Char) == -1) 
		{
			IsNumber = false;
		}
	}
	return IsNumber;
}

function ValidateNaturalNumber(sender, args)
{
	var text = args.Value;;
	text = Trim(text);
	if (text.length > 0 )
	{
		if (isNumeric(text)== false)
		{
			args.IsValid = false;
		}
	}				
}

function StripInvalidChars(sText)
{
    var StrippedText=sText;
    var LeadingZeros=true;
    var Char;
	for (i = 0; i < sText.length; i++)
	{
	    Char = sText.charAt(i);
	    if ( Char == 0 && LeadingZeros )
	    {
	        StrippedText = sText.substring(i+1)
	    }
	    else
	        LeadingZeros = false;
	}
	return StrippedText.replace(/,/g,"");
}

function FixNumber(sText)
{
    var NumberText = document.getElementById(sText);
    NumberText.value = StripInvalidChars(NumberText.value);
}

function FixDate(sText) 
{
    var DateText = document.getElementById(sText);
    if (DateText.value.trim() != "")
    {
        strSeparator = "";
        if (IsValidDate(DateText.value))
        {
            if (strSeparator == "")
                strSeparator = "/"            
            DateText.value = strMonth + strSeparator + strDay + strSeparator + strYear;
        }
    }
}

/*
function FixDate(sText)
{
    var DateText = document.getElementById(sText);
    if (DateText.value.trim() != "")
    {
        var Year = DateText.value.split('/')[2];
        if(Year.length==2)
            //Year = (Year>50) ? '19'+Year : '20'+Year;
            Year = '20'+Year
        var DateArr = DateText.value.split('/'); 
        DateArr[2] = Year; 
        DateText.value = DateArr.join('/');
    }
}
*/

function PopulateEndDate(sBeginDate,sEndDate)
{
    var BeginDate = document.getElementById(sBeginDate);
    var EndDate = document.getElementById(sEndDate);
    if (IsValidDate(BeginDate.value))
        if (EndDate.value == "")
            EndDate.value = BeginDate.value;
}

function FixReturns(sText)
{
	var Field = document.getElementById(sText);
	Field.value = Field.value.replace(/[\r\n]+/g,'\r\n');
}

String.prototype.trim = function()
{ 
   var string = this;  
   //Remove leading spaces
   while(string.charAt(0) == " ")
      string = string.substring(1, string.length);
   //Remove trailing spaces
   while(string.charAt(string.length-1) == " ")
      string = string.substring(string, string.length-1);
   return string;
}

function IsNotValidBeginDate(strDate)
{
    var BeginDate = new Date(strDate);
    var Today = new Date();
    Today.setHours(0,0,0,0);
    if (BeginDate < Today)
        return true;
    return false;
}

function IsNotValidEndDate(strDate)
{
    var EndDate = new Date(strDate);
    var Today = new Date();
    var MaxYear = Today.getFullYear()+2;
    Today.setHours(0,0,0,0);
    if (EndDate > Today.setYear(MaxYear))
        return true;
    return false;
}

function DisableTravelDates(strDate)
{
    var SelectedDate = new Date(strDate);
    var Today = new Date();
    Today.setHours(0,0,0,0);
    var MaxYear = Today.getFullYear()+2;
    if ( (SelectedDate < Today) || (SelectedDate > Today.setYear(MaxYear)) )
        return 'invalidDateStyle';
    return false;
}

function CheckValidTravelDate(cal,sField)
{
    var EndDateField;
	var p = cal.params;
	var update = (cal.dateClicked || p.electric);
    var SelectedDate = new Date(cal.date);
    var Today = new Date();
    Today.setHours(0,0,0,0);
    var MaxYear = Today.getFullYear()+2;   
   	if (update && p.singleClick && cal.dateClicked)
   	{
   	    if (SelectedDate < Today)
            alert("Cannot enter a date in the past");
        else if (SelectedDate > Today.setYear(MaxYear))
            alert("Cannot enter a date more than 2 years in the future");
        else
        {
        	if (update && p.inputField) 
	        	p.inputField.value = cal.date.print(p.ifFormat);
			cal.callCloseHandler();
			// OnUpdate Event not firing - update Return/End Date here instead
			if (sField.indexOf("Depart") > 0)
			    EndDateField = sField.replace("Depart","Return");
			else if (sField.indexOf("Begin") > 0)
			    EndDateField = sField.replace("Begin","End");
            if (EndDateField)
			    if (document.getElementById(EndDateField).value == "")
			        document.getElementById(EndDateField).value = document.getElementById(sField).value;
		}
		if (typeof(Page_Validators) != "undefined")
        {
            var i;
            for (i = 0; i < Page_Validators.length; i++) 
            {
                if ((Page_Validators[i].id.indexOf("DepartDate") != -1 || Page_Validators[i].id.indexOf("ReturnDate") != -1)
                    || (Page_Validators[i].id.indexOf("BeginDate") != -1 || Page_Validators[i].id.indexOf("EndDate") != -1)
                    || (Page_Validators[i].id.indexOf("ValTrip") != -1 && sField.indexOf("ReturnDate") != -1)
                    || (Page_Validators[i].id.indexOf("TimeFrame") != 1 && sField.indexOf("EndDate") != -1))
                    ValidatorValidate(Page_Validators[i]);
            }
        }		
	}
	else
	    // Another button on the calendar (not a date) was clicked, update the input field
	    p.inputField.value = cal.date.print(p.ifFormat);
}

/*
function checkBeginDate(sender, args)
{
    var date = args.Value;
    if (IsValidDate(date))
        args.IsValid = IsValidBeginDate(date);
}
*/

/*
function IsNotValidTravelDate(strDate)
{
    if (IsNotValidBeginDate(strDate) || IsNotValidEndDate(strDate))
        return true;
    return false;
}
*/

/*function moveOnMax(field,nextFieldID)
{
    alert(field);
    if(field.value.length >= field.maxLength)
    {
        document.getElementById(nextFieldID).focus();
    }
}*/
