/********************* Expand Collapse Boxes******************/
var _STR_UNDEFINED = "undefined";

var _DECIMAL_CHARACTERS     = "0123456789.";
var _ERROR_INVALID_CURRENCY = "Invalid Currency.";

var _CHARACTERS_IN_A_PHONE_NUMBER = " 0123456789-()[]xX+";
var _ERROR_INVALID_PHONE_NUMBER   = "Invalid phone number.";
var _STR_SHOULD_BE                = " should be ";
var _STR_IS_INVALID               = " is invalid.";
// changed to add .tif file formats
var arrFileExtns = new Array("doc", "txt", "rtf", "pdf", "tif");
var arrCmntsFileExtns=new Array("doc", "txt", "rtf", "pdf", "tif" , "xls");
// ended



function expandCollapse(objName, objImg) { 
    var obj 	   = MM_findObj(objName);
    var objImg	   = MM_findObj(objImg);
    var strImagePath = objImg.src;
    var intIndex     = strImagePath.lastIndexOf("/");
    strImagePath     = strImagePath.substr(0, intIndex)

    if(obj.style.display == "none") {
	    blockVal = "block";
	    imgVal   = strImagePath + "/Icon_Collapse.gif";
	    altVal   = "Collapse";
    } else {
	    blockVal = "none";
	    imgVal   = strImagePath + "/Icon_Expand.gif";
	    altVal   = "Expand";
    }
    eval("obj.style.display='" + blockVal + "'");
    eval("objImg.src='" + imgVal + "'");
    eval("objImg.alt='" + altVal + "'");
}

function MM_findObj(n, d) {
    var p,i,x;  

    if(!d) {
      d = document; 
    }

    if((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p+1)].document; 
        n = n.substring(0,p);
    }

    if(!(x = d[n])&& d.all) {
        x = d.all[n]; 
    }

    for (i=0; (!x && i<d.forms.length); i++) {
        x = d.forms[i][n];
    }

    for(i=0; (!x&&d.layers && i<d.layers.length); i++) {
        x = MM_findObj(n,d.layers[i].document);
    }

    if(!x && document.getElementById) {
        x = document.getElementById(n); 
    }

    return x;
}

function selectDeselect(objChkMain, objChkOthers) {
  var blnState = objChkMain.checked;

  if(objChkOthers) {
    if(objChkOthers.length) {
      for(var intI=0; intI<objChkOthers.length; intI++) {
        objChkOthers[intI].checked = blnState;
      }
    } else {
      objChkOthers.checked = blnState;
    }
  }
}

function deselectMain(objChkMain, objChkOthers) {
  objChkMain.checked = objChkOthers.checked;
}

/*******************************************/
/* Function for popup*/

function openPopUpWindow(URL,winName,screenWidth,screenHeight,otherProps) {
   var winParam;   

   if (navigator.appName == "Microsoft Internet Explorer") {
     xPlace = (screen.width - screenWidth)/2;
     yPlace = (screen.height - screenHeight)/4; 
     winParam = "width="+screenWidth+",height="+screenHeight+",left=" +xPlace+",top="+yPlace+","+otherProps;
  }

  if (navigator.appName == "Netscape") {
     xPlace = (window.outerWidth - screenWidth)/2;
     yPlace = (window.outerHeight - screenHeight)/4; 
     winParam = "width="+screenWidth+",height="+screenHeight+",left=" +xPlace+",top="+yPlace+","+otherProps;
  }

  var newWindow = window.open(URL,winName,winParam);

  return newWindow;
}

function isAlphaNumeric(objComp, strName) {
  var strValue = objComp.value;
  strValue     = trimData(strValue);
  var _ALPHABNUMERIC_CHARACTERS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var blnValue = true;

  if(strValue.length > 0) {
    var strAlphabets = _ALPHABNUMERIC_CHARACTERS;
    for(var intI=0; intI<strValue.length; intI++) {
      var intCharAt = strValue.charAt(intI);
	    if(strAlphabets.indexOf(intCharAt) == -1) {
	  	  blnValue = false;
	      break;
	    }
	  }

	  if(!checkCharacters(strValue, "'")) {
	    blnName = false;
	  }

	 if(!blnValue) {
	    alertInvalidMessage(objComp, strName);
	  }
	}

	return blnValue;
}

function trimData(strValue) {
  strValue = strValue.replace(/^\s+/,'').replace(/\s+$/,'');

  return strValue;
}

function checkCharacters(strValue, strCharacter) {
  if(strValue.indexOf(strCharacter) == 0) {
    return false;
  }
  if(strValue.lastIndexOf(strCharacter) == (strValue.length - 1)) {
    return false;
  }

  for(var intI=0; intI<strValue.length; intI++) {
    if(intI < (strValue.length - 1)) {
      if(strValue.charAt(intI) == strCharacter) {
        if(strValue.charAt(intI) == strValue.charAt(intI + 1)) {
          return false;
        }
      }
    }
	}

  return true;
}

function isNumeric(objComp, strName) {
  var strValue   = objComp.value;
  strValue       = trimData(strValue);
  var blnNumeric = true;
  var _ASCII_OF_ZERO = 48;
  var _ASCII_OF_NINE = 57;

  if(strValue.length > 0) {
    for(var intI=0; intI<strValue.length; intI++) {
      if(   (strValue.charCodeAt(intI) < _ASCII_OF_ZERO) 
         || (strValue.charCodeAt(intI) > _ASCII_OF_NINE)) {
        blnNumeric = false;
        alertInvalidMessage(objComp, strName, "numeric.");
        break;
      }
    }
  }

  return blnNumeric;
}

function isAlphabetic(objComp, strName) {
  var strValue = objComp.value;
  strValue     = trimData(strValue);
  var blnValue = true;
  var _ALPHABETIC_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

  if(strValue.length > 0) {
    var strAlphabets = _ALPHABETIC_CHARACTERS;
    for(var intI=0; intI<strValue.length; intI++) {
      var intCharAt = strValue.charAt(intI);
	    if(strAlphabets.indexOf(intCharAt) == -1) {
	  	  blnValue = false;
	      break;
	    }
	  }

	  if(!blnValue) {
	    alertInvalidMessage(objComp, strName);
	  }
	}

	return blnValue;
}

function validateCityState(objComp, strName) {
  var strValue = objComp.value;
  strValue     = trimData(strValue);
  var blnValue = true;
  var _ALPHABETIC_CHARACTERS = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

  if(strValue.length > 0) {
    var strAlphabets = _ALPHABETIC_CHARACTERS;
    for(var intI=0; intI<strValue.length; intI++) {
      var intCharAt = strValue.charAt(intI);
	    if(strAlphabets.indexOf(intCharAt) == -1) {
	  	  blnValue = false;
	      break;
	    }
	  }

	  if(!blnValue) {
	    alertInvalidMessage(objComp, strName);
	  }
	}

	return blnValue;
}
function alertInvalidMessage(objComp, strName, strType) {
  if(typeof(strName) != _STR_UNDEFINED) {
    if(typeof(strType) != _STR_UNDEFINED) {
      alert(strName + _STR_SHOULD_BE + strType);
    } else {
      alert(strName + _STR_IS_INVALID);
    }
    objComp.select();
    objComp.focus();
  }
}

function validatePasswd(objPswd) {
  var blnValid = false;
  var strValue = objPswd.value;
  var _ALPHABETIC_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var _DIGITS = "0123456789";
  var strAlphabets = _ALPHABETIC_CHARACTERS;
  var strNumerals = _DIGITS;

  for(var intI=0; intI<strValue.length; intI++) {
	  var intCharAt = strValue.charAt(intI);
	  if(strAlphabets.indexOf(intCharAt) >= 0) {
	    blnValid = true;
	    break;
	  }
  }

	if(blnValid) {
		for(var intI=0; intI<strValue.length; intI++) {
	  	var intCharAt = strValue.charAt(intI);
	  	if(strNumerals.indexOf(intCharAt) >= 0) {
	    	blnValid = true;
	    	break;
	  	} else {
	  	  blnValid = false;
	  	}
  	}
  }

  if(blnValid) {
    blnValid = isAlphaNumeric(objPswd);
  }

  return blnValid;
}

/*
 *  Function Name: isValidEmail
 *                      - This function is used to validate a field
 *                        for checking valid E-Mail Ids
 *
 *  Parameter(s) : objEmail
 *                      - This is form field Object (the text box object)
 * 				   strMessage
 *						- This is the alert message which needs to shown
 *
 *  Return Type  : Returns true if the field contains a valid E-Mail Ids;
 *                 else returns false
 *
 *  Usage        : isValidEmail(document.forms[0].txtEmail)
 */
function isValidEmail(objEmail, strMessage) {
  var strEmail = objEmail.value;
  strEmail     = trimData(strEmail);
  var blnValid = true;
   if(strEmail.length > 0) {
  	if(strEmail.indexOf(";") == -1) {
		strEmail = strEmail+";";
	}
    arrEmail = strEmail.split(";");
    for(var intI=0; intI<arrEmail.length && blnValid == true && arrEmail[intI].length > 0; intI++) {
	   var regExpr  = /^[a-zA-Z]*(([^<>()[\]\\.*,;:~`!#$%^&*\s@\"]+(\.[^<>()[\]\\.,;:~`!#$%^&*\s@\"]+)*)|(\".+\"))@[a-zA-Z]((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
       blnValid = regExpr.test(arrEmail[intI]);
	   if(blnValid) {
	   	var namePart = arrEmail[intI].substring(0,(arrEmail[intI].indexOf("@")))

		/*
	   	if(!isNaN(namePart)) {
	   		blnValid = false;
	   	}
	   	*/

	   }
	   if(!blnValid) {
    	  alert(strMessage);
     	  objEmail.select();
      	  objEmail.focus();
      	  return false;
       }
    }		
  }
      return blnValid;

}
/*
 *  Function Name: isValidateDate
 *                      - This function is used to validate a field
 *                        for checking valid Date
 *
 *  Parameter(s) : objDate
 *                      - This is date field Object (the text box object)
 *                 intYearLength
 *                      - 2: Specifies length of the year field as YY
 *                      - 4: Specifies length of the year field as YYYY
 *
 *  Return Type  : Returns true if the field contains a valid Date;
 *                 else returns false
 *
 *  Usage        : isValidateDate(document.forms[0].txtStartDate)
 */
function isValidDate(objDate, intYearLength) {
  var dtDate = objDate.value;
  dtDate     = trimData(dtDate);

  if(dtDate.length > 0) {
    var arrDate         = dtDate.split("/");
    var strErrorMessage = "";
    if(typeof(intYearLength) == _STR_UNDEFINED) {
      intYearLength = 4;
    }

	  if(intYearLength == 2) {
	    strErrorMessage  = _ERROR_INVALID_INVALID_DATE_FRMT + _STR_NEW_LINE_CHARACTER;
	    strErrorMessage += _STR_CORRECT_FRMT + " " + _FRMT_MMDDYY;
	  } else {
	    strErrorMessage = _ERROR_INVALID_INVALID_DATE_FRMT + _STR_NEW_LINE_CHARACTER;
	    strErrorMessage += _STR_CORRECT_FRMT + " " + _FRMT_MMDDYYYY;
	  }

	  if(arrDate.length != 3) {
	    alert(strErrorMessage);
	    return false;
	  }

	  var intMonth = arrDate[0];
	  var intDay   = arrDate[1];
	  var intYear  = arrDate[2];

	  if(isNaN(intMonth)) {
	    alert(_ERROR_INVALID_INVALID_MONTH);
	    return false;
	  }
	  if(isNaN(intDay)) {
	    alert(_ERROR_INVALID_INVALID_DATE);
	    return false;
	  }
	  if(isNaN(intYear)) {
	    alert(_ERROR_INVALID_INVALID_YEAR);
	    return false;
	  }
    if(intYear.length != intYearLength) {
      alert(_ERROR_INVALID_INVALID_YEAR);
	    return false;
    }
	  intMonth = parseInt(intMonth, 10);
	  intDay   = parseInt(intDay, 10);
	  intYear  = parseInt(intYear, 10);

	  if(arrDate.length == 3){
      if(intMonth.length == 1) {
        intMonth = "0" + intMonth;
      }
      if(intDay.length == 1) {
        intDay = "0" + intDay;
      }
    }

    var dtNewDate = new Date(intYear,parseInt(intMonth,10)-1, intDay);
    if ((  parseInt(dtNewDate.getMonth(),10) + 1 != parseInt(intMonth,10))
       || (parseInt(dtNewDate.getDate(),10) != parseInt(intDay,10))) {
       alert(strErrorMessage);
	     return false;
    }

    if(intYearLength == 2) {
      if(dtNewDate.getYear() != intYear) {
        alert(_ERROR_INVALID_INVALID_YEAR);
	      return false;
      }
    } else {
      if(dtNewDate.getFullYear() != intYear) {
        alert(_ERROR_INVALID_INVALID_YEAR);
	      return false;
      }
    }
  }

	return true;
}

function setLeftNavigationStatus(strLeftNav) {
  var objLeftNavTD = document.getElementById(strLeftNav);
  if(objLeftNavTD) {
  	objLeftNavTD.style.background="#EAF4D7";
    //objLeftNavTD.className = "NavDataWhite";
  }
  var objLeftNavImgTD = document.getElementById(strLeftNav + "TDImg");
  if(objLeftNavImgTD) {
  	objLeftNavImgTD.style.background="#EAF4D7";
    //objLeftNavImgTD.className = "NavDataWhite";
  }
  var objLeftNavImg = document.getElementById(strLeftNav + "Img");
  if(objLeftNavImg) {
    objLeftNavImg.style.display = "";
  }
}

/*
to validate decimal number
*/
function isDecimal(objComp, alertMessage) {
	  var strValue = objComp.value;
	  strValue     = trimData(strValue);
	  var blnName  = true;
	  var intCount = 0;
	  
	  if(strValue.length > 0) {
	    var strAlphabets = _DECIMAL_CHARACTERS;
	    for(var intI=0; intI<strValue.length; intI++) {
	      var intCharAt = strValue.charAt(intI);
	      if(intCharAt == ".") {
	        intCount++;
	      }
	      if(intCount > 1) {
	        blnName = false;
	        break;
	      }
	     if(strAlphabets.indexOf(intCharAt) == -1) {
	      blnName = false;
	       break;
	     }
	   }
	 
	   if(!checkCharacters(strValue, ".")) {
	     blnName = false;
	   }
	
		if(!blnName) {
			//alert(_ERROR_INVALID_CURRENCY);
			alert(alertMessage);
			objComp.select();
			objComp.focus();
		}
	}
	return blnName;
}
/*
* Function Name: isCurrency
* - This function is used to validate a field
* for checking decimal values
*
* Parameter(s) : objComp 
* - This is form field Object (the text box object)
*
* Return Type : Returns true if the field contains a valid decimal
* value; else returns false
*
* Usage : isCurrency(document.forms[0].txtExperience)
*/

function isCurrency(objComp, alertMessage) {
	  var strValue = objComp.value;
	  strValue     = trimData(strValue);
	  var blnName  = true;
	  var intCount = 0;
	  
	  if(strValue.length > 0) {
	    var strAlphabets = _DECIMAL_CHARACTERS;
	    for(var intI=0; intI<strValue.length; intI++) {
	      var intCharAt = strValue.charAt(intI);
	      if(intCharAt == ".") {
	        intCount++;
	      }
	      if(intCount > 1) {
	        blnName = false;
	        break;
	      }
	     if(strAlphabets.indexOf(intCharAt) == -1) {
	      blnName = false;
	       break;
	     }
	   }
	 
	   if(!checkCharacters(strValue, ".")) {
	     blnName = false;
	   }
	
		if(!blnName) {
			//alert(_ERROR_INVALID_CURRENCY);
			alert(alertMessage);
			objComp.select();
			objComp.focus();
		}
	}
	return blnName;
}

/*
 *  Function Name: isValidPhone
 *                      - This function is used to validate a field
 *                        for checking valid phone numbers
 *
 *  Parameter(s) : objPhone 
 *                      - This is form field Object (the text box object)
 *
 *  Return Type  : Returns true if the field contains a valid phone
 *                 number; else returns false
 *
 *  Usage        : isValidPhone(document.forms[0].txtOfficePhone)
 */
function isValidPhone(objPhone) {
  var strValue = objPhone.value;
  strValue     = trimData(strValue);
  var blnValue = true;

  if(strValue.length > 0) {
    var strAlphabets = _CHARACTERS_IN_A_PHONE_NUMBER;

    if(!checkCharacters(strValue, "-")) {
	    alert(_ERROR_INVALID_PHONE_NUMBER);
	    objPhone.select();
	    objPhone.focus();

	    return false;
	  }

    if(strValue.lastIndexOf("-") == (strValue.length - 1)) {
      alert(_ERROR_INVALID_PHONE_NUMBER);
	    objPhone.select();
	    objPhone.focus();

	    return false;
    }
    
    if(strValue.indexOf("+") > -1 && strValue.lastIndexOf("+") != 0) {
      alert(_ERROR_INVALID_PHONE_NUMBER);
	    objPhone.select();
	    objPhone.focus();

	    return false;
    }

    for(var intI=0; intI<strValue.length; intI++) {
      var intCharAt = strValue.charAt(intI);
	    if(strAlphabets.indexOf(intCharAt) == -1) {
	  	  blnValue = false;
	      break;
	    }
	  }

	  if(!blnValue) {
	    alert(_ERROR_INVALID_PHONE_NUMBER);
	    objPhone.select();
	    objPhone.focus();
	  }
  }

	return blnValue;
}

function validateTypeOfFile(strFilePath) {
  var strExtn  = "";
  var intIndex = -1;
  var blnValid = false;

  intIndex = strFilePath.lastIndexOf(".");

  if(intIndex > -1) {
    strExtn = strFilePath.substring(intIndex + 1, strFilePath.length);
    for(var intI=0; intI<arrFileExtns.length; intI++) {
      if(strExtn.toLowerCase() == arrFileExtns[intI]) {
        blnValid = true;
        break; 
      }
    }
  } else {
    alert("Invalid File");
    return blnValid;
  }

  if(! blnValid) {
    alert("Invalid file type \n Acceptable formats are .doc,.txt,.rtf,.pdf or .tif only");
  }
  return blnValid;
}

function validateTypeOfCmntsAttachedFile(strFilePath) {
  var strExtn  = "";
  var intIndex = -1;
  var blnValid = false;

  intIndex = strFilePath.lastIndexOf(".");

  if(intIndex > -1) {
    strExtn = strFilePath.substring(intIndex + 1, strFilePath.length);
    for(var intI=0; intI<arrCmntsFileExtns.length; intI++) {
      if(strExtn.toLowerCase() == arrCmntsFileExtns[intI]) {
        blnValid = true;
        break; 
      }
    }
  } else {
    alert("Invalid File");
    return blnValid;
  }

  if(! blnValid) {
    alert("Invalid file type \n Acceptable formats are .doc,.txt,.rtf,.pdf,.xls or .tif only");
  }
  return blnValid;
}


function validateExcelFile(strFilePath) {
  var strExtn  = "";
  var intIndex = -1;
  var blnValid = false;

  intIndex = strFilePath.lastIndexOf(".");

  if(intIndex > -1) {
    strExtn = strFilePath.substring(intIndex + 1, strFilePath.length);
    
      if(strExtn.toLowerCase() == "xls") {
        blnValid = true;
       
      }
   
  } else {
    alert("Invalid File");
    return blnValid;
  }

  if(! blnValid) {
    alert("Invalid file type \n Acceptable formats are .xls only");
  }
  return blnValid;
}


function validateKeyWords(objTxtKeyWords) {

      var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /['0-9a-zA-Z_@./(/)+/#*-//]/

      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
            alert("~!$%^&\|>< ={}?;: characters are not allowed in Search Keywords.");
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
            alert("Please provide search keywords.")
            return false;
      }
      return true;
}


function validateManageDataValues(objTxtKeyWords) {

      var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /['0-9a-zA-Z_@./(/)+/#*-//]/

      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
         //   alert("~!$%^&\|>< ={}?;: characters are not allowed ");
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
     //    alert("Please provide search keywords.")
            return false;
      }
      return true;
}





function validateKeyWordsWithMessage(objTxtKeyWords, myMessage) {

      //this code don't allow enter key
      //var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#*-//]/
      //var reg2 = /['0-9a-zA-Z_@./(/)+/#*-//]/

      var reg1 = /[^ \n\r'0-9a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /[\n\r'0-9a-zA-Z_@./(/)+/#*-//]/

      
      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
            alert("\"~!$%^&\\|>< ={}?;: characters are not allowed in " + myMessage);
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
            alert("Please provide search keywords.")
            return false;
      }
      return true;
}

function validateLookUpSpecialSymbol(objTxtKeyWords) {

      var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#/%/&*-//]/
      var reg2 = /['0-9a-zA-Z_@./(/)+/#/%/&*-//]/

      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
         //   alert("~!$%^&\|>< ={}?;: characters are not allowed in Look Up Values");
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
            alert("Please provide Look Up Value.")
            return false;
      }
      return true;
}

function validateLookUp(objTxtKeyWords) {

      var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /['0-9a-zA-Z_@./(/)+/#*-//]/

      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
         //   alert("~!$%^&\|>< ={}?;: characters are not allowed in Look Up Values");
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
        //    alert("Please provide Look Up Value.")
            return false;
      }
      return true;
}
function validateFolderNameWithMessage(objTxtKeyWords, myMessage) {

      var reg1 = /[^ '0-9a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /['0-9a-zA-Z_@./(/)+/#*-//]/
      
      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
            alert("~!$%^&\|><\" characters are not allowed in " + myMessage);
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
            alert("Please provide search keywords.")
            return false;
      }
      return true;
}

function validateNameWithMessage(objTxtKeyWords, myMessage) {
      var reg1 = /['a-zA-Z "*$]/;
      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( !reg1.test(objTxtKeyWords.value)) {
           alert("Only characters are allowed in " + myMessage);
           objTxtKeyWords.focus();
           return false;
      }  
      return true;
}

function validateKeyWordsWithMessageLocation(objTxtKeyWords, myMessage) {
     var reg1 = /[^ '"a-zA-Z_@./(/)+/#*-//]/
      var reg2 = /['"a-zA-Z_@./(/)+/#*-//]/
      
      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
           alert("Only characters are allowed in " + myMessage);
            objTxtKeyWords.focus();
            return false;
      } else if(!reg2.test(objTxtKeyWords.value)) {
        //  alert("Please provide search keywords.")
            return false;
      }
      return true;
}

function validateEmailTemplateWithMessage(objTxtKeyWords, myMessage) {
    var reg1 = /[^ '0-9a-zA-Z_@./(/)/"/&+/#*-//\\]/
      var reg2 = /['0-9a-zA-Z_@./(/)/"/&+/#*-//\\]/

      if(objTxtKeyWords.value == "" ){
            //alert("Please provide search keywords.")
            return true;
      } else if( reg1.test(objTxtKeyWords.value)) {     
            alert("~!$%^\|><={}?;: characters are not allowed in " + myMessage);
            objTxtKeyWords.focus();
            return false;
      } 
      return true;
}
/************************************************/
/*
 * Newly added by prashanth for I - 4.
 * function name: selectNamesBasedOnText()
 * cmbNamesList:List name
 * txtBoxValue: Name of the text box
 * strNameSet:Comma seperated names
 */

function selectNamesBasedOnText(cmbNamesList,txtBoxValue,strNameSet) {
  clearPreviousSelections(cmbNamesList);//Clears the previous values in the list
  var strSubStrng = "";
  var arlNamesList = strNameSet.split("$"); //Split the comma seperated values.
  var stack = new Array();

  if(txtBoxValue != "" && strNameSet != "" ){
      var intLngth = arlNamesList.length;//Get the size of the options
      for(var i = 0; i < intLngth; i++) {
            strSubStrng = arlNamesList[i];
            
            var arrnamesTitle = strSubStrng.split("^");
            
            if (arrnamesTitle[1].substring(0,txtBoxValue.length).toUpperCase() == txtBoxValue.toUpperCase()) { //If option matches with text box value
            	stack.push(arlNamesList[i]); //Place the value in arrayList
            }
      }
  }else { //If text value is empty copy entire arrayList.
      stack = arlNamesList;
   }
   for(var i = 0; i < stack.length; i++){//Build the list here.
   	   var arrIdAndTitle = stack[i].split("^");
	   cmbNamesList.options[i] = new Option(arrIdAndTitle[1],arrIdAndTitle[0]);
       if(i == 0){//Select the first option.
       	   cmbNamesList.options[i].selected = true;
       }
       
   }
}

function clearPreviousSelections(cmbNamesListToClear) {//At the begining remove all the options earlierly present.
     if(cmbNamesListToClear.options) {
        var intLngth = cmbNamesListToClear.options.length;
         for(var i = intLngth - 1;i >= 0; i--) {
              cmbNamesListToClear.options[i] = null;
              }
         }
}

/************************************************/
function validateKeyWordsAdvanceSearch(objTxtKeyWords, myMessage,searchType) {
	  var msg = "";
      if(searchType == 1 || searchType == 2){
		  var reg1 = /[^ "'0-9a-zA-Z_@./(/)+/#*-//]/
	      var reg2 = /["'0-9a-zA-Z_@./(/)+/#*-//]/
	      msg = "~!$%^&\|>< ={}?;:";
	  }else{
	  	  var reg1 = /[^ "0-9a-zA-Z/(/)*]/
	      var reg2 = /["0-9a-zA-Z/(/)*]/
	      msg = "~!$%^&\|>< ={}?;:,.#@+-`[] '";
	     
	  }
	      
	      if(objTxtKeyWords.value == "" ){
	            //alert("Please provide search keywords.")
	            return true;
	      } else if( reg1.test(objTxtKeyWords.value)) {    
	      		 
	            alert(msg + " characters are not allowed in " + myMessage);
	            objTxtKeyWords.focus();
	            return false;
	      } else if(!reg2.test(objTxtKeyWords.value)) {
	            alert("Please provide search keywords.")
	            return false;
	      }
	  
      return true;
}


/*
 * Newly added by prashanth for I - 5.
 * function name: chkDuplicateNames()
 * emailIdInScreen: Email ids present in the screen. 
 * emailIdToAdd: New email ids to be added.
 * seperator: which seperates different mail ids.
 * Description: Checks for duplicate names & adds only the names which are not present.
 */
	function chkDuplicateNames(emailIdInScreen,emailIdToAdd,seperator) {
		var arrEmailsInScreen = new Array();
		var arrEmailsToAdd = new Array();
		arrEmailsInScreen = getSpiltArray(emailIdInScreen,seperator);
		arrEmailsToAdd = getSpiltArray(emailIdToAdd,seperator);
			for(var i = 0; i < arrEmailsToAdd.length; i++) {
				var flag = false;
					for(var j = 0; j < arrEmailsInScreen.length; j++) {
					 if(arrEmailsInScreen[j] == arrEmailsToAdd[i]){
					   flag = true;
					   break;
					 }
				 	}
				 if(!flag) {
				 	emailIdInScreen += arrEmailsToAdd[i]+seperator;
				}
			}
		return emailIdInScreen;
	}
	
/*
 * Newly added by prashanth for I - 5.
 * function name: getSpiltArray()
 * emailIdToSplit: Email ids with a sperator. 
 * seperator: which seperates different mail ids.
 * Description: Splits the names & returns array.
 */
	function getSpiltArray(emailIdToSplit,seperator) {
		var i = 0;
		var arrEmails = new Array();
		while(emailIdToSplit.indexOf(seperator) != -1) {
	    arrEmails[i] = emailIdToSplit.substring(0,emailIdToSplit.indexOf(seperator));
	    i++;
	    emailIdToSplit = emailIdToSplit.substring(emailIdToSplit.indexOf(seperator)+1,emailIdToSplit.length);
	  }
		return arrEmails;
	}   
/*
 * function name: getSpiltArray()
 * emailIdToSplit: Email ids with a sperator. 
 * seperator: which seperates different mail ids.
 * Description: Tests whether the string contains any alphabetic characters or not.
 */	
 function isbothNumericAlpha(objTxt) {
  var txtVal = objTxt.value;
 	var _ASCII_OF_ZERO = 48;
  var _ASCII_OF_NINE = 57;
  if(txtVal.length > 0) {
    for(var intI=0; intI<txtVal.length; intI++) {
      if(   (txtVal.charCodeAt(intI) < _ASCII_OF_ZERO) 
         || (txtVal.charCodeAt(intI) > _ASCII_OF_NINE)) {
    		 return true;   
      }
    }
 	}
  return;
 }
	
/*
 * Newly added by prashanth for I - 6.
 * function name: Menu_ChangeProp()
 * objName: Div tag name. 
 * theProp: property of div.
 * theValue: hidden or visible.
 */
 
 var popLeft = "";
 function Menu_ChangeProp(objName,theProp,theValue,layer,actionType,label)
  {
    var obj = Menu_findObj(objName);
    var labelObj = document.getElementById(label);
	
	if(actionType == 'over' && popLeft ==""){
		popLeft = event.screenX-20;
		if(labelObj)
		labelObj.innerHTML ="<font style='font-family:arial;color:FF621C;text-decoration:underline; font-weight:normal;font-size:11px'>" + labelObj.innerText + "</font>";
	}
	
	if(actionType == 'out'){
		popLeft = "";
		if(labelObj) {
			labelObj.innerHTML = labelObj.innerText
		}
	}	
	
    if(popLeft != "") {
	    if(obj.style.visibility == 'hidden') {
	    	obj.style.left=popLeft;
	    }
	}

    if (obj && (theProp.indexOf("style.")==-1 || obj.style))
    eval("obj."+theProp+"='"+theValue+"'");
    
  }
  
/*
 * function name: Menu_findObj()
 */  
 function Menu_findObj(n, d)
  {
    var p,i,x;  
    if(!d) 
    d=document;
    
    if((p=n.indexOf("?"))>0&&parent.frames.length)
    {
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
    }
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && document.getElementById) 
    x=document.getElementById(n); 
    return x;
  }
	
	
 window.onerror = null;
 var bName = navigator.appName;
 var bVer = parseInt(navigator.appVersion);
 var NS4 = (bName == "Netscape" && bVer >= 4);
 var IE4 = (bName == "Microsoft Internet Explorer" 
 && bVer >= 4);
 var NS3 = (bName == "Netscape" && bVer < 4);
 var IE3 = (bName == "Microsoft Internet Explorer" 
 && bVer < 4);
 var blink_speed=250;
 var blink_Cnt=0;
 
if (NS4 || IE4) {
 if (navigator.appName == "Netscape") {
 layerStyleRef="layer.";
 layerRef="document.layers";
 styleSwitch="";
 }else{
 layerStyleRef="layer.style.";
 layerRef="document.all";
 styleSwitch=".style";
 }
}

//BLINKING
function Blink(layerName){
 if (NS4 || IE4) { 
 if(blink_Cnt%2==0)
 {
 eval(layerRef+'["'+layerName+'"]'+
 styleSwitch+'.visibility="visible"');
 }
 else
 {
 eval(layerRef+'["'+layerName+'"]'+
 styleSwitch+'.visibility="hidden"');
 }
 } 
 if(blink_Cnt<1)
 {
 blink_Cnt++;
 } 
 else
 {
 blink_Cnt--
 }
 setTimeout("Blink('"+layerName+"')",blink_speed);
}

//for opening archive attachments
function openAttachment(dir, fileName, extension, path) {
    var extWithoutDot = extension;
	document.forms[0].dir.value=dir;
	document.forms[0].fileName.value=fileName;
	document.forms[0].extension.value=extension;
	var index = extension.indexOf(".") ;
	if(index != -1){
	  extWithoutDot = extension.substring(index+1);
	}
	if (extWithoutDot.toUpperCase() == 'DOC'
			|| extWithoutDot.toUpperCase() == 'RTF'
			|| extWithoutDot.toUpperCase() == 'TXT'
			|| extWithoutDot.toUpperCase() == 'PDF' || extWithoutDot.toUpperCase() == 'XLS') {
		document.forms[0].target="_blank";
	}

	path = path+'?'+escape('fileName='+fileName+'&dir='+dir+'&extension='+extension);
	document.forms[0].action=path;	
	document.forms[0].submit();		
}

//29/aug/06.set of function for encoding the string .START
function encodeIt(val) {
	var len     = val.length;
	var i       = 0;
	var newStr  = "";

    for (i=0;i<len;i++) {
          if (val.substring(i,i+1).charCodeAt(0) < 255) {// hack to eliminate the rest of unicode from this
              if (isUnsafe(val.substring(i,i+1)) == false) { 
              	newStr = newStr + val.substring(i,i+1); 
              } else { 
              	newStr = newStr + convert(val.substring(i,i+1)); 
              }
          }
    }
	return newStr
}


var hexVals = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
              "A", "B", "C", "D", "E", "F");

var unsafeString = "\"<>%\\^[]`\+\$\,#";
// deleted these chars from the include list ";", "/", "?", ":", "@", "=", "&" and #
// so that we could analyze actual URLs

function isUnsafe(compareChar) {
// this function checks to see if a char is URL unsafe.
// Returns bool result. True = unsafe, False = safe

	if (unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) > 32

    	&& compareChar.charCodeAt(0) < 123) {

    	return false; 
    } else { // found no unsafe chars, return false
    	return true; 
    }
}

 
function convert(val) { // this converts a given char to url hex form
	return  "%" + decToHex(val.charCodeAt(0), 16); 
}


function decToHex(num, radix) {
// part of the hex-ifying functionality
	var hexString = "";
	while (num >= radix){
       temp = num % radix;
       num = Math.floor(num / radix);
       hexString += hexVals[temp];
    }
	hexString += hexVals[num];
	return reversal(hexString);
}

function reversal(s) {
	var len = s.length;
	var trans = "";
	for (i=0; i<len; i++){ 
		trans = trans + s.substring(len-i-1, len-i); 
	}
	s = trans;
	return s;
}
//29/aug/06.set of function for encoding the string .END		


//function for formatDate . oct/2006 start
	var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
	function LZ(x) {return(x<0||x>9?"":"0")+x}

	function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();

	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();

	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}
//function for formatDate . oct/2006 end


//paswd ecryption.Apr/2007 START

function encryptString(inString) {
     var tempKey="";
     var outString="";
  	 var encryptKey="";
  	 var oldChar="",newChar="", cryptChar="";
  	 var i = 0;
  	 var encryptKey = "a"
 	 if(inString != ""){
      do {
        tempKey = tempKey + encryptKey
      }while(tempKey.length < inString.length)
      do {
   
	    oldChar = (inString.charAt(i)).charCodeAt(0);
        cryptChar =(tempKey.charAt(i)).charCodeAt(0);

        switch(i%2){ 
    		case 0 :    //  'Even Character
			 newChar = oldChar - cryptChar
             if(newChar < 0) {newChar = newChar + 127 }
		        break;
   			default : //Case Else   'Odd Character
	 	     newChar = oldChar + cryptChar
		     if(newChar > 127) { 
        	 	newChar = newChar - 127
      		 }
    	}
    	
	    // If the value is less than 35, add 40 to it (to make sure
	    // it's in the display range) and put it in an escape
	    // sequence (using ! [ASCII Value 33] as the escape char)
	   
	    if(newChar < 35) {
	     outString = outString + "!" + String.fromCharCode(newChar + 40)
	    }else{
	     outString = outString + String.fromCharCode(newChar);
	    }
		i = i + 1
  	  }while(i<inString.length)
  	}
  	return outString
}
//paswd ecryption.Apr/2007 END
