function isEmpty(argString) {
	if (Trim(argString) == "") 
		return true;
	else
		return false;
}

function Trim(s) {
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
	s = s.substring(1,s.length);
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
	s = s.substring(0,s.length-1);
  return s;
}

function  isNumOnly(txt) { 
   var flag = true;
    var length = txt.length;

    if (length != 0) {
        for(n = 0; n < length; n++) { 
          theChar = txt.substring(n, n + 1);
          if((theChar < "0") || (theChar > "9")) { 
                flag = false;
            }        
        }
     } 

     return flag;
 }
 
 function checkMinLength(text, len) {
 	var msg = Trim(text);
	var msgLen = msg.length;
	var flag = true;
	if (msgLen < len) {
		flag = false;
	}
	return flag;
 }
 
 function isAlphaOnly(testString) { 
 	  var len = testString.length;
	  var isNumber = false;
	  var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	  if (len > 0) { 
	   	for (i=0; i < len ; i++) { 
		    var charAt = testString.charAt(i);
		    if (isNumber == false && strValidChars.indexOf(charAt) == -1) { 
		     isNumber = false;
		    } else { 
		     	isNumber = true;
		    }
	   	}
	  }
	  return isNumber;
	 }

function isValidEmail(emailId) {
	var flag = true;
    var oneAtRate = false;
	var oneDesimal = false;

	for (var i = 0; i < emailId.length; i++) { 
		var oneChar = emailId.charAt(i)	  
        if (oneChar == "@") {
        	oneAtRate = true; 
        }
		if (oneChar == ".") { 
			oneDesimal = true;
		}
	 }

	if(oneAtRate == false || oneDesimal == false) { 
		flag = false;
	}	
	return flag;
} 

function isValidDate(argDate) {
	
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year
	var matchArray = dateStr.match(argDate); // is the format ok?
	
	if (matchArray == null) {
		alert(argDate + " Date is not in a valid format.")
		return false;
	}
	
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}
	
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		return false;
	}
	if (month == 2) { // check for february 29th
		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;
	   	}
	}
}

function isAlphaNumericOnly(testString) { 
	var len = testString.length;
	var isNumber = false;
	var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	
	if (len > 0) { 
		for (i=0; i < len ; i++) { 
			var charAt = testString.charAt(i);
		    if (strValidChars.indexOf(charAt) == -1) { 
		     	return false;
		    }
	   	}
	}
	 return true;
}

// Code added by Omkar for CR_06
function isSpecialCharacters(testString) { 
	var len = testString.length;
	var isNumber = false;
	var strValidChars = "<>//'%$&|?";
	if (len > 0) { 
		for (i=0; i < len ; i++) { 
			var charAt = testString.charAt(i);
		    if (strValidChars.indexOf(charAt) != -1) { 
		     	return false;
		    }
	   	}
	}
	 return true;
}
// End of Code added by Omkar for CR_06

function getDateDiff(argFromDate, argToDate) { 
	// Get the date in DD/MM/YYYY format and convert it into YYYY/MM/DD format 
	// Then calculates the date difference 
	var fromDate = argFromDate;
	
	date1 = new Date(argFromDate.substring(6, 10), argFromDate.substring(3, 5), 
					argFromDate.substring(0, 2));
	date2 = new Date(argToDate.substring(6, 10), argToDate.substring(3, 5), 
					argToDate.substring(0, 2));
	diff  = new Date();
	datediff = ((date2 - date1)/(24*60*60*1000));
	return datediff;  
} 

	function startProcess() { 
		var divObj = document.getElementById("colCenter");
		var boxHeight = document.getElementById("content").offsetHeight + 30 + "px";
		var boxWidth = divObj.offsetWidth + "px";
		var boxTop = divObj.offsetTop + "px";
		var boxLeft = divObj.offsetLeft + "px";
		$(function() {
			//$("#overlay").css({height:boxHeight});
			$("#overlay").css({width:boxWidth});
			//$("#overlay").css({top:0});
			//$("#overlay").css({left:0});
		});

		$("#overlay").show();
		$("#load_int").show();
	} 

	function endProcess() { 
		$("#overlay").find("div.panel").hide().end().hide();
		$("#load_int").hide();
	} 
	
// Added by basker for table td background color chages
	var ColorCode = new Array("#E4E4E4");
	
	function mouseOveronObject(CaoPhong) {
		CaoPhong.style.backgroundColor=ColorCode[Math.round(Math.random()*0)];
	}
	
	function mouseOnOutObject(CaoPhong) {
  		CaoPhong.style.backgroundColor="transparent";
	}
	
// End of changed
function isEnterKey(e) {
     var key;
	 if(window.event) {
          key = window.event.keyCode;     //IE
          
     } else {
          key = e.which;     //firefox
	 }
	 
	 
     if (key == 13) {
     	return false;
     } else {
        return true;
     }
}

function isValidPostcode(txt) { 
	var chars = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890123456789%;";
	var temp;
	var postCode = Trim(txt);
    var errorCode = "0";
	
	if (postCode != "") { 
		if (txt.length > 999) {
			errorCode = "1";
		}
		if (errorCode == "0") { 
			for (var i = 0; i < postCode.length; i++) { 
			    temp = postCode.substring(i, i+1);
				
			    if (chars.indexOf(temp) == -1) { 
			      errorCode = "2";
				} 
			} 
			// To check the last character
			if (errorCode == "0") {
				var lastIndex = postCode.length;
				var lastChar = postCode.substring(lastIndex-1, lastIndex);
				
				if (lastChar != ";") { 
					errorCode = postCode + ";";		
				} 
			}
		} 
	} 
	return errorCode;
} 

function isSpecialCharWithSpace(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in upper and lower case and numbers and one white space.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		 return true;
}

// Added by Omkar as required for CR_46
function isSpecialCharWithSlash(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in upper and lower case and numbers , one white space and forward slash.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\" /";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		 return true;
}
// Added by Omkar as required for CR_46

function isSpecialCharWithDecimal(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in upper and lower case and numbers , one white space and forward slash.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		 return true;
}

function  isNumOnlyWithDecimal(testString) { 
    
	 var len = testString.length;
		var isNumber = false;
		var strValidChars = "0123456789.";
		var decimalCounter = 0;
		
		if (len > 0) { 
			if (len == 1) {
				var charAt = testString.charAt(0);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
				if (testString == ".") {
					return false;
				}
			} else {
				for (i=0; i < len ; i++) { 
					var charAt = testString.charAt(i);
				    if (strValidChars.indexOf(charAt) == -1) { 
				     	return false;
				    } else if (charAt == '.') {
						decimalCounter++;
					}
			   	}
			}			
		}
		 if (decimalCounter <= 1 ) {
		 	return true;
		 } else {
		 	return false;
		 }
		 
 }
// Allow project search postcode with all uppercase and lowercase alphabets along with space and % sign.
function isPostcodeValid(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in 
		// upper and lower case and numbers, one white space and a % sign.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		return true;
}

	var ColorCode=new Array("#E4E4E4");
	
	function ParaOver(CaoPhong) {
 		CaoPhong.style.backgroundColor=ColorCode[Math.round(Math.random()*0)];
	}

	function ParaOut(CaoPhong) {
  		CaoPhong.style.backgroundColor="transparent";
	}
	
// Added by Omkar as required for CR_62
function isSpecialCharWithAmpersand(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in upper and lower case and numbers , one white space and forward slash.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-&\" ";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		 return true;
}
// Added by Omkar as required for CR_62

	// This function is used to convert the long values in to javascript date object	
	function convertLong2Date(longDateTime) {
		var objDate = new Date(longDateTime)
		objDate.setTime(longDateTime);
		return objDate; 
	}
	
	function compareDates(firstDateInString, secondDateInString) {
		var firstDate = getDateObject(firstDateInString, '/');
		var secondDate = getDateObject(secondDateInString, '/');
		
		if (firstDate < secondDate) {
			//alert(firstDate+" is less than "+secondDate);
			return -1;
		} else if (firstDate > secondDate) {
			//alert(firstDate+" is greater than "+secondDate);
			return 1;
		} else {
			return 0;	
			//alert(firstDate+"    :     "+secondDate);
		}
		
		//return false;
		
	}
	// This function is used to return the date object
	function getDateObject(dateTimeString, dateSeperator) {
		var tempDate = dateTimeString.substring(0, 10);
		var tempTime = Trim(dateTimeString.substring(11));
		// Split the dateTimeString string to get the date part. 
		var bufArray = tempDate.split(dateSeperator); 
		var cDate = bufArray[0];
		var cMonth = bufArray[1];
		var cYear = bufArray[2];

		// Creating the data object with the above tokened values
		var objDate = new Date();
		objDate.setYear(cYear);
		objDate.setMonth(cMonth - 1);
		objDate.setDate(cDate);
		
		// Retrive the time part from the dateTimeString  
		/*
		var bufTimeArray = tempTime.split(":");
		var cHours = bufTimeArray[0];
		var cMin = bufTimeArray[1];
		var cSeconds = bufTimeArray[2];
		*/
		// Set the time part the date object as 0	
		objDate.setHours(0);
		objDate.setMinutes(0);
		objDate.setSeconds(0);
		objDate.setMilliseconds(0);
		
		return objDate;
	}
	
	// This function is used to return the dateTime object
	function getDateTimeObject(dateTimeString, dateSeperator) {
		var tempDate = dateTimeString.substring(0, 10);
		var tempTime = Trim(dateTimeString.substring(11));
		// Split the dateTimeString string to get the date part. 
		var bufArray = tempDate.split(dateSeperator); 
		var cDate = bufArray[0];
		var cMonth = bufArray[1];
		var cYear = bufArray[2];

		// Creating the data object with the above tokened values
		var objDate = new Date();
		objDate.setYear(cYear);
		objDate.setMonth(cMonth - 1);
		objDate.setDate(cDate);
		
		// Retrive the time part from the dateTimeString  
		var bufTimeArray = tempTime.split(":");
		var cHours = bufTimeArray[0];
		var cMin = bufTimeArray[1];
		var cSeconds = bufTimeArray[2];
		
		// Set the time part the date object	
		objDate.setHours(cHours);
		objDate.setMinutes(cMin);
		objDate.setSeconds(0);
		objDate.setMilliseconds(0);
	
		return objDate;
	}

 	// Ajax Coding to check company in profile.
	var ajaxRequestObject;
	function initAjaxRequest() {
		try {
		  // Firefox, Opera 8.0+, Safari
		  ajaxRequestObject = new XMLHttpRequest();
		} catch (e) {
		  	// Internet Explorer
			try {
			   ajaxRequestObject = new ActiveXObject("Msxml2.XMLHTTP");  // IE 6 +
			} catch (e) {
			    try {
			      ajaxRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.5 +
			    } catch (e) {
			      	alert("Your browser does not support AJAX!");
			      	return false;
				}
			}
		}
	}

	function  isRealNumber(txt) { 
	   var flag = true;
	    var length = txt.length;
		
	    if (length != 0) {
	        for (n = 0; n < length; n++) { 
	          theChar = txt.substring(n, n + 1);
	          if ((theChar < "0") || (theChar > "9")) {
			  		if ((theChar != "-")) { 
	                	flag = false;
					}
	            }
	        }
		} 
	
	     return flag;
	}

function isStageWithSpecialChar(testString){
	var len = testString.length;
	var isNumber = false;
	var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 :-&%_";
	
	if (len > 0) { 
		for (i=0; i < len ; i++) { 
			var charAt = testString.charAt(i);
		    if (strValidChars.indexOf(charAt) == -1) { 
		     	return false;
		    }
	   	}
	}
	return true;
}

	function allowOnlyPositiveWholeNumber(evt) {
		
		var key;
		
	 	if (window.event) {
          key = window.event.keyCode;     //IE
	     } else {
          key = evt.which;     //firefox
		 }

	     
	     //48 - 57
	     if (key < 48 || key > 57) {
	     	if (key == 0 || key == 8) {
	     		return true;
	     	}
	     	return false;
	     }
	     return true;
	}	

	function allowOnlyPositiveDecimalNumber(evt) {
		
		var key;
		
	 	if (window.event) {
          key = window.event.keyCode;     //IE
	     } else {
          key = evt.which;     //firefox
		 }
	     //48 - 57
	     //alert(key);
	     //8 - Backspace
	     // 0 - Delete
	     if (key < 48 || key > 57) {
	     	if (key == 0 || key == 8 || key == 46) {
	     		return true;
	     	}
	     	return false;
	     }
	     return true;
		
	}

	function applyDisabledButtonClass(buttonArray) {
		for (var i = 0; i < buttonArray.length; i++) {
			var obj = document.getElementById(buttonArray[i]);			
			if (obj != null) {				
				obj.className = "buttondisabled";				
			}			
		}
		return true;
	}
	
	/**
	 * DHTML date validation script. Valid date format mm/dd/yyyy.
	 */
	// Declaring valid date character, minimum year and maximum year
	var dtCh= "/";
	var minYear = 1900;
	var maxYear = 2100;
	
	function isInteger(s){
		var i;
	    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}
	
	function stripCharsInBag(s, bag){
		var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}
	
	function daysInFebruary (year){
		// February has 29 days in any year evenly divisible by four,
	    // EXCEPT for centurial years which are not also divisible by 400.
	    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	function DaysArray(n) {
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}
	
	function isDate(dtStr){
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh)
		var pos2=dtStr.indexOf(dtCh,pos1+1)
		var strDay=dtStr.substring(0,pos1)
		var strMonth=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		if (pos1==-1 || pos2==-1){
			alert("The date format should be : dd/mm/yyyy")
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("Please enter a valid month")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
			alert("Please enter a valid day")
			return false
		}
		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
			alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
			return false
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
			alert("Please enter a valid date")
			return false
		}
		return true
	}

	// Added by Gaurav - CR162 and CR163
	function countOccurenceOfDoubleQuotes(searchString) {
		var count = 0;
	
	 	for (j = 0; j < searchString.length; j++ ) {
	  		var charInTestString = searchString.charAt(j);
			
	  		if (charInTestString == '"') {
	   			count++;
	  		}
	 	}
	
	 	return count;
	}
	
	function isValidStringWithDoubleQuotes(searchString) {	
		var isValid = false;
	 	var noOfDoubleQuotes = countOccurenceOfDoubleQuotes(searchString);
	
	 	if (noOfDoubleQuotes == 2) {
	  		var tokens = searchString.split('"');
	  		var firstToken = Trim(tokens[0]);
	   		var middleToken = Trim(tokens[1]);
	   		var lastToken = Trim(tokens[2]);
	
	   		if (middleToken.length > 0 && firstToken.length == 0 && lastToken.length == 0) {
	    		isValid = true;	
	   		} 
			
		 } else if (noOfDoubleQuotes == 0) {
		 	isValid = true;
		 }
	
	 	return isValid;
	}
	
	function isSpecialCharWithDoubleQuotes(testString){
		var len = testString.length;
		var isNumber = false;
		// Following string of valid characters contains all the 26 letters in upper and lower case and numbers and one white space.
		var strValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\" ";
		
		if (len > 0) { 
			for (i=0; i < len ; i++) { 
				var charAt = testString.charAt(i);
			    if (strValidChars.indexOf(charAt) == -1) { 
			     	return false;
			    }
		   	}
		}
		 return true;
	}
	// End - CR162 and CR163
	
