/*
<!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;
}

//3 ---------------------------------------------------------------------------------------------------
//     to check begining space
//     parameters  (formname,indx,fieldname)
//     indx is the elements no eg: elements[indx]
//-----------------------------------------------------------------------------------------------------

function chkbeginspace(formname,indx,fieldname) {
     field = eval("document." + formname + ".elements[" + indx + "]");
        if (field.value.charAt(0) == ' ') {
             alert("First character of " + fieldname + " cannot be space");
             field.focus();
          return false;
        }
     else {
          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 checkEmailNew(emailFieldRef, mandatory)
{
     //lrTrim(emailFieldRef);
     var email = eval(emailFieldRef + '.value');
     if((mandatory && !(email.length))
      || (email.length && !(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('.') != 0
         && email.lastIndexOf('.') != (email.length - 1))))
     {
          alert('E-mail is Not Valid.');
          eval(emailFieldRef + '.focus()');
          return false;
     }
     afterAt = email.substring(email.indexOf('@') + 1);
     if(!(afterAt.indexOf('.') != 0 && afterAt.lastIndexOf('.') != (afterAt.length - 1)))
     {
          alert('E-mail is Not Valid.');
          eval(emailFieldRef + '.focus()');
          return false;
     }
     beforeAt = email.substring(0, email.indexOf('@'));
     if(!(beforeAt.indexOf('_') != 0 && beforeAt.indexOf('-') != 0 && beforeAt.indexOf('.') != 0 && beforeAt.lastIndexOf('.') != (beforeAt.length - 1)))
     {
          alert('E-mail is Not Valid.');
          eval(emailFieldRef + '.focus()');
          return false;
     }

     return true;
}

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;
                }
        }
       eval("document." + formname + "." + fieldname + ".focus()");
        return anyspacing;
}

//---------------------------------------------------------------------------------------------------
//     to check space
//     parameters  (formname,fieldname)
//-----------------------------------------------------------------------------------------------------

function chkspace(formname,fieldname,msgname) {
     field = eval("document." + formname +"."+ fieldname);
        if (field.value.indexOf(' ') >= 0) {
             alert(msgname + " cannot contain space");
             field.focus();
             return false;
        }
        else {
             return true;
        }
}

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) {
     windowFeatures = "";
     if (type == 'showContent') {
          window_width = 640;
          window_height = 370;
          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)
}

function openWindowCustom(type, page, width, height) {
     windowFeatures = "";
     if (type == 'showContent') {
          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)
}

// function for home page section
function openWindowHome(type, page, width, height) {
     windowFeatures = "";
     if (type == 'showContent') {
          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=0"
     }
     window.open(page,type,windowFeatures)
}

function openSearchWindow(type, page, top, left) {
     windowFeatures = "";
          window_width = 620;
          window_height = 350;
          window_top = top;
          window_left = left;
          windowFeatures += "width=" + window_width + ",height=" + window_height + ",top="
          windowFeatures += window_top
          windowFeatures += ",left="
          windowFeatures += window_left
          windowFeatures += ",scrollbars=1,status=1"
          window.open(page,type,windowFeatures)
}


//----------
//to find element number after giving its name
function find_element(formname,  element_name, i)  {
     with(formname)  {
     //alert(elements[i].name);
          if (elements[i].name == element_name){
               return i;
          }
          else {
               return -1;
          }
     }
     return true;
}

//**********************************************************************************
// Check whether the provided data contain only numeric values.
// Accepts the form name, field name and display name.
//**********************************************************************************
function isNumeric(formname, fieldname, displayname)
{
        itemvalue = eval("document." + formname + "." + fieldname + ".value");
        if(itemvalue.length <= 0)
        {
                alert("Please enter a numeric value in \"" + displayname + "\"");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        if(parseInt(itemvalue) <= 0)
        {
                alert("Please enter a numeric value greater than zero in \"" + displayname + "\"");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        if(itemvalue.indexOf(' ') >= 0)
        {
                alert("Only numbers are allowed in \"" + displayname + "\"");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        if(isNaN(itemvalue))
        {
                alert("Only numbers are allowed in \"" + displayname + "\"");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        return true;
}

    function isNoBeginingSpaces(formname, fieldname, displayname)
{
        itemname = eval("document." + formname + "." + fieldname + ".value");
        if(itemname.charAt(0) == ' ')
        {
                alert("First character of \"" + displayname + "\" cannot be space");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        else
        {
                return true;
        }
}


//**********************************************************************************
// Check whether any data is entered for processing.
// Accepts the form name, field name and the number non-empty items.
//**********************************************************************************
function isEmptySet(formname, fieldname, itemvalue)
{
        if(itemvalue > 0)
        {
                return true;
        }
        else
        {
                alert("No data available for processing.");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
}


//**********************************************************************************
// Check for blank spaces in a varible.  Used in validation for variables like file
// URLs, where no spaces are permitted.
// Accepts the form name, field name and display name.
//**********************************************************************************
function isNotSpaces(formname, fieldname, displayname)
{
        itemname = eval("document." + formname + "." + fieldname + ".value");
        if(itemname.indexOf(' ') >= 0)
        {
                alert("\"" + displayname + "\" cannot contain spaces");
                eval("document." + formname + "." + fieldname + ".focus()");
                return false;
        }
        else
        {
                return true;
        }
}


function OpenCustomWindow(turl, wd, ht, toolbar) {
        var windowFeatures =  '';

                window_width = wd;
                window_height = ht;
                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 += ',status=1'
                windowFeatures += ',scrollbars=yes'
                if(toolbar == "y")
                {
                         windowFeatures += ',toolbar=yes'
                }
                else
                {
                         windowFeatures += ',toolbar=no'
                }
window.open(turl,"newwin",windowFeatures);

}

function OpenWindow(wintype, turl, wd, ht) {
        var windowFeatures =  '';
        if(wintype == 'tablename') {
                window_width = 450;
                window_height = 300;
                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 += ',status=1'
                windowFeatures += ',scrollbars=yes'
        }
        if (wintype == 'general') {
          window_width = wd;
          window_height = ht;
          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=yes'
     }
        if (wintype == 'invoice') {
          window_width = wd;
          window_height = ht;
          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=yes,menubar=yes'
     }
window.open(turl,wintype,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>*/
