/********************************************************************
 * CommonFunctions.js
 *
 * @version :  1.00 16/01/2009	Initial  version
 *
 * @author Infosys
 *********************************************************************
 */
numberCharSet = "0123456789";
alphabets = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
italianAlphabets = "ÀÁÈÉÌÍÒÓÙÚàáèéìíòóùú";
alphaNumericCharSet = italianAlphabets + " _0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/?'.";

nameCharSet = italianAlphabets + alphabets + " -'";
houseNumCharSet = numberCharSet + italianAlphabets + alphabets + " #-,/.'";
houseNameCharSet = numberCharSet + italianAlphabets + alphabets + ",.-'/ ";
townCharSet = italianAlphabets + alphabets + ".-' ";
countyCharSet = italianAlphabets + alphabets;
addressCharSet = numberCharSet + italianAlphabets + alphabets + " ()#&-'.,/";
giftMessageCharSet=numberCharSet+alphabets+",.-' /#";
addressLine1CharSet = numberCharSet + italianAlphabets + alphabets + ".,-'/ ";
postCodeCharSet = numberCharSet;


floatCharSet  = ".0123456789";
firstNameCharSet = italianAlphabets + alphabets + " -'";
middleInitialCharSet = alphabets + italianAlphabets;
nameOnCardCharSet = firstNameCharSet;
titleCharSet = italianAlphabets + alphabets + " .";
passwordCharSet = numberCharSet + italianAlphabets + alphabets + "`¬!£$%^&*()_+[]{};'#:~\|,./<>?\"";
phoneCharSet = " 0123456789()-+#/";
invoiceNumberCharSet = italianAlphabets + " -/0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
maidenNameCharSet = italianAlphabets + alphabets;
businessNameCharSet = firstNameCharSet + numberCharSet + " &.!)(-@'";


/*The following are the various characters allowed in the Description fields.*/
alphabets = italianAlphabets + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
numbers = "0123456789";
brackets = "{}[]()";
operators = "+-=<>/*";
currency = "$¢£¥€";
others = "%^!#&.@,;_'?`~|¡¦¨©® ";
promoothers = "%^!#&.@,;_'?`~|¡¦¨©®: ";
descriptionCharSet = alphabets+numbers+brackets+operators+currency+others;
promodescriptionCharSet = alphabets+numbers+brackets+operators+currency+promoothers;
keywordCharSet = alphabets+numbers+","+" ";

CARD_NUMBER_LENGTH = 11;
PASS_NUMBER_LENGTH = 4;
ACCOUNT_NUMBER_LENGTH = 8;
PASSWORD_LENGTH = 7;

function vaticanCityVatCheck(emailch){
	   var email_char=emailch;
	   if(((email_char >= "0")&&(email_char <= "9" ))||((email_char >= "A")&&(email_char <= "Z" ))||((email_char >= "a")&&(email_char <= "z" )) ||(email_char=='-')||(email_char=='/')||(email_char=='&')||(email_char==' '))
	   {
			return true;
	   }
	   else
	   {		
			return false;
	   }
        }
function isValidCardNum(field)
{
        if (fnTrimMiddleAll(field).length == CARD_NUMBER_LENGTH )

        return (true);

        else return (false);

}

function isValidPassNum(field)
{
        if (fnTrimMiddleAll(field).length == PASS_NUMBER_LENGTH )

        return (true);

        else return (false);

}
function isValidAcctNum(field)
{
        if (fnTrimMiddleAll(field).length == ACCOUNT_NUMBER_LENGTH )

        return (true);

        else return (false);

}
function isValidPswdLen(field)
{
        if (field.length >= PASSWORD_LENGTH )

        return (true);

        else return (false);

}
function isEmpty(obj)
{
	strValue = fnTrim(obj.value);
	if (strValue == "") return (true);
	else return (false);
}

function fnTrimMiddleToSingle(fieldValue)
{
        if (fieldValue == null) {
        return;
        }
        var cnt;
        var len;
        var str=fieldValue.toString();
        var strTrimmed = "";
        var chSelected= '';
        var blSpaceAdded = false;

        str  = fnTrim(str);
        len = str.length;

        for(cnt=0;cnt < len;cnt++)
        {

                chSelected=str.charAt(cnt);

                if (blSpaceAdded == false)
                {
                        strTrimmed+= chSelected;
                        if (chSelected == " ") blSpaceAdded = true;

                }

                else if (chSelected != " ")
                {
                        strTrimmed+= chSelected;
                        blSpaceAdded = false;

                }

        }



        return (strTrimmed);

}//end of fnTrimMiddleToSingle

function fnTrimMiddleAll(fieldValue)
{


        if (fieldValue == null) {
        return;
        }
        var cnt;
        var iCountTrim=0;
        var len;
        var fVal=fieldValue.toString();
        var strTrimmed = "";
        var str = fVal;
        var chSelected= '';
        len = fVal.length;

        for(cnt=0;cnt < len;cnt++) {
           chSelected=str.charAt(cnt);
           if (chSelected != " ")
           {
                strTrimmed+= chSelected;
                iCountTrim++;
           }


        }

        return (strTrimmed);



}//end of fnTrimMiddleAll


function fnTrim(fieldValue)
{
          var cnt;
          var len;
          if (fieldValue == null) {
                return;
          }
          var fVal=fieldValue.toString();

          // Obtain the length and the string
          len = fVal.length;
          str = fVal;

          //Obtain the index at which the string begins
          begin = -1;
          for(cnt=0;cnt < len;cnt++)
          {
           if (str.charAt(cnt) == " ")
            begin = cnt;
           else
            break;
          }

          // Extract the entire length of the string from the last leading space
          str = str.substring(begin+1,len);
          len = str.length;
          end = len;

          // Locate the first trailing space

          for(cnt=len-1;cnt>=0;cnt--)
          {
           if (str.charAt(cnt) == " ")
            end = cnt;
           else
            break;
          }
          // Extract the actual string
          str = str.substring(0,end);
          return str;

 }//end of fnTrim



function validateNumber(fieldValue)
{
        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (numberCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);
} //end of validateNumber

function validateFloat(fieldValue)
{
        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (floatCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);
} //end of validateFloat

function validateDecimal(fieldValue) {
        var allValid = true;
        if ((fieldValue*100) > 99999999999) {
                alert(commonFunctions9NumberError);
                allValid = false;
                return(allValid);
        }
        return(allValid);
}

function validateAlphaNumeric(fieldValue)
{

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (alphaNumericCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateAlphaNumeric

function validatePassword(fieldValue)
{

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (alphaNumericCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validatePassword


// Added for Rewards.
function validateKeywordCharSet(fieldValue)
{

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (keywordCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

} // end of validateKeywordCharSet

function validateInvoiceNumber(fieldValue)
{

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (invoiceNumberCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateInvoiceNumber



function validatePasswordForSpace(fieldValue)
{


        var allValid = true;
        var temp;
        var space = " ";

        for (var i=0; i<fieldValue.length; i++)

        {


                temp = "" + fieldValue.substring(i, i+1);
                if (space.indexOf(temp) != "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validatePassword


function validateAddress(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (addressCharSet.indexOf(temp) == "-1")
                {

                        allValid = false;

                        return(allValid);
                }

        }

        return(allValid);

}//end of validateAddress

function validateAddressLine1(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (addressLine1CharSet.indexOf(temp) == "-1")
                {

                        allValid = false;

                        return(allValid);
                }

        }

        return(allValid);

}//end of validateAddress

function validateName(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (nameCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateName

function validateInitial(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (middleInitialCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateName

function validateFirstName(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (firstNameCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateFirstName

function validateNameOnCard(fieldValue){
	/*if (!fieldValue.match(/[a-zA-ZÀÁÈÉÌÍÒÓÙÚàáèéìíòóùú]/)) {
		return false;
	} else {
		fieldValue = fnTrim(fieldValue);
	}*/
	fieldValue = fnTrim(fieldValue);

	var allValid = true;
	var temp;

	for (var i=0; i<fieldValue.length; i++)

	{

			temp = "" + fieldValue.substring(i, i+1);

			if (nameOnCardCharSet.indexOf(temp) == "-1")
			{
					allValid = false;
					return(allValid);
			}

	}

	return(allValid);

}//end of validateFirstName


function validateTitle(fieldValue)
{


        fieldValue = fnTrim(fieldValue);
        
        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (titleCharSet.indexOf(temp) == "-1")
                {
                		//alert(i);
                		//alert(fieldValue);
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateTitle

function validateMiddleInitial(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (alphabets.indexOf(temp) == "-1")
                {
                    allValid = false;
                    return(allValid);
                }

        }

        return(allValid);

}//end of validateFirstName

/*BEGIN CR89*/
function validateBusinessName(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (businessNameCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateBusinessName
/*END CR89*/

/***************************************************************************************
* Function for Automatically converting Name On Card to Upper Case
****************************************************************************************/
function nameOnCardToUpperCase(form){
       form.nameOnCard.value = form.nameOnCard.value.toUpperCase();
}

function validateMaidenName(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (maidenNameCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateMaidenName


function validateHouseName(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (houseNameCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateHouseName


function validatePhone(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (phoneCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);


}//end of validatePhone





function validateHouseNum(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (houseNumCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateHouseNum




function validateCity(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (townCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateCity

function validateCounty(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (countyCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validateCounty

function validatePostalCode(fieldValue)
{

        fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (postCodeCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);

}//end of validatePostalCode
function validateDescription(fieldValue) {

fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (descriptionCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);
}// end of validateDescription

function promovalidateDescription(fieldValue) {

fieldValue = fnTrim(fieldValue);

        var allValid = true;
        var temp;

        for (var i=0; i<fieldValue.length; i++)

        {

                temp = "" + fieldValue.substring(i, i+1);

                if (promodescriptionCharSet.indexOf(temp) == "-1")
                {
                        allValid = false;
                        return(allValid);
                }

        }

        return(allValid);
}// end of promovalidateDescription


function fnSeparateAngleBrackets(obj){

        if (isEmpty(obj)) {
                return(true);
        }

        var newValue = "";
        var strValue = obj.value;
        var iLength = strValue.length;
        for (var iCount =0 ;iCount <iLength;iCount++) {
                if (strValue.charAt(iCount) == '<' || strValue.charAt(iCount) == '&'){
                        newValue += strValue.charAt(iCount)+" ";
                }else {
                        newValue += strValue.charAt(iCount);
                }
        }
        obj.value = fnTrimMiddleToSingle(newValue);

} //end of fnSeparateAngleBrackets

/*This function checks for special character in the input field.
and pops up suitable message if special characters are found.
*/
function chkSpecialCharacter(inputString){

      var inputVal = fnTrim(inputString.value);
      if(inputVal.search(/[^a-z.A-Z*0-9_\-]/) >= 0)
      {
              alert (commonFunctionsCharacterSetError);
              return false;
      }
      return true;
}

function lookForNewInstanceOfBrowser()
{


        if(getCookie("lastValue")!=document.CSRSTATICFORM.lastValue.value)
        {

                trapMouseClick();

        }
        else
        {

                document.CSRSTATICFORM.lastValue.value=Math.random();
                setCookie("lastValue",document.CSRSTATICFORM.lastValue.value);
                setTimeout(lookForNewInstanceOfBrowser,200);

        }

}


function trapMouseClick ()
{

        document.onmousedown = mouseDown
        document.onmousemove = mouseMove
        document.onmouseup = mouseUp
        document.onkeydown=mouseDown
        document.onkeyup=mouseUp
        window.onunload=unloadWindow


}

function unloadWindow()
{
        denyRefresh();
        window.history.clear();
        return false;
}


function denyRefresh()
{
	alert(commonFunctionsWindowDuplicated);
	//document.write("<html><head><title>Collector</title></head> <body bgcolor='#C7D6EE' ><table width='100%' height='100%' border='0' >  <tr align='left' valign='top'>   <td  class='errorMsg' valign='center' align='center'><h2>Please operate on the new window <br><h5>     </td>  </tr>      </TABLE></BODY></HTML>");
}

function mouseDown(e)
{

        alert(commonFunctionsWindowDuplicated);
        return false;
}
function mouseMove(e)
{

        return false;
}
function mouseUp(e)
{

        return false;
}


function setCookie(NameOfCookie, value, expiredays)
{
        var ExpireDate = new Date ();
        ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
        document.cookie = NameOfCookie + "=" + escape(value) +  ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

function getCookie(NameOfCookie)
{

        if (document.cookie.length > 0)
        {

                begin = document.cookie.indexOf(NameOfCookie+"=");
                if (begin != -1)
                {
                        begin += NameOfCookie.length+1;
                        end = document.cookie.indexOf(";", begin);
                        if (end == -1) end = document.cookie.length;
                        return unescape(document.cookie.substring(begin, end));
                }


        }
        return null;
}



// added for date validation
function chkDOB(objName) {
var strDatestyle = "EU";  //European date style
var strDate="";
var strDateArray;
var strDay ="";
var strMonth ="";
var strYear="";
var intday="";
var intMonth="";
var intYear="";
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";

/* Ensure that the Date is not an EMPTY field */
strDate = datefield;
if (strDate.indexOf("/") != -1 || strDate.indexOf(".") != -1 || strDate.indexOf("-") != -1) {
        strDate = fnTrimMiddleAll(strDate);
} else {
        strDate = fnTrimMiddleToSingle(strDate);
}

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.substring(0, 2);
                strMonth = strDate.substring(2, 2);
                strYear = strDate.substring(4);
        }
}
if (!validateNumber(strYear) || !validateNumber(strDay)) {
        return (false);
}
if (strYear.length > 4) {
        return(false);
}

var parsedYear  = parseInt(strYear,10);
if(parsedYear<100)
{
        parsedYear += 2000;
        strYear = new String(parsedYear);
}

// US style
if (strDatestyle == "US") {
        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;
        }

}

}

if (strDatestyle == "US") {
        datefield = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
} else {
        datefield = intday + "/" + intMonth + "/" + strYear;
}

return true;

} //end of chkdate

//function to select the date object on click

function dateSelect(curobj)
    {
    curobj.select();
    return true;
    }

// function for Auto Tab

var excludedKeyCodes =  new Array(0,8,9,16,17,18,37,38,39,40,46);

function autoTab(prevObj,curObj,nextObj)
   {
      len=2;
          fld = curObj;
      var keyCode = event.keyCode;
      if(fld.value.length >= len && !excludedKey(keyCode))
      {
         fld.value = fld.value.slice(0, len);
                 nextObj.focus();
                 nextObj.select();
      }
      return true;
   }

 function excludedKey(Kcode)
   {
      var found = false;
      var i = 0;
      while(!found && i < excludedKeyCodes.length)
      if(excludedKeyCodes[i] == Kcode)
         found = true;
      else
         i++;

      return found;
   }


function isAlphaNumeric(emailch)
{
   var email_char=emailch;
   if(((email_char >= "0")&&(email_char <= "9" ))||((email_char >= "A")&&(email_char <= "Z" ))||((email_char >= "a")&&(email_char <= "z" )))
   {
        return true;
   }
   else
   {
        return false;
   }


}

function LeapYear(intYear) {

        if (intYear % 100 == 0) {
                if (intYear % 400 == 0) { return true; }
        } else {
                if ((intYear % 4) == 0) { return true; }
        }
        return false;
}

function trimUrl(url){

var temp;
var quote="\"";
var result="";
var boolFlag = 0;
var incre = 0;

for (var i=0; i<url.length; i++)

        {

                temp = "" + url.substring(i, i+1);
        if (quote.indexOf(temp) == "-1")
                {

                } else {

                  if(incre == 1){
                    boolFlag=0;
                  }

                }

         if(boolFlag==1){

                  result = result + temp;

              }

                if (quote.indexOf(temp) == "-1")
                {

                } else {


                           boolFlag = 1;
                           incre = incre + 1;

                           if(incre == 2){

                            break;
                           }

                           }

        }

if (result == ""){
 result = url;

}


 return result;

}




function openWin(loc){
        storePopupWindow=window.open(loc,'FindHomeStore','width=800,height=500,left=60,top=60,menubar=yes,toolbar=yes,scrollbars=yes' );
}
//++ AMITSMILE CR 70 Changes Begin
function fnGetBusCategories(form)
{

    servletUrlRefresh = trimUrl(servletUrlRefresh);
    form.action = servletUrlRefresh;
    form.submit();

}
//-- AMITSMILE CR 70 Changes End



/*CR_9010 Starts here*/
function validatePasswordCharacters(fieldValue)
{
	var allValid = true;
	var temp;
	for (var i=0; i<fieldValue.length; i++)
	{
		temp = "" + fieldValue.substring(i, i+1);
		if (passwordCharSet.indexOf(temp) == "-1")
		{
			        	allValid = false;
			 		alert(temp + " " + commonFunctionsPasswordCharacterError);
			 		return(allValid);
		}
	}

	return(allValid);
}

/*CR_9010 Ends here*/

/*CR14111 start here*/
function fnIsChecked(radioObject)
{
	var flag = true;
	 for (var i = 0; i < radioObject.length; i++){


		   if(radioObject[i].checked == true)
		     flag = false;
	      	    }
	      	    return flag;
}
/*CR14111 ends here*/

function validateAge(targetForm){
	var inputDate = new Date();
	inputDate.setFullYear(parseInt(document.getElementById('dateOfBirthYear').value),parseInt(document.getElementById('dateOfBirthMonth').value)-1,parseInt(document.getElementById('dateOfBirthDay').value));
	var myDate = new Date();
	if(myDate.getMonth() == 1 && myDate.getDay() >28)
			myDate.setDate(28);
	myDate.setYear(myDate.getYear() -18);
	var minAge = new Date();
	minAge.setFullYear(1900,0,1);
	if(Date.parse(inputDate) > Date.parse(myDate) ){
		alert(commonFunctionsMinimumAgeError);
		document.getElementById('dateOfBirthDay').focus();
		return false;
	} else if(Date.parse(inputDate) < Date.parse(minAge) ){
		alert(commonFunctionsDatePre1900);
		document.getElementById('dateOfBirthDay').focus();
		return false;
	} else{
		return true;
	}
}


function zeroPad(val, len){
	var output = val;
	while(output.length < len)
		output = '0'+output;
	return output;
}



function checkForZero(value){
	if(value != null && value != ''){
		if(value == 0){
				return true;
		}
	}
}

function validateGiftMessage(fieldValue){
    fieldValue = fnTrim(fieldValue);
    var allValid = true;
    var temp;
    for (var i=0; i<fieldValue.length; i++){
            temp = "" + fieldValue.substring(i, i+1);
            if (giftMessageCharSet.indexOf(temp) == "-1"){
                    allValid = false;
                    return(allValid);
            }
    }
    return(allValid);
}

function validAddressDetails(addressLine1,houseNum,houseName,postCode,city,county){
	
	if(isEmpty(addressLine1)){
	        alert(streetmandatory);
                addressLine1.focus();
                return false;
	}	
	if(isEmpty(houseNum)){
                alert(houseNumbermandatory);
                houseNum.focus();
                return false;
	}	
	if(isEmpty(city)){
                alert(townmandatory);
                city.focus();
                return false;
	}
	
	if (  !validateAddressLine1(addressLine1.value)) {
		fieldFocus(addressLine1);
		alert(streetinvalid);
		return false;
	}
	if (  !validateHouseNum(houseNum.value)) {
		fieldFocus(houseNum);
		alert(houseNumberinvalid);
		return false;
	}

	if (  !validateHouseName(houseName.value)) {
		fieldFocus(houseName);
		alert(houseNameinvalid);
		return false;
	}

	if (  !validatePostalCode(postCode.value)) {
		fieldFocus(postCode);
                alert(postCodeinvalid);
                return false;
        }
       	if (  !validateCity(city.value)) {
		fieldFocus(city);
		alert(towninvalid);
		return false;
        }
	if (  !validateCounty(county.value)) {
		fieldFocus(county);
		alert(countyinvalid);
		return false;
        }
        return true;
}

function validateNameDetails(prefix, firstName, middleInitial,lastName){
	
	if(prefix.value == 'Altro'){
		var otherTitle=document.getElementById('deliveryDetails.otherPrefix');
		if(otherTitle.value==''){
			alert(otherTitleReqd);
			document.getElementById('deliveryDetails.otherPrefix').focus();
			return;
		}
	}else if(prefix.value =='' || prefix.value == '0'){
		alert(activationTitleError);
		document.getElementById('deliveryDetails.prefix').focus();
		return;
	}
	if(isEmpty(firstName)) {
		var firstNameReqd = commonFunctionsFirstNameError;
		alert(firstNameReqd);
		firstName.focus();
		return false;
	}
	if(isEmpty(lastName)) {
		var lastNameReqd = commonFunctionsSurnameError;
		alert(lastNameReqd);
		lastName.focus();
		return false;
	}
	if(!validateName(firstName.value)){
		alert(firstNameInvalid);
		fieldFocus(firstName);
		return false;
	}
		
		// SAL NEW ALERT FOR ADDRESS AND CAP
	var collectorpostCode = isEmpty(document.getElementById('deliveryDetails.address.postCode'));
	if(collectorpostCode){
		alert(activationPostCodeError);
		document.getElementById('deliveryDetails.address.postCode').focus();
		return;
	}else{
		document.getElementById('deliveryDetails.address.postCode').value = fnTrimMiddleToSingle(document.getElementById('deliveryDetails.address.postCode').value);
	}
	
	var collectorhouseNumber = isEmpty(document.getElementById('deliveryDetails.address.houseNumber'));
	if(collectorhouseNumber){
		alert(activationHouseNumberError);
		document.getElementById('deliveryDetails.address.houseNumber').focus();
		return;
	}else{
		document.getElementById('deliveryDetails.address.houseNumber').value = fnTrimMiddleToSingle(document.getElementById('deliveryDetails.address.houseNumber').value);
	}
	
	
	var collectorcounty = isEmpty(document.getElementById('deliveryDetails.address.county'));
	if(collectorcounty){
		alert(activationCountyError);
		document.getElementById('deliveryDetails.address.county').focus();
		return;
	}else{
		document.getElementById('deliveryDetails.address.county').value = fnTrimMiddleToSingle(document.getElementById('deliveryDetails.address.county').value);
	}
	
		// END SAL NEW ALERT FOR ADDRESS AND CAP
	
	if(!validateInitial(middleInitial.value)) {
		alert(middleInitialInvalid);
		fieldFocus(middleInitial);
		return false;
	}
	if(!validateName(lastName.value)) {
		alert(surNameInvalid);
		fieldFocus(lastName);
		return false;
	}
	return true;
}

function fieldFocus(obj){
	obj.select();
	obj.focus();
}
