var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
        if ((p_month == null) && (p_year == null))        return;

        if (p_WinCal == null)
                this.gWinCal = ggWinCal;
        else
                this.gWinCal = p_WinCal;

        if (p_month == null) {
                this.gMonthName = null;
                this.gMonth = null;
                this.gYearly = true;
        } else {
                this.gMonthName = Calendar.get_month(p_month);
                this.gMonth = new Number(p_month);
                this.gYearly = false;
        }

        this.gYear = p_year;
        this.gFormat = p_format;
        this.gBGColor = "#F4FAFF";
        this.gFGColor = "black";
        this.gTextColor = "black";
        this.gHeaderColor = "black";
        this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
        return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {

        if ((p_year % 4) == 0) {
                if ((p_year % 100) == 0 && (p_year % 400) != 0)
                        return Calendar.DOMonth[monthNo];

                return Calendar.lDOMonth[monthNo];
        } else
                return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

        var ret_arr = new Array();

        if (incr == -1) {

                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {

                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }

        return ret_arr;
}

function Calendar_print() {
        ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {

        var ret_arr = new Array();

        if (incr == -1) {

                if (p_Month == 0) {
                        ret_arr[0] = 11;
                        ret_arr[1] = parseInt(p_Year) - 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) - 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        } else if (incr == 1) {

                if (p_Month == 11) {
                        ret_arr[0] = 0;
                        ret_arr[1] = parseInt(p_Year) + 1;
                }
                else {
                        ret_arr[0] = parseInt(p_Month) + 1;
                        ret_arr[1] = parseInt(p_Year);
                }
        }

        return ret_arr;
}


new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
        var vCode = "";
        var vHeader_Code = "";
        var vData_Code = "";


        vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";

        vHeader_Code = this.cal_header();
        vData_Code = this.cal_data();
        vCode = vCode + vHeader_Code + vData_Code;

        vCode = vCode + "</TABLE>";

        return vCode;
}

Calendar.prototype.show = function() {
        var vCode = "";

        this.gWinCal.document.open();


        this.wwrite("<html>");
        this.wwrite("<head><title>Calendar</title>");
        this.wwrite("</head>");

        this.wwrite("<body" +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwriteA(this.gMonthName + " " + this.gYear);
        this.wwriteA("</B><BR>");

        var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
        var prevMM = prevMMYYYY[0];
        var prevYYYY = prevMMYYYY[1];

        var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
        var nextMM = nextMMYYYY[0];
        var nextYYYY = nextMMYYYY[1];

        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#F4FAFF'><TR><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-10) + "', '" + this.gFormat + "'" +
                ");" +
                "\">Year(-10)<\/A></FONT></TD><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
                ");" +
                "\">Year(-1)<\/A></FONT></TD><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">Month(-1)<\/A></FONT></TD><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">Month(+1)<\/A></FONT></TD><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
                ");" +
                "\">Year(+1)<\/A></FONT></TD><TD ALIGN=center>");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=1><A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+10) + "', '" + this.gFormat + "'" +
                ");" +
                "\">Year(+10)<\/A></FONT></TD></TR></TABLE><BR>");
        this.wwrite("<center>");
        vCode = this.getMonthlyCalendarCode();
        this.wwrite(vCode);

        this.wwrite("</font></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
        var vCode = "";
        var i;
        var vr, vc, vx, vy;
        var vxf = 285;
        var vyf = 200;
        var vxm = 10;
        var vym;
        if (isIE)        vym = 75;
        else if (isNav)        vym = 25;

        this.gWinCal.document.open();

        this.wwrite("<html>");
        this.wwrite("<head><title>Calendar</title>");
        this.wwrite("<style type='text/css'>\n<!--");
        for (i=0; i<12; i++) {
                vc = i % 3;
                if (i>=0 && i<= 2)        vr = 0;
                if (i>=3 && i<= 5)        vr = 1;
                if (i>=6 && i<= 8)        vr = 2;
                if (i>=9 && i<= 11)        vr = 3;

                vx = parseInt(vxf * vc) + vxm;
                vy = parseInt(vyf * vr) + vym;

                this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
        }
        this.wwrite("-->\n</style>");
        this.wwrite("</head>");

        this.wwrite("<body bgcolor='#F4FAFF'" +
                "link=\"" + this.gLinkColor + "\" " +
                "vlink=\"" + this.gLinkColor + "\" " +
                "alink=\"" + this.gLinkColor + "\" " +
                "text=\"" + this.gTextColor + "\">");
        this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
        this.wwrite("Year : " + this.gYear);
        this.wwrite("</B><BR>");


        var prevYYYY = parseInt(this.gYear) - 1;
        var nextYYYY = parseInt(this.gYear) + 1;

        this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#F4FAFF'><TR><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
        this.wwrite("[<A HREF=\"" +
                "javascript:window.opener.Build(" +
                "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
                ");" +
                "\">>><\/A>]</TD></TR></TABLE><BR>");


        var j;
        for (i=11; i>=0; i--) {
                if (isIE)
                        this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
                else if (isNav)
                        this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

                this.gMonth = i;
                this.gMonthName = Calendar.get_month(this.gMonth);
                vCode = this.getMonthlyCalendarCode();
                this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
                this.wwrite(vCode);

                if (isIE)
                        this.wwrite("</DIV>");
                else if (isNav)
                        this.wwrite("</LAYER>");
        }

        this.wwrite("</font><BR></body></html>");
        this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
        this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
        this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
        var vCode = "";

        vCode = vCode + "<TR>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
        vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
        vCode = vCode + "</TR>";

        return vCode;
}

Calendar.prototype.cal_data = function() {
        var vDate = new Date();
        vDate.setDate(1);
        vDate.setMonth(this.gMonth);
        vDate.setFullYear(this.gYear);

        var vFirstDay=vDate.getDay();
        var vDay=1;
        var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
        var vOnLastDay=0;
        var vCode = "";


        vCode = vCode + "<TR>";
        for (i=0; i<vFirstDay; i++) {
                vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT>&nbsp;</TD>";
        }

        for (j=vFirstDay; j<7; j++) {
        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>&nbsp;" +
                        "<A HREF='#' " +
                                "onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
                                this.format_data(vDay) +
                                "';window.close();\">" +
                                this.format_day(vDay) +
                        "</A>" +
                        "</FONT></TD>";
                vDay=vDay + 1;
        }
        vCode = vCode + "</TR>";

        for (k=2; k<7; k++) {
                vCode = vCode + "<TR>";

                for (j=0; j<7; j++) {
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>&nbsp;" +
                                "<A HREF='#' " +
                                        "onClick=\"self.opener.document." + this.gReturnItem + ".value='" +
                                        this.format_data(vDay) +
                                        "';window.close();\">" +
                                this.format_day(vDay) +
                                "</A>" +
                                "</FONT></TD>";
                        vDay=vDay + 1;

                        if (vDay > vLastDay) {
                                vOnLastDay = 1;
                                break;
                        }
                }

                if (j == 6)
                        vCode = vCode + "</TR>";
                if (vOnLastDay == 1)
                        break;
        }

        for (m=1; m<(7-j); m++) {
                if (this.gYearly)
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                        ">&nbsp;<FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
                else
                        vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                        ">&nbsp;<FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
        }

        return vCode;
}

Calendar.prototype.format_day = function(vday) {
        var vNowDay = gNow.getDate();
        var vNowMonth = gNow.getMonth();
        var vNowYear = gNow.getFullYear();

        if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
                return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
        else
                return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
        var i;

        for (i=0; i<weekend.length; i++) {
                if (vday == weekend[i])
                        return (" BGCOLOR=\"" + weekendColor + "\"");
        }

        return "";
}

Calendar.prototype.format_data = function(p_day) {
        var vData;
        var vMonth = 1 + this.gMonth;
        vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
        var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
        var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
        var vY4 = new String(this.gYear);
        var vY2 = new String(this.gYear.substr(2,2));
        var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

        switch (this.gFormat) {
                case "MM\/DD\/YYYY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
                        break;
                case "MM\/DD\/YY" :
                        vData = vMonth + "\/" + vDD + "\/" + vY2;
                        break;
                case "MM-DD-YYYY" :
                        vData = vMonth + "-" + vDD + "-" + vY4;
                        break;
                case "MM-DD-YY" :
                        vData = vMonth + "-" + vDD + "-" + vY2;
                        break;

                case "DD\/MON\/YYYY" :
                        vData = vDD + "\/" + vMon + "\/" + vY4;
                        break;
                case "DD\/MON\/YY" :
                        vData = vDD + "\/" + vMon + "\/" + vY2;
                        break;
                case "DD-MON-YYYY" :
                        vData = vDD + "-" + vMon + "-" + vY4;
                        break;
                case "DD-MON-YY" :
                        vData = vDD + "-" + vMon + "-" + vY2;
                        break;

                case "DD\/MONTH\/YYYY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY4;
                        break;
                case "DD\/MONTH\/YY" :
                        vData = vDD + "\/" + vFMon + "\/" + vY2;
                        break;
                case "DD-MONTH-YYYY" :
                        vData = vDD + "-" + vFMon + "-" + vY4;
                        break;
                case "DD-MONTH-YY" :
                        vData = vDD + "-" + vFMon + "-" + vY2;
                        break;

                case "DD\/MM\/YYYY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY4;
                        break;
                case "DD\/MM\/YY" :
                        vData = vDD + "\/" + vMonth + "\/" + vY2;
                        break;
                case "DD-MM-YYYY" :
                        vData = vDD + "-" + vMonth + "-" + vY4;
                        break;
                case "DD-MM-YY" :
                        vData = vDD + "-" + vMonth + "-" + vY2;
                        break;

                default :
                        vData = vMonth + "\/" + vDD + "\/" + vY4;
        }

        return vData;
}

function Build(p_item, p_month, p_year, p_format) {
        var p_WinCal = ggWinCal;
        gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);


        gCal.gBGColor="#F4FAFF";
        gCal.gLinkColor="black";
        gCal.gTextColor="black";
        gCal.gHeaderColor="darkgreen";


        if (gCal.gYearly)        gCal.showY();
        else        gCal.show();
}

function show_calendar() {


        p_item = arguments[0];
        if (arguments[1] == null)
                p_month = new String(gNow.getMonth());
        else
                p_month = arguments[1];
        if (arguments[2] == "" || arguments[2] == null)
                p_year = new String(gNow.getFullYear().toString());
        else
                p_year = arguments[2];
        if (arguments[3] == null)
                p_format = "DD/MM/YYYY";
        else
                p_format = arguments[3];

        vWinCal = window.open("", "Calendar",
                "width=400,height=250,status=no,resizable=no,top=200,left=200");
        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, p_month, p_year, p_format);
}

function show_yearly_calendar(p_item, p_year, p_format) {

        if (p_year == null || p_year == "")
                p_year = new String(gNow.getFullYear().toString());
        if (p_format == null || p_format == "")
                p_format = "MM/DD/YYYY";

        var vWinCal = window.open("", "Calendar", "scrollbars=no");
        vWinCal.opener = self;
        ggWinCal = vWinCal;

        Build(p_item, null, p_year, p_format);
}




















var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/";
var vDateType = 3;
var vYearType = 4;
var vYearLength = 2;
var err = 0;
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
   }
}
else {
isIE4 = true;
}
function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
vDateType = dateType;
if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;
if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
   }
}
if (whichCode == 8)
return false;
else {
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
alert("Invalid Date\nPlease Re-Enter ");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();
var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {
if (vDateValue.length >= 8  && dateCheck) {
if (vDateType == 1)
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2)
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3)
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
         }
      }
   }
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateName.value = "";
vDateName.focus();
return true;
}
if (vDateValue.length >= 8 && dateCheck) {
if (vDateType == 1) // mm/dd/yyyy
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) // yyyy/mm/dd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) // dd/mm/yyyy
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateName.value = "";
vDateName.focus();
return true;
   }
}
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {
var mToday = new Date();
var checkYear = mToday.getFullYear() + 30;
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 1) // mm/dd/yyyy
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) // dd/mm/yyyy
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
if (!dateValid(vDateValueCheck)) {
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (vDateType == 1) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
if (vDateType == 2) {
if (vDateValue.length == 4) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 7) {
vDateName.value = vDateValue+strSeperator;
   }
}
if (vDateType == 3) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
return true;
   }
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {
//alert(err);
alert("The Date is Invalid\nPlease Re-Enter the Date ");
vDateName.focus();
vDateName.select();
   }
}
return false;
}
else {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
         }
      }
   }
}
function dateValid(objName) {
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 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";
strDate = objName;
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;
}
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;
      }
   }
}
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 dodate(e, obj1,dtformat) 
{

DOMonth  = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
LDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

    var tempstr=new String("");
    tempStr=obj1.value;
    tempStr=tempStr.replace(/ /g, "");
    obj1.value=tempStr;
    //alert(tempStr);

    if (document.all) {
        e = window.event;
    }

    var key;



    if (document.layers)
        key = e.which;
    if (document.all)
        key = e.keyCode;

    //alert(key);
    //alert(obj1.value.length);

    if(((key<48)&&(key!=8)&&(key!=13)&&(key!=46)&&(key!=37)&&(key!=39&&(key!=16&&(key!=17))))||(key>57)&&(key<96)||(key>105))
     {
      if(obj1.value.length!="")
       {
      /*alert("Invalid entry")
      obj1.value=obj1.value.substring(0,obj1.value.length-1);
      obj1.focus();
      return false; */
       } 
     }	

     if ((key==8) && ((obj1.value.length==2)||(obj1.value.length==5))){
        obj1.value=obj1.value.substring(0,obj1.value.length-1);
     }
     if(obj1.value.length<10)
	{
         if(dtformat==103)
    	   {
              if (isNaN(obj1.value.substring(0,2)))
	      {
                alert("Invalid Month")
		return false;  
	      }
	      else
	      {
		
      	           if(obj1.value.substring(0,2)>31)
	           {
	            alert("Invalid Day")
	            obj1.value=obj1.value.substring(0,1)
	            obj1.focus();
	            return false;
	           }
               }	

              if (isNaN(obj1.value.substring(3,5)))
	      {
                alert("Invalid Month")
		return false;  
	      }
	      else
	      {
	            if(obj1.value.substring(3,5)>12)
	      	    {
	      	      alert("Invalid month")
	      	      obj1.value=obj1.value.substring(0,4)
	      	      obj1.focus();
	       	      return false;
	      	    }
	      }
           
	   
	   }	 	

         if(dtformat==101)
           {
	     if(obj1.value.substring(0,2)>12)
	     {
    	      alert("Invalid month")
	      obj1.value=obj1.value.substring(0,1)
	      obj1.focus();
	      return false;
	     }

	      if(obj1.value.substring(3,5)>31)
	      {
	      alert("Invalid Day")
	      obj1.value=obj1.value.substring(0,4)
	      obj1.focus();
	      return false;
	      }	

           }	 	
 	
	if((obj1.value.length==2)||(obj1.value.length==5))
         {
	  if(obj1.value.substring(obj1.value.length-1,obj1.value.length)!="/")
           {
	   obj1.value=obj1.value.toUpperCase() +"/";
	   obj1.focus();
           }
         }
    }
     else
    {
       if(obj1.value.length>10)
         {	
          alert("Invalid Input")
          obj1.value=obj1.value.substring(0,obj1.value.length-1);
	  obj1.focus();
          return false;
         }

       p_year=obj1.value.substring(obj1.value.length-4,obj1.value.length) 
       p_year=parseInt(p_year)
       
       if(p_year==0)
       {
       alert("Invalid year")
       obj1.focus();
       return false;
       }
       if (isNaN(p_year))
       {
       	alert("Invalid Year")
        obj1.focus();
        return false;
       }	
       if(p_year<1753)	
       {
       alert("System does not support year less than '1753' ");
       obj1.focus();
       return false;
       }	
	
	
       if(dtformat==103)
        {
	  dayNo=obj1.value.substring(0,2);      
	  monthNo=obj1.value.substring(3,5);
      	
        }
        else
        {
          monthNo=obj1.value.substring(0,2)
          dayNo=obj1.value.substring(3,5)
        }
 
       if ((p_year % 4) == 0) 
         {
           if ((p_year % 100) == 0 && (p_year % 400) != 0)
             {
              p_day=DOMonth[monthNo-1];
             }
           else
            {
             p_day=LDOMonth[monthNo-1];
            }
         } 
        else
         {
          p_day=DOMonth[monthNo-1];
         }


         dayNo=parseInt(dayNo)
         p_day=parseInt(p_day)


         if(dayNo>p_day&&dayNo!=0)
          {
          alert("Invalid date");
          obj1.value='';
	  obj1.focus();
          return false;
          }

     }
}


function datecheck(obj)
{
 if((obj.value!="" && obj.value.length<10)||(obj.value.length>10))
 {
  obj.focus();	
 }
}


function datechecking(dt1,dt2,tm1,tm2,dtfrm)
{
var fdt1 ;
var fdt2 ;
if  (tm1.length == 0)
    {
    	fdt1 = dt1 +" 00:00:00";
    }
else
    {
    	fdt1 = dt1+" "+tm1;
    }

 if (tm2.length == 0)
    {
    	fdt2 = dt2 + " 00:00:00";
    }
else
    {
    	fdt2 = dt2+" "+tm2;
    }

//alert("ABCD");
//alert("->"+fdt1+"<-");
//alert("->"+fdt2+"<-");

var flag="";
var yr1=parseInt(fdt1.substr(6,4),10);
var yr2=parseInt(fdt2.substr(6,4),10);
if (dtfrm == "103")
   {
   var mm1=parseInt(fdt1.substr(3,2),10);
   var mm2=parseInt(fdt2.substr(3,2),10);
   var dd1=parseInt(fdt1.substr(0,2),10);
   var dd2=parseInt(fdt2.substr(0,2),10);
   }
if (dtfrm == "101")
   {
   var mm1=parseInt(fdt1.substr(0,2),10);
   var mm2=parseInt(fdt2.substr(0,2),10);
   var dd1=parseInt(fdt1.substr(3,2),10);
   var dd2=parseInt(fdt2.substr(3,2),10);
   }
var hh1=parseInt(fdt1.substr(11,2),10);
var hh2=parseInt(fdt2.substr(11,2),10);

var mmm1=parseInt(fdt1.substr(14,2),10);
var mmm2=parseInt(fdt2.substr(14,2),10);

var ss1=parseInt(fdt1.substr(17,2),10);
var ss2=parseInt(fdt2.substr(17,2),10);
if (yr1 < yr2)
	{
		flag="less";
	}
	if (yr1 > yr2)
	{
		flag="more";
	}
	if (yr1 == yr2)
	{
		//alert("Equal Year");
    	if (mm1 > mm2)
		  {
		  flag="more";
		  }
		  if (mm1 < mm2)
		     {
		     flag="less";
		     }
		 if (mm1 == mm2)
		    {
			//alert("Equal Month");
			if (dd1 > dd2)
			   {
			   flag="more";
			//	alert("Day not Ok");
			//	return (false);
			   }
			if (dd1 < dd2)
			   {
			   flag="less";
				// alert("Date Ok");
				// return (false);
			   }
			if (dd1 == dd2)
			   {
				//alert("Equal Date");
				// return true;
                            if (hh1 > hh2)
                                {
                                 flag="more";
				 // alert("hour not ok");
                                 //  return (false);
                                }
                            if (hh1 < hh2)
                                {
                                  flag="less";
                                  // alert("hour  ok");
                                  //   return (false);
                                 }

                            if (hh1 == hh2)
                                {
                                  // alert("equal hour ");
                                  //   return true;

				  if(mmm1 > mmm2)
                                	{
                                	flag="more";
                                 // 	alert("minute not ok");
                                  //   	return (false);
                                 	}
                            	  if(mmm1 < mmm2)
                                	{
                                	flag="less";
                                  	// alert("minute  ok");
                                  //   	return (false);
                                 	}
				  if(mmm1 == mmm2)
                                    	  {
                                  	    // alert("equal minute ");
                                  	    //   return true;
                                           if (ss1 > ss2)
                                		{
                                		flag="more";
                                  		// alert("second not ok");
                                     	//	return (false);
                                 		}
                            	  	  if (ss1 < ss2)
                                	       {
                                	       flag="less";
                                  	     // alert("second ok");
                                     	  //    return (false);
                                                }
                                          if (ss1 == ss2)
                                                {
						 						//alert("equal time ");
                                     	      return 0;
                                                }
                                          }
                                   }

			   }
		}
	}

if (flag == "more")
    {
   // alert("From Date Greater than To date");
    return 2;
    }
else if (flag == "less")
    {
   // alert("From Date less than To date");
    return 1;
    }
return (false);
}


