/*
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><SCRIPT LANGUAGE=JavaScript>
*/

//**********************************************************************************
//       Check wether only the characters specified are there in the string
// Accepts the string and the character to be checked (it is a string)
//                                                                A        -> for all alphabets (no case specification)
//                                                                N        -> for all numbers
//                                                                a - z        -> for all the lower case chars
//                                                                other just specify it
//**********************************************************************************
function checkAllowedChars(strToCheck, allowedChars)
{
        var acLen        = allowedChars.length;
        var stcLen        = strToCheck.length;
        strToCheck        = strToCheck.toLowerCase();
        var i;
        var j;
        var rightCount = 0;
        for(i = 0; i < acLen; i++)
        {
                switch(allowedChars.charAt(i))
                {
                case 'A':
                        for(j = 0; j< stcLen; j++)
                        {
                                rightCount += strToCheck.charAt(j) >= 'a' && strToCheck.charAt(j) <= 'z';
                        }
                        break;
                case 'N':
                        for(j = 0; j< stcLen; j++)
                        {
                                rightCount += strToCheck.charAt(j) >= '0' && strToCheck.charAt(j) <= '9';
                        }
                        break;
                default:
                        for(j = -1; -1 != (j = strToCheck.indexOf(allowedChars.charAt(i), j + 1)); rightCount++);
                        break;
                }
        }
        if(rightCount == stcLen)
        {
                return true;
        }
        return false;
}

//**********************************************************************************
//       Check wether the characters specified are not there in the string
// Accepts the string and the character to be checked (it is a string)
//                                                                A        -> for all alphabets (no case specification)
//                                                                N        -> for all numbers
//                                                                a - z        -> for all the lower case chars
//                                                                other just specify it
//**********************************************************************************
function checkNotAllowedChars(strToCheck, unAllowedChars)
{
        var acLen        = unAllowedChars.length;
        var stcLen        = strToCheck.length;
        strToCheck        = strToCheck.toLowerCase();
        var i;
        var j;
        var rightCount = 0;
        for(i = 0; i < acLen; i++)
        {
                switch(unAllowedChars.charAt(i))
                {
                case 'A':
                        for(j = 0; j< stcLen; j++)
                        {
                                if(strToCheck.charAt(j) >= 'a' && strToCheck.charAt(j) <= 'z')
                                {
                                        return false;
                                }
                        }
                        break;

                case 'N':
                        for(j = 0; j< stcLen; j++)
                        {
                                if(strToCheck.charAt(j) >= '0' && strToCheck.charAt(j) <= '9')
                                {
                                        return false;
                                }
                        }
                        break;

                default:
                        if(strToCheck.indexOf(unAllowedChars.charAt(i)) != -1)
                        {
                                return false;
                        }
                        break;
                }
        }
        return true;
}

function trimSpace(frmElement)
{
        var stringToTrim = frmElement.value;
        var len = stringToTrim.length;
        var front;
        var back;
        for(front = 0; front < len && (stringToTrim.charAt(front) == ' ' || stringToTrim.charAt(front) == '\n' || stringToTrim.charAt(front) == '\r' || stringToTrim.charAt(front) == '\t'); front++);
        for(back = len; back > 0 && back > front && (stringToTrim.charAt(back - 1) == ' ' || stringToTrim.charAt(back - 1) == '\n' || stringToTrim.charAt(back - 1) == '\r' || stringToTrim.charAt(back - 1) == '\t'); back--);

        frmElement.value = stringToTrim.substring(front, back);
}

function noChkBoxSelected(frmElement)
{
        var i;
        if(frmElement[1])
        {
                var len = frmElement.length;
                for(i = 0; i < len; i++)
                        if(frmElement[i].checked)
                                break;

                if(i < len)
                        return false;
                else
                        return true;
        }
        else
                return !(frmElement.checked);
}

function findSelectedButton(btns)
{
        if(!btns[1])
                return btns.checked? 0: -1;

        for(i = 0; i < btns.length; i++)
        {
                if(btns[i].checked)
                        return i;
        }

        return -1;
}

function setButton(btns, idx, val)
{
        idx = parseInt(idx, 10);
        if(!isNaN(idx))
                if(!btns[1])
                        btns.checked = val;
                else
                        btns[idx].checked = val;
}

function checkRedundantValues(frmElement)
{
        if(frmElement[1])
        {
                var cpy = new Array();
                for(i = 0; i < (frmElement.length - 1); i++)
                        if(frmElement[i].value != '')
                                for(j = i + 1; j < frmElement.length; j++)
                                        if(frmElement[i].value == frmElement[j].value)
                                                cpy[cpy.length] = i;
                if(cpy.length)
                        return cpy;
        }
        return null;
}

//**********************************************************************************//
//                      Counts the Number of Occurance of a character                                //
// Accepts the string and the character                                                                                                //
//**********************************************************************************//
function countOccurance(str, charecter)
{
        var j;
        var count;
        for(j = -1, count = 0; -1 != (j = str.indexOf(charecter, j + 1)); count++);
        return count;
}
function checkMail(formname, fieldname) {
        email = eval("document." + formname + "." + fieldname + ".value");
        if(email.length)
                if(!checkEmail(email, false))
                        return returnValue(formname, fieldname);

        return true;
}

function returnValue(formname, fieldname) {
        alert("Please enter a valid email address")
        eval("document." + formname + "." + fieldname + ".focus()");
        return false;
}

function checkEmail(email, mandatory)
{
        if(mandatory && !(email.length))
                return false;

        if(!(email.length))
                return true;

        if(!(checkAllowedChars(email, 'AN@-_.<>')
                && countOccurance(email, '@') == 1
                && email.indexOf('@') != 0
                && email.lastIndexOf('@') != (email.length - 1)
                && countOccurance(email, '<') <= 1
                && countOccurance(email, '>') <= 1
                && ((email.lastIndexOf('>') == (email.length - 1) && email.indexOf('<') != -1)
                        || (email.indexOf('>') == -1 && email.indexOf('<') == -1))
                && countOccurance(email, '.') >= 1
                && email.indexOf('..') == -1
                && email.indexOf('.') != 0
                && email.lastIndexOf('.') != (email.length - 1)))
        {
                return false;
        }

        afterAt = email.substring(email.indexOf('@') + 1);
        if(!(afterAt.indexOf('.') != 0 && afterAt.lastIndexOf('.') != (afterAt.length - 1)))
                return false;

        beforeAt = email.substring(0, email.indexOf('@'));
        if(!(beforeAt.indexOf('_') != 0
         && beforeAt.indexOf('-') != 0
         && beforeAt.indexOf('.') != 0
         && beforeAt.lastIndexOf('.') != (beforeAt.length - 1)))
        {
                return false;
        }
        return true;
}

/*
 * checkDateString(dateString, dateFormat, seperator)
 *
 * dateString        (string)        The string that is to validated.
 * dateFormat        (string)        The format in which the date is expected to be present in dateString. {dmy for ddmmyyyy, ymd for yyyymmdd}
 * seperator        (string)        The seperator that seperates the day, month & year from each other. Its possible values are - and /
 *
 * Returns Value:
 *  true if the date that you give is correct. Else it returns false.
 */

function checkDateString(dateString, dateFormat, seperator)
{
        var dmy = new Array();
        var day, month, year;

        dateFormat.toLowerCase();
        if(!checkAllowedChars(dateFormat, 'dmy'))
        {
                alert('checkDateString: Function usage error.\n\nInvalid date format.');
                return false;
        }

        if(seperator.length != 1 || (!checkAllowedChars(seperator, '/-')))
        {
                alert('checkDateString: Function usage error.\n\nInvalid seperator.');
                return false;
        }


        if(!checkAllowedChars(dateString, 'N' + seperator))
                return false;

        dmy = dateString.split(seperator);
        if(dmy.length == 3)
        {
                i = 0;
                while(dateFormat.length > 0)
                {
                        fmtLen = countOccurance(dateFormat, dateFormat.charAt(0));

                        switch(dateFormat.charAt(0))
                        {
                        case 'd':
                                day = dmy[i];
                                break

                        case 'm':
                                month = dmy[i];
                                break

                        case 'y':
                                year = dmy[i];
                                break
                        }
                        dateFormat = dateFormat.substring(fmtLen);
                        i++;
                }

                if(!(day.length > 0 && month.length > 0 && year.length > 0))
                        return false;

                return _checkDate(day, month, year);
        }
        return false;
}

/*
 * checkDate(day, month, year)
 *
 * As you expect day, month and year are the strings that contains the corresponding values.
 *
 * Returns Value:
 *  true if the date that you give is correct. Else it returns false.
 */

function checkDate(day, month, year)
{
        if(!checkAllowedChars(day + month + year, 'N'))
                return false;

        if((day.length <= 0) || (month.length <= 0) || (year.length <= 0))
                return false;

        return _checkDate(day, month, year);
}

function _checkDate(day, month, year)
{
        year *= 1;
        if(year <= 0)
                return false;

        month *= 1;
        if(!((month > 0) && (month < 13)))
                return false;

        var daysInMonth = new Array();
        daysInMonth[ 0] = 31;                                        //Jan
        daysInMonth[ 1] = isLeap(year) == true? 29: 28;        //Feb
        daysInMonth[ 2] = 31;                                        //Mar
        daysInMonth[ 3] = 30;                                        //Apr
        daysInMonth[ 4] = 31;                                        //May
        daysInMonth[ 5] = 30;                                        //Jun
        daysInMonth[ 6] = 31;                                        //Jul
        daysInMonth[ 7] = 31;                                        //Aug
        daysInMonth[ 8] = 30;                                        //Sep
        daysInMonth[ 9] = 31;                                        //Oct
        daysInMonth[10] = 30;                                        //Nov
        daysInMonth[11] = 31;                                        //Dec

        day *= 1;
        if(!((day > 0) && (day <= daysInMonth[month - 1])))
                return false;

        return true;
}

function isLeap(year)
{
        if((year % 4) == 0)
        {
                if((year % 100) == 0)
                {
                        if((year % 400) == 0)
                                return true;
                        else
                                return false;
                }
                return true;
        }
        return false;
}


/*
 * checkDropDown(dropDown, alertMsg, moveNext)
 *
 * dropDown                (object)        The reference to the dropdown object.
 * alertMsg                (string)        The message to be alerted on finding error. If it is null('') then the message will not be displayed in case of an error.
 * moveNext                (boolean)        Says whether to move to the next option on error.
 *
 * Returns Value:
 *  true if there was no error. Else it returns false.
 *
 * Remark
 *  The options that are not to be allowed to select by the user should be given the value null ('').
 */

function checkDropDown(dropDown, alertMsg, moveNext)
{
        if(dropDown.options[dropDown.selectedIndex].value == '')
        {
                if(alertMsg != '')
                        alert(alertMsg);

                if(moveNext)
                        cddMoveForward(dropDown)

                return false;
        }
        return true;
}

function cddMoveBack(dropDown)
{
        var i;
        for(i = dropDown.selectedIndex - 1; i >= 0 && dropDown.options[i].value == ''; i--);
        if(i < 0)
                dropDown.options[dropDown.selectedIndex].selected = false;
        else
                dropDown.options[i].selected = true;
}

function cddMoveForward(dropDown)
{
        var i;
        for(i = dropDown.selectedIndex + 1; i < dropDown.options.length && dropDown.options[i].value == ''; i++);
        if(i >= dropDown.options.length)
                cddMoveBack(dropDown);
        else
                dropDown.options[i].selected = true;
}


/*
 * formFocus(frm)
 *
 * frm                (object)        The reference to the form object to be focused.
 *
 * Remark
 *  Passes the focus to the first element in the given form.
 */

function formFocus(frm)
{
        var fieldLen;
        if(frm != null && frm.elements)
        {
                fieldLen = frm.elements.length;
                var eleType;
                for(i = 0; i < fieldLen; i++)
                {
                        eleType = frm.elements[i].type;
                        if(eleType == 'select-multiple' || eleType == 'select-one' || eleType == 'text' || eleType == 'textarea' || eleType == 'checkbox' || eleType == 'radio')
                        {
                                frm.elements[i].focus();
                                break;
                        }
                }
        }
}

// Function to check whether an element is null or contain initial spaces.
function spaceCheck(formname, fieldname) {
        anyspacing = true;
        itemlength = eval("document." + formname + "." + fieldname + ".value.length");
        itemvalue = eval("document." + formname + "." + fieldname + ".value");
        for(i = 0; i < itemlength; i++) {
                if(itemvalue.charAt(i) != ' ') {
                        anyspacing = false;
                        break;
                }
        }
        return anyspacing;
}

//******************************************
//Function to print the date as a dropdown
//First 3 Parameters are day, Month and Year Name
//Last 3 Parameters are value of day, month and year to be selected
//******************************************
function printDate(fday, fmonth, fyear, day1, month1, year1) {

        document.write('<FONT CLASS="frm"><SELECT NAME="' + fday + '" WIDTH="3" SIZE="1" CLASS="frm">');
        //document.write('<OPTION VALUE="">Day</OPTION>');
        for(var i=1;i<=31;i++) {
            if (i == day1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + i + '</OPTION>');
            }else {
               document.write('<OPTION VALUE="' + i + '" >' + i + '</OPTION>');
            }
        }
        document.write('</SELECT></FONT><FONT CLASS="frm"><SELECT NAME="' + fmonth + '" WIDTH="5" SIZE="1" CLASS="frm">');
        //document.write('<OPTION VALUE="">Month</OPTION>');
        var mon = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
        for(i=1;i<=12;i++) {
            if (i == month1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + mon[i-1] + '</OPTION>');
            }else {
                document.write('<OPTION VALUE="' + i + '">' + mon[i-1] + '</OPTION>');
            }

        }
        document.write('</SELECT></FONT><FONT CLASS="frm"><SELECT NAME="' + fyear + '" SIZE="1" WIDTH="5" CLASS="frm">');
        //document.write('<OPTION VALUE="">Year</OPTION>');
        for(i=1900;i<=2100;i++) {
            if (i == year1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + i + '</OPTION>');
            }else {
                document.write('<OPTION VALUE="' + i + '">' + i + '</OPTION>');
            }

        }
        document.write('</SELECT></FONT>');
}

function printDate1(fday, fmonth, fyear, day1, month1, year1) {

        document.write('<FONT CLASS="frm"><SELECT NAME="' + fday + '" WIDTH="3" SIZE="1" CLASS="frm">');
        document.write('<OPTION VALUE="0">Day</OPTION>');
        for(var i=1;i<=31;i++) {
            if (i == day1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + i + '</OPTION>');
            }else {
               document.write('<OPTION VALUE="' + i + '" >' + i + '</OPTION>');
            }
        }
        document.write('</SELECT></FONT><FONT CLASS="frm"><SELECT NAME="' + fmonth + '" WIDTH="5" SIZE="1" CLASS="frm">');
        document.write('<OPTION VALUE="0">Month</OPTION>');
        var mon = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
        for(i=1;i<=12;i++) {
            if (i == month1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + mon[i-1] + '</OPTION>');
            }else {
                document.write('<OPTION VALUE="' + i + '">' + mon[i-1] + '</OPTION>');
            }

        }
        document.write('</SELECT></FONT><FONT CLASS="frm"><SELECT NAME="' + fyear + '" SIZE="1" WIDTH="5" CLASS="frm">');
        document.write('<OPTION VALUE="0">Year</OPTION>');
        for(i=1900;i<=2100;i++) {
            if (i == year1) {
                document.write('<OPTION VALUE="' + i + '" SELECTED="SELECTED">' + i + '</OPTION>');
            }else {
                document.write('<OPTION VALUE="' + i + '">' + i + '</OPTION>');
            }

        }
        document.write('</SELECT></FONT>');
}

function isEmpty(formname, fieldname) {
        itemvalue = eval('document.' + formname + '.' + fieldname + '.value');
        if(itemvalue.length <= 0) {
                return true;
        }
        icount = 0;
        for(i=0;i<itemvalue.length;++i) {
                if(itemvalue.charAt(i) != ' ') {
                        ++icount;
                }
        }
        if(icount > 0) {
                return false;
        }
        else {
                return true;
        }
}

function openWindow(type, page, width, height) {
       windowFeatures = "";
       if(type == 'print'){ windowFeatures += "menubar=1,";}
          window_width = width;
          window_height = height;
          window_top = (screen.availHeight-window_height)/2
          window_left = (screen.availWidth-window_width)/2
          windowFeatures += "width=" + window_width + ",height=" + window_height + ",top="
          windowFeatures += window_top
          windowFeatures += ",left="
          windowFeatures += window_left
          windowFeatures += ",scrollbars=1"
       window.open(page,type,windowFeatures)
}
/*Please don't delete this line </SCRIPT></HEAD><BODY STYLE="background-color:black;color:gray">
<FORM name=form1 onSubmit="alert(checkDateString(document.form1.dateInput.value, document.form1.dateFormat.value, document.form1.seperator.options[document.form1.seperator.selectedIndex].value)); return false"><TABLE><TR><TD ALIGN=RIGHT>Date:</TD><TD ALIGN=LEFT><INPUT STYLE="background-color:black;color:gray;border:1 solid" TYPE=TEXT name=dateInput></TD></TR><TR><TD ALIGN=RIGHT>Date Format:</TD><TD ALIGN=LEFT><INPUT STYLE="background-color:black;color:gray;border:1 solid" TYPE=TEXT name=dateFormat></TD></TR><TR><TD ALIGN=RIGHT>Seperator:</TD><TD ALIGN=LEFT><SELECT STYLE="background-color:black;color:gray;border:1 solid" NAME=seperator SIZE=1><OPTION VALUE='/'>/</OPTION><OPTION VALUE='-'>-</OPTION></SELECT></TD></TR><TR><TD ALIGN=CENTER COLSPAN=2><INPUT STYLE="background-color:black;color:gray;border:1 solid" TYPE=submit onMouseOver="this.style.backgroundColor='#555555';this.style.color='#bbbbbb'" onMouseOut="this.style.backgroundColor='black';this.style.color='gray'"></TD></TR></TABLE></FORM>
</BODY></HTML>*/

