
/*#Checks for validity of a string [ pString ]:The String which requires validatio; [ pType ]:type of validation*/
function isCurrency(svalue){return chkString(svalue,"currency");}//Added by kingshuk on 18 Oct 2004
function isNumeric(svalue){return chkString(svalue,"numeric");}
function isShort(svalue){return chkString(svalue,"short");}
function isPhone(svalue){return chkString(svalue,"phone");}
function isalphanumeric(svalue){return chkString(svalue,"alphanumeric");}
function isalpha(svalue){return chkString(svalue,"alpha");}
function isdecimal(svalue){return chkString(svalue,"decimal");}

function chkString(pString,pType){
	var toCheck = ""
	switch(pType.toLowerCase()){
		case "alpha":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.' "
			break;
		case "alphanumeric":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
			break;
		case "numeric":
			toCheck = "0123456789"
			break;
		case "decimal":
			toCheck = "0123456789."
			break;
		case "currency":
			toCheck = "0123456789, ."
			break;
		case "spalphanumeric":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-& "
			break;
		case "phone":
			toCheck = "0123456789 ()-+";
			break;
		case "short":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@. ";
			break;
		case "name":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.!@#$%^&*-_()?/{}[]+*\|~`,><:;= "
			break;
		case "password":
			toCheck = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
			break;
		case "ishtml":
			toCheck = "<>/"	
		case "negitivenos":
			toCheck = "0123456789-+."
			break;
	}
	for(i=0;i<pString.length;i++){
		if(toCheck.indexOf(pString.charAt(i))==-1)return false
	}
	return true
}

//Function Added by Kingshuk To check Floating Values
function retFmtStr(srcStr) {
	
	 var resStr = "";
	 var AExists = false;
	 var NExists = false;

	 for (var i=0; i < srcStr.length; i++) {
		if ((srcStr.substring(i, i+1) == "A") && (!AExists)) {
			resStr = resStr+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOQPRSTUVWXYZ";
			AExists = true;
		}
		else if ((srcStr.substring(i, i+1) == "9") && (!NExists)) {
			resStr = resStr+"0123456789";
			NExists = true;
		}
		else 
			resStr = resStr+srcStr.substring(i, i+1);
	 }

	 return (resStr);

}
function IsExistsInStr(data, Sourcestr) {

	 var resStr = retFmtStr(Sourcestr);
	 var thisChar;
	 for (var i=0; i < data.length; i++) {
 		thisChar = data.substring(i, i+1);
		if (resStr.indexOf(thisChar, 0) == -1)
			return (false);
	 }
	 return (true);

}
function IsFloatValid(FloatData) {
	var AppearCnt=0;
	if (IsExistsInStr(FloatData, "-9.")) {
		for (var i=0; i < FloatData.length; i++) {
			if (FloatData.substring(i, i+1) == ".")
				AppearCnt++;
		}
	}
	else
		AppearCnt=2;

	return (AppearCnt > 1)? false : true;
}
//Ends Here
//Function Added by Kingshuk To Format NumberAnd Currency
function CurrencyNumFormat(ival)
{

var i = parseFloat(ival);

if(isNaN(i)) { i = 0.00; }

//i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);

if(s.indexOf('.') < 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = s;
return s;
}

function CurrencyNumFormatAll(ival)
{

var i = parseFloat(ival);

if(isNaN(i)) { i = 0.00; }

//i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);

if(s.indexOf('.') < 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = s;
return s;
}

// Added By Gireesh Tripathi
function FormatNumber(ival){
   var i = parseFloat(ival);

	if(isNaN(i)) { i = 0.00; }

	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);

	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = s;
	return s;
}

/*###############################################################
Added By Girish Tripathi on 9/02/05
Function : getkey
Purpose: Returns Key Code of the key which is pressed. 
Input parameter: Event Object
###############################################################*/
function getkey(e){
	if (window.event)
	   return window.event.keyCode;
	else if (e)
	   return e.which;
	else
	   return null;
}

/*###############################################################
Added By Girish Tripathi on 9/02/05
Function : ValidateKey
Purpose: ValidateKey
Input parameter: 1. Event Object
				 2. String of allowed characters. 
###############################################################*/
function ValidateKey(e, psAllowedChars){
	var key, keychar;
	key = getkey(e);
	if (key == null) return true;

	// get character

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();		
	psAllowedChars = psAllowedChars.toLowerCase();
	
	// check goodkeys	
	if (psAllowedChars.indexOf(keychar) != -1)
		return true;
		
	// control keys	
	
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
  	
	return false;
}

/*###############################################################
Added By Medha Deshmukh on 10/11/05
Function : compareDate
Purpose: Compate To dates
Input parameter: 1. Start Date
				 2. End Date
###############################################################*/
function compareDate(startDate,endDate){	
	datStart = new Date(startDate)//.parse
	datEnd = new Date(endDate)//.parse
	if(datStart >= datEnd)
		return false
	else
		return true
	}

/*###############################################################
Added By Medha Deshmukh on 11/11/05
Function : compareToday
Purpose: Compare Entered date with TOdays date. Entered date should not be grater than today's date
Input parameter: 1. Entered date
				
###############################################################*/
function compareToday(startDate){	
	datStart = new Date(startDate)//.parse
	datEnd = new Date()  //.parse
	if(datStart >= datEnd)
	{
	/// Siddharth
	///alert()
		return false}
	else
		return true
	}
	
	
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Added By Shabana on 5-Dec-2006
Function: CheckFinYear
Purpose: Entered date should be in given financial year and month sould be same to the month selected(ABMS Module) 
Input Parameter: 1.SpreadSheet object 2.Column of Date in SpreadSheet 3. Row index 4.Financial Year 5.Month in Combo
@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/	
function CheckFinYear(poSpread,piCol,piRow,psYear,psMonth)
{								
	var arrFinYear=psYear.split('-')
	var iRowCount = poSpread.GetRowCount();
	var i =0
																						
	for (i=0;i<iRowCount;i++)
	{											
		var arrDate=poSpread.GetValue(piRow,piCol).split('/')												
		if(arrFinYear[0]==arrDate[2])
		{						
			if(arrDate[1].toLowerCase()=="apr" || arrDate[1].toLowerCase()=="may" || arrDate[1].toLowerCase()=="jun" || arrDate[1].toLowerCase()=="jul" || arrDate[1].toLowerCase()=="aug" || arrDate[1].toLowerCase()=="sep" || arrDate[1].toLowerCase()=="oct" || arrDate[1].toLowerCase()=="nov" || arrDate[1].toLowerCase()=="dec")
			{							
				if(arrDate[1].toLowerCase()==psMonth.toLowerCase())
				{																
					true;
				}
				else
				{
					alert("Enter Date for Month " + psMonth)
					poSpread.SetValue(piRow,piCol,"",true)
					poSpread.SetActiveCell(piRow,piCol-1); 
				}
			}							
				else
				{								
					alert("Enter Date in financial Year" + psYear)
					poSpread.SetValue(piRow,piCol,"",true)
					poSpread.SetActiveCell(piRow,piCol-1); 
				}
		}//end if			 			
		else if(arrFinYear[1]==arrDate[2])
		{
			if(arrDate[1].toLowerCase()=="jan" || arrDate[1].toLowerCase()=="feb" || arrDate[1].toLowerCase()=="mar")
			{
				if(arrDate[1].toLowerCase()==psMonth.toLowerCase())
					true;
				else
				{
					alert("Enter Date for Month " + psMonth)
					poSpread.SetValue(piRow,piCol,"",true)
					poSpread.SetActiveCell(piRow,piCol-1); 
				}
			} 
			else
			{								
				alert("Enter Date in financial Year" + psYear)
				poSpread.SetValue(piRow,piCol,"",true)
				poSpread.SetActiveCell(piRow,piCol-1); 
			}		
		}//end elseif 		
		else
		{
			alert("Enter Date in financial Year" + psYear)
			poSpread.SetValue(piRow,piCol,"",true)
			poSpread.SetActiveCell(piRow,piCol-1); 			
		}						 												
	}//end for	
																		
}//end function				

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Added by Shabana on 15-Dec-06
//Function : DateDif 
//Purpose : To get Difference between 2 dates.
//Parameters : 1.startDate as string which is subtracted from endDate, 2.endDate as string from which startDate is subtracted.  
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	function DateDif(startDate,endDate)
	{
		var oneday=1000*60*60*24
		var months=1000*60*60*24*30
		/*arr = startDate.split("/")
		startDate = getMonthNo(arr[1])+"/"+arr[0] +"/"+ arr[2]
		arr = endDate.split("/")
		endDate = getMonthNo(arr[1])+"/"+arr[0] +"/"+ arr[2]*/
		
		datStart = new Date(startDate)
		datEnd = new Date(endDate)
		//return (datEnd - datStart)/oneday
		//alert((datEnd - datStart)/oneday)
		var days = (datEnd - datStart)/oneday
		return days
		/*var Month 
		Month = parseInt(days / 12)
		alert ((datEnd - datStart)/months)*/
	}
		
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Added by Shabana on 15-Dec-06
//Function : DateFormat
//Purpose : To get Date formate in (MM/DD/YYYY) for the Input Date as (DD/MM/YYYY)
//Parameters : 1. Date as string 
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	function DateFormat1(psDate)
	{	
		aDate = psDate.split("/")		
		strNewDate = aDate[1]+ "/" + aDate[0]+ "/" + aDate[2];		
		return strNewDate;
	}
	
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Added by Shabana on 19-Dec-06
//Function : GetFutureDate
//Purpose : To get Date in future by the number of days 
//Parameters : 1. Date as Date, 2. Number of days as integer 
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
function GetFutureDate(pdDate,noDays)
{
	pdDate.setDate(pdDate.getDate()+noDays)
	var aDate  = pdDate.toString().split(" ")									
	strNewDate = aDate[2]+ "/"+ getMonthNumber(aDate[1])+ "/" +aDate[5]
	return strNewDate;
}