<!--

//Limit key press for time value
function timeKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab, 13=carriage return
	if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 27))
		return true;
	else if ((key==58) || (key==65) || (key==77) || (key==80) || (key==97) || (key==109) || (key==112))
		return true;
	else if (("0123456789").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

//This function should run at onkeyup event
function AddColon(fieldId)
{
    var txtTime = document.getElementById(fieldId);
    var fValue = txtTime.value;
    var fLength = fValue.length;
    if (fLength == 0)
    {
        return;
    }
    var iPos = fValue.indexOf(":");
    var isValid = true;

    if ((fValue.indexOf("M") > -1) && (fValue.indexOf("M") != 7))
    {
        fValue = fValue.replace("M", "");
        isValid = false;;
    }
    if ((fValue.indexOf("m") > -1) && (fValue.indexOf("m") != 7))
    {
        fValue = fValue.replace("m", "");
        isValid = false;;
    }
    if ((fValue.indexOf("A") > -1) && (fValue.indexOf("A") != 6))
    {
        fValue = fValue.replace("A", "");
        isValid = false;;
    }
    if ((fValue.indexOf("a") > -1) && (fValue.indexOf("a") != 6))
    {
        fValue = fValue.replace("a", "");
        isValid = false;;
    }
    if ((fValue.indexOf("P") > -1) && (fValue.indexOf("P") != 6))
    {
        fValue = fValue.replace("P", "");
        isValid = false;;
    }
    if ((fValue.indexOf("p") > -1) && (fValue.indexOf("p") != 6))
    {
        fValue = fValue.replace("p", "");
        isValid = false;;
    }
    if ((fValue.indexOf(" ") > -1) && (fValue.indexOf(" ") != 5))
    {
        fValue = fValue.replace(" ", "");
        isValid = false;;
    }
    if (iPos > -1 && ((iPos > 2) || (iPos < 1)))
    {
        fValue = fValue.replace(":", "");
        isValid = false;;
    }
    if (!isValid) 
    {
        txtTime.value = fValue
        return;
    }

    
    if ((fLength == 1) && (iPos < 0))
    {
        if (eval(fValue) > 2) txtTime.value = "0" + fValue + ":";
    }
    else if (fLength == 2)
    {
        if (iPos < 0)
        {
            if (eval(fValue) > 24) txtTime.value = "24:";
            else txtTime.value = fValue + ":";
        }
        else if (iPos == 1) txtTime.value = "0" + fValue;
    }
    else if (fLength == 3)
    {
    }
    else if (fLength == 4)
    {
        var v4 = fValue.charAt(3);
        if (eval(v4) > 5) txtTime.value = fValue.substring(0, 3) + "0" + v4;
    }
    else if (fLength == 5)
    {
        var v1_2 = fValue.substring(0, 2);
        var v4_5 = fValue.substring(3, 5);
        if (eval(v4_5) > 59) fValue = fValue.substring(0, 3) + "59";
        if (eval(v1_2) >= 13) txtTime.value = fValue + " PM";
        else txtTime.value = fValue + " ";
    }
    else if (fLength == 6)
    {
        var v6 = fValue.substring(5, 6).toUpperCase();
        if ((v6 == "A") || (v6 == "P")) txtTime.value = fValue.substring(0, 5) + " " + v6 + "M";
        else txtTime.value = fValue.substring(0, 5) + " ";
    }
    else if (fLength == 7)
    {
        var v7 = fValue.substring(6, 7).toUpperCase();
        if ((v7 == "A") || (v7 == "P")) txtTime.value = fValue.toUpperCase() + "M";
        else txtTime.value = fValue.substring(0, 6);
    }
}

function isTime(fieldId)
{
    var field = document.getElementById(fieldId);
    return timeRegExp(field);
}
	
//Validate time format
function timeRegExp(field)
{
	var pattern = /^([0-1]\d|2[0-4]|\d):?([0-5]\d|\d)\ ?(a|p|A|P)?(m|M)?$/;
	var vTime = field.value;
	if ((vTime == null) || (vTime == "")) return true;
	
	var patterValidate = pattern.test(vTime);
	
	//If is the patten valid
	if (patterValidate == false) 
	{
		window.status = "The correct time formt is \"hh:mm am/pm\", example: \"08:30 am\".";
		alert ("The invalid time value.\nThe correct time formt is \"hh:mm am/pm\", example: \"08:30 am\".");
		field.focus();
		return false;
	}

	var vHour = vTime.replace(pattern, "$1");
	var vMin = vTime.replace(pattern, "$2");
	var vXm = vTime.replace(pattern, "$3").toUpperCase();
	
	if (vXm.length == 0) vXm = "A";
	if (vHour >= 12)
	{
		if (vHour < 24) vXm = "P";
		vHour = vHour % 12;
	}
	if ((vHour.length == 0) || (vHour == 0)) vHour = "12";
	else if (vHour.length == 1) vHour = "0" + vHour;
	
	if ((vMin == null) || (vMin.length == 0) || (vMin == 0)) vMin = "00";
	else if (vMin.length == 1) vMin = "0" + vMin;

	vXm = vXm.replace(" ", "") + "M";
	vTime = vHour + ":" + vMin + " " + vXm;
	field.value = vTime;
	window.status = "";
	return true;
}

//Limit key press for date value
function dateKeyPress()
{
	var key, keychar;
	if (window.event)
		key = window.event.keyCode;
	else if (event)
		key = event.which;
	else
		return true;
		
	keychar = String.fromCharCode(key);
	//8=backspace, 9=tab, 13=carriage return
	if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 27) || (key==47))
		return true;
	else if (("0123456789").indexOf(keychar) > -1)
		return true;
	else
		return false;
}

//This function should run at onkeyup event
function AddSlash(filedId)
{
    var txtDate = document.getElementById(filedId);
    var fValue = txtDate.value;
    var fLength = fValue.length;
    if (fLength == 0)
    {
        return;
    }
    var iPos1 = fValue.indexOf("/");
    var iPos2 = fValue.lastIndexOf("/")
    
    //Remove extra slash
    if (fValue.indexOf("//") >= 0)
    {
        txtDate.value = fValue.replace("//", "/");
        return;
    }
    
    if (fLength == 1)
    {
        if (iPos1 < 0)
        {
            if (eval(fValue) > 1) txtDate.value = fValue + "/";
        }
        else
        {
            txtDate.value = "";
        }
    }
    else if ((fLength == 2) && (iPos1 < 0))
    {
        txtDate.value = fValue + "/";
    }
    else if ((fLength == 3) && (iPos1 == iPos2)) 
    {
        if (iPos1 == 1)
        {
            if (eval(fValue.charAt(2)) > 3) txtDate.value = fValue + "/";
        }
    }
    else if ((fLength == 4) && (iPos1 == iPos2)) 
    {
        if (iPos1 == 1)
        {
            txtDate.value = fValue + "/";
        }
        else if (iPos1 == 2)
        {
            if (eval(fValue.charAt(3)) > 3) txtDate.value = fValue + "/";
        }
    }
    else if ((fLength == 5) && (iPos1 == iPos2)) 
    {
        txtDate.value = fValue + "/";
    }
}

function isCreaditCardDate(fieldId)
{
    largeThanToday = true;
    var field = document.getElementById(fieldId);
    var vReturn = dateRegExp(field);
    if (vReturn)
    {
        vReturn = isLagerThanToday()
        if (vReturn == false)
        {
            alert ("The credit card was expired!");
		    field.focus();
        }
    }
    return vReturn;
}

function isBirthDate(fieldId)
{
    largeThanToday = false;
    var field = document.getElementById(fieldId);
    if (field.value.length == 0)
    {
        return true;
    }
    var vReturn = dateRegExp(field);
    if (vReturn)
    {
        vReturn = !isLagerThanToday()
        if (vReturn == false)
        {
            alert ("The birth date cannot be later than today!");
		    field.focus();
        }
    }
    return vReturn;
}

//Validate the date format
function dateRegExp(field)
{
	var pattern1 = /^(1[0-2]|0?[1-9])\/?([1-2][0-9]|3[0-1]|0?[1-9])\/?(\d{1}|\d{2}|\d{3}|\d{4})$/;
	var vDate = field.value;
	var vM, vD, vY, vReturn;
	if ((vDate == null) || (vDate == "")) return true;
	var patterValidate = pattern1.test(vDate);

	if (patterValidate != true)
	{
		alert ("The invalid date value.\n" +
			"The correct date formt is \"mm/dd/yyyy\" (6/28/2005).");
		window.status = "The correct date formt is \"mm/dd/yyyy\", example: \"6/28/2005\".";
		vReturn = false;
	}
	else	//If is the patten valid
	{
		vM = vDate.replace(pattern1, "$1");
		vD = vDate.replace(pattern1, "$2");
		vY = vDate.replace(pattern1, "$3");
		var d1;
		var d2 = new Date();
		
		if (vY.length == 1)
		{
		    if (!largeThanToday)
		    {
		        d1 = new Date(vM + "/" + vD + "/200" + vY);
		        if (d1.getTime() > d2.getTime())
		        {
		            vY = "199" + vY;
		        }
		        else
		        {
		            vY = "200" + vY;
		        }
		    }
		    else
		    {
		        vY = "200" + vY;
		    }
		}
		if (vY.length == 2)
		{
		    if (!largeThanToday)
		    {
		        d1 = new Date(vM + "/" + vD + "/20" + vY);
		        if (d1.getTime() > d2.getTime())
		        {
		            vY = "19" + vY;
		        }
		        else
		        {
		            vY = "20" + vY;
		        }
		    }
		    else
		    {
		        vY = "20" + vY;
		    }
		}
		if (vY.length == 3)
		{
		    vY = vY + "0";
		}
		vDate = eval(vM) + "/" + eval(vD) + "/" + vY;
		field.value = vDate;

		//Validate the date value
		vReturn = isValidDate(vD, vM, vY);
	}
	if (vReturn == true)
	{
	    dateValue = new Date(vM + "/" + vD + "/" + vY);
	}
	else
	{
		field.focus();
	}
	return vReturn;
}

var dateValue;
var largeThanToday; //Three possible values: null, true, false
function isLagerThanToday()
{
	var dReturn = true;
	var d1 = dateValue;
	var d2 = new Date();
	if (d1.getTime() <= d2.getTime())
	{
		dReturn = false;
	}
	return dReturn;
}

//Validate the date value
function isValidDate(date, month, year)
{
	var dayOfMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var dayOfMonthLp = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	date = date - 0;
	month = month - 0;
	year = year - 0;
	
	//If date is larger than real number of the month
	if (isLeapYear(year) && (date > dayOfMonthLp[month - 1]))
	{
		alert ("The invalid date value..");
		return false;
	}
	else if ((!isLeapYear(year)) && (date > dayOfMonth[month - 1]))
	{
		alert ("The invalid date value..");
		return false;
	}
	//If date is larger than today
	else
	{
	}
	return true; 
}

function isLeapYear(year)
{
	year = year - 0;
	if ((year / 4) != Math.floor(year / 4))
		return false;
	if ((year / 100) != Math.floor(year / 100))
		return true;
	if ((year / 400) != Math.floor(year / 400))
		return false;
	return true;
}

//-->