///**************************************************************///
/// This section checks if Parent window is closed
// if parent window is closed then 
fnWinCountTimer() ;
function fnWinCountTimer()
{
	window.setInterval("fnIsWinParentAlive()", 1000);
}

function fnIsWinParentAlive()
{
	if ((typeof (window.opener) == 'object') && (window.opener.closed == true))
	{
		alert("The parent window has been closed and thus the child windows will also be closed.")
		window.close();
	}
}
/// Parent Check section ends here
///**************************************************************///

// function allows only characters mentioned in sStr  onpaste
function fnAllowCharsPaste(type)
{
	//get the data in the clipboard
	var oData=window.clipboardData;
	var sData=String(oData.getData("text"));
	
	var bRetVal = false ;
	/*
	if ( String( bCaseCheck ) == "false" )
	{
		sData = sData.toLowerCase()
		//sStr = sStr.toLowerCase()
	}
	*/
	
	var iCharCode
	for ( iCtrj=0; iCtrj < String(sData).length  ; iCtrj++ )
	{
		iCharCode = String( String(sData).substr(iCtrj,1) ).charCodeAt(0)
		if ( iCharCode == 13 || iCharCode == 10)
		{
			continue ;
		}
	
		//type = type.toLowerCase()
	
		if (type == "currency" ) 
		{
			if ( ("0123456789$.,").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "phone") 
		{
			if ( ("0123456789-()+").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "email") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz@._-").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "number") 
		{
			if ( ("0123456789").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "alphanumber") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "address") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ()[],.'/").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "alpha") 
		{
			if ( ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}

		else if (type == "time") 
		{
			if ( ("0123456789:").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "date") 
		{
			if ( ("0123456789/").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "zipcode") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}				
		else 
		{
		  return false;
		}
	}
	
event.returnValue = bRetVal
return bRetVal

}


// Allowed values for type:
// Currency, Phone, Email, AlphaNumber, Number, Date,ZipCode
function checkInput(e, type) {
	var key;
	var keychar;
	
	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	
	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	type = type.toLowerCase();
	
	// control keys
	if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27)) {
		return true;
	}
	else if (type == "currency") {
		if ((("0123456789$.,").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "phone") {
		if ((("0123456789-()+").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "email") {
		if ((("0123456789abcdefghijklmnopqrstuvwxyz@._-").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "alpha") 
	{
		if ((("abcdefghijklmnopqrstuvwxyz ").indexOf(keychar) > -1))
		{
			return true ;
		}
		else
		{
			return false ;
		}
	}
	else if (type == "number") {
		if ((("0123456789").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "alphanumber") {
		if ((("0123456789abcdefghijklmnopqrstuvwxyz ").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "address") 
	{
		if ((("0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ()[],.'/").indexOf(keychar) > -1))
		{
			return true ;
		}
		else
		{
			return  false ;
		}
	}

	else if (type == "time") {
		if ((("0123456789:").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "date") {
		if ((("0123456789/").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else if (type == "zipcode") {
		if ((("0123456789abcdefghijklmnopqrstuvwxyz-").indexOf(keychar) > -1))
			return true;
		else
			return false;
	}
	else {
	   return false;
	}
}

function isNumber(inputVal) {
	var oneDecimal = false;
	var inputStr = inputVal.toString();
	if (inputStr.length == 0)
		return false;
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (oneChar == "." && !oneDecimal) {
			oneDecimal = true;
			continue;
		}
		if (oneChar < "0" || oneChar > "9") {
			return false;
		}
	}
	return true;
}

function isPosInteger(inputVal) {
	var inputStr = inputVal.toString();
	if (inputStr.length == 0)
		return false;
	for (var i = 0; i < inputStr.length; i++) {
		var oneChar = inputStr.charAt(i);
		if (oneChar < "0" || oneChar > "9") {
			return false;
		}
	}
	return true;
}

function adjustDecimalsForCurrency(inputVal) {
	var oneChar = "";
	var inputStr = inputVal.toString();
	if (inputStr == "") {
		return "";
	}
	var outputStr = ""
	var oneDecimal = false;
	var count = 0;
	var overFlowFlag = false;
	for (var i = 0; i < inputStr.length; i++) {
		oneChar = inputStr.charAt(i);
		if (oneChar == "." && !oneDecimal) {
			oneDecimal = true;
			outputStr = outputStr + oneChar;
			continue;
		}
		if (oneDecimal) {
			count += 1;
		}
		if (count > 2) {
			overFlowFlag = true;
			break;
		}
		outputStr = outputStr + oneChar;
	}
	if (overFlowFlag && Number(oneChar) > 5) {
		oneChar = outputStr.charAt(outputStr.length - 1);
		oneChar = Number(oneChar) + 1;
		outputStr = outputStr.substring(0, outputStr.length - 1) + oneChar.toString();
	}
	if (!oneDecimal)
		outputStr = outputStr + ".00"
	if (count == 1)
		outputStr = outputStr + "0"
	return outputStr;
}

function isCurrency(val) {
	val = val.replace(/\s/g, "");
    if(val.search(/^\$?\d{1,3}(,?\d{3})*(\.\d{1,2})?$/) == -1) {
         return false;
    }
	else {
		return true;
	}
}

function isDate(val) {
	var regdate1 = new RegExp("^[0-1]?[0-9]\/[0-3]?[0-9]\/[0-9]{4}$", "gi");
	var regdate2 = new RegExp("^[0-9]?[0-9]\/[0-9]?[0-9]\/[0-9]{2}$", "gi");
	if (!regdate1.test(val) && !regdate2.test(val)) {
		return false;
	}
	var datePieces = new Array();
	datePieces = val.split("/");
	monthval = parseInt(datePieces[0], 10);
	dayval = parseInt(datePieces[1], 10);
	yearval = parseInt(datePieces[2], 10);
	if (monthval < 1 || monthval > 12) {
		return false;
	}
	
	if ((monthval == 1 || monthval == 3 || monthval == 5 || monthval == 7 || monthval == 8 || monthval == 10 || monthval == 12) && (dayval < 1 || dayval > 31)) {
		return false;
	}
	else if ((monthval == 4 || monthval == 6 || monthval == 9 || monthval == 11) && (dayval < 1 || dayval > 30)) {
		return false;
	}
	else if (monthval == 2 ) {
		if (dayval < 1 )
		{
			return false;
		}
		else if (isLeapYear(yearval) && dayval > 29) {
			return false;
		}
		else if (!isLeapYear(yearval) && dayval > 28) {
			return false;
		}
	}
	if (datePieces[2].length == 2) {
		//put validation for 2 digit year when we can think of it.
	}
	else if (datePieces[2].length == 4) {
		if (yearval < 1900 || yearval > 2100) {
			return false;
		}
	}
	else {
		return false;
	}
	return true;
}

function isTime(timeVal) {
	var val = timeVal;
	if (timeVal.indexOf(":") < 0)
		return false;
	var timePieces = new Array();
	timePieces = timeVal.split(":")
	if (timePieces.length < 2)
		return false;
	if (timePieces[0] > 12)
		return false;
	if (timePieces[1] > 60)
		return false;
	if (timePieces.length == 3) {
		if (timePieces[2] > 60)
			return false;
	}
	return true;
}

function formatYear(val, prefix) {
	if (val == "")
		return val;
	var datePieces = new Array();
	datePieces = val.split("/");
	if (datePieces[2].length == 2) {
		val = datePieces[0] + "/" + datePieces[1] + "/" + prefix + datePieces[2]
	}
	return val;
}

function y2k(number) { 
	return (number < 1000) ? number + 1900 : number;
}

function formatDateTo4DigitYear(date, base) { 
	return (date < 100) ? date + base : date;
}

function daysBetween(date1,date2) {
    var difference =
        Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
	     - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);
    return difference/1000/60/60/24;
}

function getLastDayOfMonth(date) {
	var daysofmonth   = new Array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var daysofmonthLY = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	if (isLeapYear(y2k(date.getYear()))) {
		daysofmonth = daysofmonthLY;
	}
	
	return daysofmonth[date.getMonth()];
}

function isLeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}


//fnonDrop is added by Ashish Chauhan on 1 Feb 2006
function fnonDrop(type)
{
	//get the data in the clipboard
//	var oData=window.clipboardData;
	var sData=String(event.dataTransfer.getData("Text"));
	
	var bRetVal = false ;
	/*
	if ( String( bCaseCheck ) == "false" )
	{
		sData = sData.toLowerCase()
		//sStr = sStr.toLowerCase()
	}
	*/
	
	var iCharCode
	for ( iCtrj=0; iCtrj < String(sData).length  ; iCtrj++ )
	{
		iCharCode = String( String(sData).substr(iCtrj,1) ).charCodeAt(0)
		if ( iCharCode == 13 || iCharCode == 10)
		{
			continue ;
		}
	
		//type = type.toLowerCase()
	
		if (type == "currency" ) 
		{
			if ( ("0123456789$.,").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "phone") 
		{
			if ( ("0123456789-()+").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "email") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz@._-").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "number") 
		{
			if ( ("0123456789").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "alphanumber") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "address") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ()[],.'/").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "alpha") 
		{
			if ( ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}

		else if (type == "time") 
		{
			if ( ("0123456789:").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "date") 
		{
			if ( ("0123456789/").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}
		else if (type == "zipcode") 
		{
			if ( ("0123456789abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(String(sData).substr(iCtrj,1)  ) != -1 )
			{
				bRetVal = true ;
			}
			else
			{
				bRetVal = false ;
				break ;
			}
		}				
		else 
		{
		  return false;
		}
	}
	
	event.returnValue = bRetVal
	return bRetVal
}

function TrimAll(sStr){
	var sReturn = "";
	sStr = '' + sStr;
	var sSplit = sStr.split(" ");
	for(i = 0; i < sSplit.length; i++){
		sReturn += sSplit[i];
	}
	return sReturn;
}

/////////////////////////////////////////////////////method for checking email address
/////////////////////////////////////////////////////
//START fnCheckEmail function
//Added by Ashish Chauhan on 7 Feb 2006_11:58
//it will check the valid email id
function fnCheckEmail ( sEmail )
{
	re = new RegExp("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	if(!re.test(sEmail))
	{
		return false ;	
	}
	else
	{
		return true ;
	}
}
//END fnCheckEmail 
/////////////////////////////////////////////////////

