//*******************************************************************************
//'* Purpose  : Commonly used Javascript Functions.
//'* Auth     : Paresh Bhurke
//'* Date     : 03-Sep-2004
//'* Author   : Paresh A Bhurke
//'* History      Auth        Date	Description
//'  --------     --------    ------- ---------------------------------------------
//'
//'*******************************************************************************
// Start
function alltrim(strLine)
{	var trimstr = ""
	trimstr = rtrim(ltrim(strLine))
	return trimstr
}

function ltrim(strLine)
{var trimstr = ""
	var blkflg = 0
	var len    = strLine.length
	for (var i=0; i<=len-1; i++)
	{if(strLine.charAt(i) != " " )
		{{
				trimstr= strLine.substring(i,len)
				blkflg = 1
				break }}}
	return trimstr
}	

function rtrim(strLine)
{var trimstr = ""
	var blkflg = 0
	var len    = strLine.length-1
	var i = len
	while (strLine.charAt(i) == " ") {i=i-1 }
	trimstr = strLine.substring(0,i+1)
	return trimstr
}

function isblank(objfld)
{
	if(alltrim(objfld.value)==""){
		var objType = objfld.type
		if(objType!='hidden'){
			objfld.focus()
		}
		return true
	}
	else{
		return false}
}

function ispositive(strLineval)
{
	var strLine1 = ltrim(rtrim(strLineval))
	if (isnumeric(strLine1)) {
	   return(strLine1>0?true:false)
	}
	else {
	    return false
	}
}

function ispositiveGTZero(strLineval)
{
	var strLine1 = ltrim(rtrim(strLineval))
	if (isnumeric(strLine1)) {
	   return(strLine1>=0?true:false)
	}
	else {
	    return false
	}
}

function ContainOnlyAlphabets(strValue)
{
          strValue = strValue.toUpperCase();
          for (i=0;i<strValue.length;i++)
          {
               if (strValue.charAt(i)<"A" || strValue.charAt(i) > "Z")
               {
                    return false;
               }
          }
          return true;
}

function isnegative(objfldval)
{
   if (isnumeric(objfldval)) 
   {
      return(objfldval<0?true:false)
   }
   else 
   {
	   return false
   }
}

function isinteger(objfldval)
{
    if (isnumeric(objfldval)) {
		return ((objfldval+"").indexOf(".")>=0?false:true) 
		}
	else
	{
	return false
	}
}

function isnumeric(objfldval) 
{
   return (isNaN(objfldval)?false:true)
}

function isreal(strLineval)
{
    if (isnumeric(strLineval)) {
		return (strLineval.indexOf(".")<0?false:true) 
		}
	else
	{return false
	}
}

function contains(strLine,strLine2)
{
	return (strLine.indexOf(strLine2)>=0?true:false)
}

function upper(strLine)
{
	return (strLine.toUpperCase())
}

function lower(strLine)
{
	return (strLine.toLowerCase())
}
function isEmail(strObject)
{
	EStr = alltrim(strObject.value);
	
	/*EArray = EStr.split(",")

	for (var i = 0; i < EArray.length; i++) 	
	{
		if(EArray[i].indexOf("@")==-1 || EArray[i].indexOf(".")== -1)
			{
				strObject.focus();
				return false
			}
	}
	return true*/
	if(EStr.length>0)
	{
		var chkEmail = false;				
		//var RegExp = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
		var RegExp =   /^([0-9a-zA-Z_-]([-.\w]*[0-9a-zA-Z_-])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
		//var sEmail = strObject.value.match(/^([0-9a-zA-Z_-]([-.\w]*[0-9a-zA-Z_-])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/gi);		
		
	  if(RegExp.test(EStr))
		{
			chkEmail = true;
		} else {					
			chkEmail = false;
		}
		return chkEmail;
	}			
	return false;
}

function CountSelectedItemsInList(listobj){
	if(listobj!=null){
		var i
		var mulselect = 0
		for(i=0;i<listobj.length;i++){
			if(listobj.options[i].selected==true){
				mulselect = mulselect+1
			}
		}
		return mulselect
	}	
}

function CountSelectedItemsInList(listobj){
	if(listobj!=null){
		var i
		var mulselect = 0
		for(i=0;i<listobj.length;i++){
			if(listobj.options[i].selected==true){
				mulselect = mulselect+1
			}
		}
		return mulselect
	}	
}

// End



function ShowLayer(sShowElement, aElements)
{

	for (var i = 0; i < aElements.length; i++)
	{
		
		var dispStatus = document.getElementById(aElements[i]).style.display
		var obj
		if (sShowElement == aElements[i])
		{	
				obj = document.getElementById(aElements[i])
				obj.style.display = "";
		}
		else
		{
			document.getElementById(aElements[i]).style.display = "none";
			//this is to reset the other panel elements selected indexes if any
			if (document.getElementById(aElements[i]).hasChildNodes())
			document.getElementById(aElements[i]).firstChild.selectedIndex=0;

		}
	}
}

//Function for value Trimming

function trim(strTrim){

	 while(strTrim.charAt(0) == " " || strTrim.charAt(eval(strTrim.length-1)) == " "){
	 if(strTrim.charAt(0) == " "){
			strTrim = strTrim.slice(1,strTrim.length)
			}
	 if(strTrim.charAt(eval(strTrim.length-1)) == " "){
			strTrim = strTrim.slice(0,eval(strTrim.length-1))
			}
	 }
	 return strTrim
}

//Function for Quote display

function quote(fieldvalue){

		if(fieldvalue.match(squote) != null) return 0
		else return 1
}	

//Start Functions for ExpandAll / CloseAll / Drill down functionality
		function ShowDrillDownLayer(LayerPrefix, LayerID, customStatus)
		{
			
			var layerObj = document.getElementById(LayerPrefix + "_" + LayerID)
			if(layerObj==null)
			{
				return;
			}
			var dispStatus = layerObj.style.display
				
					if(customStatus!=null)
					{
						dispStatus = ""
						if(customStatus=="expand"){dispStatus = "none"}
					}
					
					if(dispStatus==""){
						layerObj.style.display = "none";
					}else{
						layerObj.style.display = "";
					}

					eval("var img=document.forms(0)." + LayerPrefix + "_Img" + LayerID)
					SwapImage(img, customStatus)
			
		}
		
//End Functions for ExpandAll / CloseAll / Drill down functionality
function OpenExcelWindow(PageName)
{
	NewWin = window.open("PreExportToExcel.aspx","PreviewProfile","width=800,height=600,status=no,scrollbars=yes,minimize=no,top=10,left=0");
	return false;
}

/* Functions for soft lock implementation - Anshul */

	//This function will unlock the notice in the session		
	function RemoveLock(itemID, callingFunction)
	{
		// Create the xmlhttp request to send to release notice lock
		document.cookie = "PageEditMode=0";
		var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		xmlhttp.open("POST","../SoftLockActions.aspx?mode=LS&Type=Unlock&Item=" + itemID + "&Function=" + callingFunction,false);			
		xmlhttp.send();	
		var responseText = xmlhttp.responseText;
		return responseText;
	}

	//Function to lock the selected notice
	function SetLock(itemID, callingFunction)
	{
		// Create the xmlhttp request to send to set notice status
		document.cookie = "PageEditMode=1";
		var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		xmlhttp.open("POST","../SoftLockActions.aspx?mode=LS&Type=Lock&Item=" + itemID + "&Function=" + callingFunction,false);			
		xmlhttp.send();
		return;
	}
	

	
	//Function to get the notice lock status
	function GetLockStatus(itemID, callingFunction)
	{			
		try
		{
			// Create the xmlhttp request to send to get notice status
			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			xmlhttp.open("POST","../SoftLockActions.aspx?mode=LS&Type=GetStatus&Item=" + itemID + "&Function=" + callingFunction,false);			
			xmlhttp.send();
				
			//DownLoad NoticeStatus
			var responseText = xmlhttp.responseText;
			return responseText;
		}
		catch(Exception)
		{
		}
	}
		 
/* end of functions for soft lock implementation - Anshul */




//Added by Paresh, for handling OnSubmit Validation in Reports GroupBy functionality
//Start
function GroupByValidations(rbControls,lstControls, ErrorMessages )
{

	var rbObj, lstObj
	
	for(i=0;i<=(rbControls.length-1);i++)
	{
		rbObj=null;
		lstObj=null;
		
		if(rbControls[i]!='') {eval('rbObj  = document.forms(0).' + rbControls[i])}
		if(lstControls[i]!=''){eval('lstObj = document.forms(0).' + lstControls[i])}
		if(rbObj!=null && lstObj!=null)
		{
			if(rbObj.checked)
			{
				if(CountSelectedItemsInList(lstObj)<=0)
				{
					alert(ErrorMessages[i]);
					lstObj.focus();
					return false;
				}
			}
		}
	}
}

// Entered by Neha for checking white spaces in a field

var whitespace = " \t\n\r";

function isEmpty(s)
{   
	return ((s == null) || (s.length == 0))
}
				
	
function isWhitespace (s)
{   
	var i;
	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++)
	{   
		// Check that current character isn't whitespace.
		var c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) return false;
	}
	// All characters are whitespace.
	return true;
}

		
//End
		

//-- Start for showing selected radio button and multi selected  list box on lick of Back Link in Report.
function DetectSelectedRadioButton()
{
		var x;
		
		for (x = 0;x < document.all.length; x++)
		{
			if(document.all(x).type=="radio")
			{
				if(document.all(x).checked==true)
				{
					document.all(x).click()
				}
			}
		}
}
//----- End
        function TrapEnterKey(btn, event)
        {
			if (document.all)
			{
		        if (event.keyCode == 13)
		        {
			        event.returnValue=false;
			        event.cancel = true;
					document.getElementById(btn).click();
				}
			}
			else if (document.getElementById)
			{
				if (event.which == 13)
				{
					event.returnValue=false;
					event.cancel = true;
					document.getElementById(btn).click();
				}
			}
			else if(document.layers)
			{
		        if(event.which == 13)
		        {
			        event.returnValue=false;
				    event.cancel = true;
					document.getElementById(btn).click();
				}
			}
        }

//****************************************************************************************
//* Function:	 fnCheckEmail 
//* Description: Returns true if the input string is a represents a valid email otherwise false.
//*				 e.g. abc@yahoo.co.in 
//* Added by pravin for EmailProfile Pages
//*****************************************************************************************
function fnCheckEmail(sField) 
{
	EStr = alltrim(sField);
	var RegExp = /^([0-9a-zA-Z_-]([-.\w]*[0-9a-zA-Z_-])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
	/*var rx = new RegExp("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
	var matches = rx.exec(value);
	var succ = (matches != null && value == matches[0]);    
	alert(succ);
	return succ;*/
	
	if(EStr.length>0)
	{
		var chkEmail = false;
		if(RegExp.test(EStr))
		{
			chkEmail = true;
		} 
		else 
		{					
			chkEmail = false;
		}
		return chkEmail;
	}
	return false;
}			

function textCounter(field,maxlimit,displayfield, evt) {
	if (evt.shiftKey) 
	{ //alert(evt.keyCode);
		if ((evt.keyCode <33 || evt.keyCode>40) && (field.value.length >=maxlimit))
			{
			displayfield.innerHTML = field.value.length+" / "+maxlimit;
			return false;
			}
		displayfield.innerHTML = field.value.length+" / "+maxlimit;
		return true;
	}
	var allowKey = false;
	if ((field.value.length > 0) && (field.value.length <maxlimit))
		allowKey = true;
	else {
			var keyCode = document.layers ? evt.which : evt.keyCode;
			if ((keyCode <= 40  && keyCode !=13 && keyCode !=32) || keyCode==46)
				allowKey = true;
			else {
				field.value = field.value.substring(0,maxlimit);
				allowKey = field.value.length < maxlimit;
			}
		}
	displayfield.innerHTML = field.value.length+" / "+maxlimit;
	return allowKey;
}	

function SMSMessageCounter(field, maxlimit, displayfield, evt) 
{	
	var objDisplayfield = document.getElementById(displayfield);
	var objField = document.getElementById(field);
	var numberOfSMSs;
	
	if(objField.value.length == 0)
		numberOfSMSs = 0;
	else if((objField.value.length % 160) == 0)
		numberOfSMSs = objField.value.length / 160;	
	else 
		numberOfSMSs = parseInt(objField.value.length / 160) + 1;
	
	if (evt.shiftKey) 
	{ 
		if ((evt.keyCode <33 || evt.keyCode>40) && (objField.value.length >= maxlimit))
		{
			objDisplayfield.innerHTML = objField.value.length+" / " + numberOfSMSs + " (Max limit: " + maxlimit + " chars)";
			return false;
		}
		objDisplayfield.innerHTML = objField.value.length+" / "+numberOfSMSs + " (Max limit: " + maxlimit + " chars)";
		return true;
	}
	var allowKey = false;
	if ((objField.value.length > 0) && (objField.value.length < maxlimit))
		allowKey = true;
	else 
	{
			var keyCode = document.layers ? evt.which : evt.keyCode;
			if ((keyCode <= 40  && keyCode !=13 && keyCode !=32) || keyCode==46)
				allowKey = true;
			else
			{
				objField.value = objField.value.substring(0,maxlimit);
				allowKey = objField.value.length < maxlimit;
			}
	}
	objDisplayfield.innerHTML = objField.value.length + " / "+numberOfSMSs + " (Max limit: " + maxlimit + " chars)";
	return allowKey;
}	

function ShowApplicantProfile(ApplicantID, VacancyID)
{

	if (ApplicantID)
		strurl = "../ApplicantManager/ApplicantProfile.aspx?ApplicantID=" + ApplicantID;
	else
		strurl = "../ApplicantManager/ApplicantProfile.aspx"
		
		
	if (VacancyID)
	{
		strurl += "&VacancyID=" + VacancyID;
	}
	ht = window.screen.height - 100; 
	window.open(strurl,"ApplicantProfile","width=800,height="+ht+",status=no,scrollbars=yes,top=10,left=0");

}
function ShowRequisitionProfile(RequisitionID)
{

	strurl = "../RequisitionManager/RequisitionProfile.aspx?ReqID=" + RequisitionID;
	ht = window.screen.height - 100; 
	window.open(strurl,"ApplicantProfile","width=800,height="+ht+",status=no,scrollbars=yes,top=10,left=0");

}

function ShowVacancySearchWindow(Multiselect)
{
	var percentWidth = (52/100)*(screen.width);
	var wndWidth = screen.width - percentWidth;
	
	var percentHeight = (20/100)*(screen.height);
	var wndHeight = screen.height - percentHeight;
	
	var leftPosition = percentWidth / 2;
	var topPosition = percentHeight / 2;
	
	childWnd = window.open('../VacancyManager/SearchVacancy.aspx?MultiSelect='+Multiselect,'SearchVacancy','width='+wndWidth+',resizable=1, height='+wndHeight+',top='+topPosition+',left='+leftPosition+',scrollbars=yes');
}
function isDate(dateStr, monthName) 
			{
				var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
				var matchArray = dateStr.match(datePat); 

				if (matchArray == null) {
					alert(Message8072); 
					return false;
				}

				month = matchArray[3]; 
				day = matchArray[1];
				year = matchArray[5];

				if (year <1900)
				{
					alert(Message8108); 
					return false;		
				}
				
				if (month < 1 || month > 12) { 
					alert(Message8073); 
					return false;
				}

				if (day < 1 || day > 31) {
					alert(Message8074); 
					return false;
				}

				if ((month==4 || month==6 || month==9 || month==11) && day==31) {
					alert("Month "+monthName+". doesn't have 31 days!") 
					return false;
				}

				if (month == 2) { 
					var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
					if (day > 29 || (day==29 && !isleap)) {
						alert("February " + year + " doesn't have " + day + " days!");  
						return false;
					}
				}
				return true; 
			}

 
function InitializeTinyMCE(styleselect,fontselect,fontsizeselect,pathAdvanceTheme)
{
	document.writeln('<script language="javascript" type="text/javascript">');
	document.writeln('tinyMCE.init({');
	document.writeln('mode : "specific_textareas",');
	document.writeln('editor_selector : "mceEditor",');
	document.writeln('theme : "advanced",');
	document.writeln('plugins : "advlink,insertdatetime,media,searchreplace,print,contextmenu,paste,directionality,fullscreen",');
	document.writeln('theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,'+styleselect+',formatselect,'+fontselect+','+fontsizeselect+'",');
	document.writeln('theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,link,unlink,image,|,undo,redo,|,insertdate,inserttime,preview,|,hr,visualaid,|,charmap,print",');
	document.writeln('theme_advanced_buttons3 : "",');
	document.writeln('theme_advanced_toolbar_location : "top",');
	document.writeln('theme_advanced_toolbar_align : "left",');
	document.writeln('theme_advanced_statusbar_location : "bottom",');
	document.writeln('plugi2n_insertdate_dateFormat : "%Y-%m-%d",');
	document.writeln('plugi2n_insertdate_timeFormat : "%H:%M:%S",');
	document.writeln('theme_advanced_path : false,');
	document.writeln('paste_use_dialog : false,');
	document.writeln('theme_advanced_resizing : true,');
	document.writeln('theme_advanced_resize_horizontal : false,');
	document.writeln('theme_advanced_link_targets : "_something=My somthing;_something2=My somthing2;_something3=My somthing3;",');	
	document.writeln('theme_advanced_styles : "Page Title=CPPageTitle;Section Title=SectionTitle;Content=Content",');
	document.writeln('paste_auto_cleanup_on_paste : true,');
	document.writeln('paste_convert_headers_to_strong : false,');
	document.writeln('paste_strip_class_attributes : "all",');
	document.writeln('paste_remove_spans : true,');
	document.writeln('paste_remove_styles : true,');
	document.writeln('valid_elements : "*[*]",');
	document.writeln('extended_valid_elements : "*[*]",');
	document.writeln('content_css : "'+pathAdvanceTheme+'"');
	document.writeln('});');
	document.writeln('</script>');
}

function CompareDates(FromDateValue, ToDateValue, CompareOperator) {
    var FromDateValue = getUSDate(FromDateValue)
    // if passed date is in DD-MMM-YYYY format then change it to mm/dd/yyyy using getUSDate()
    var ToDateValue = getUSDate(ToDateValue)

    var blnFlag = true
    eval("blnFlag=Date.parse(FromDateValue) " + CompareOperator + " Date.parse(ToDateValue)")
    if (blnFlag == true) {
        return true;
    }
    else {
        if (FromDateValue == "" || ToDateValue == "") {
            return false
        }
        else {
            return false
        }
    }
    return false
}


function getUSDate(strDate) {
    strDateArray = strDate.split("-");
    if (strDateArray.length == 3) {
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
        var intMonth = getIntegerMonth(strMonth)
        return intMonth + "/" + strDay + "/" + strYear
    }
    else {
        return strDate
    }

}



function getIntegerMonth(strMonth) {
    var intMonth

    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";

    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;
    }

    return intMonth
}