function CheckDate(sDay,sMonth,sYear)
{
	if (!CheckInt(sDay))	return false;
	if (!CheckInt(sMonth))	return false;
	if (!CheckInt(sYear))	return false;
				
	var dtDate = new Date(sYear, sMonth, sDay);
				
	return ( sMonth == dtDate.getMonth() );
}
			
function CheckDateFromArray(oControlArray)
{
			
	return CheckDate( oControlArray[0].options[ oControlArray[0].selectedIndex ].value,
					  oControlArray[1].options[ oControlArray[1].selectedIndex ].value-1,
					  oControlArray[2].options[ oControlArray[2].selectedIndex ].value );
				
}
			
function GetDateFromArray(oControlArray)
{
	//alert( oControlArray[0].options[ oControlArray[0].selectedIndex ].value );

	var dtDate = new Date( oControlArray[2].options[ oControlArray[2].selectedIndex ].value,
						   oControlArray[1].options[ oControlArray[1].selectedIndex ].value-1,
						   oControlArray[0].options[ oControlArray[0].selectedIndex ].value );
						   
	return dtDate.getDate() + '/' + (dtDate.getMonth()+1) + '/' + dtDate.getYear();
}

function GetDateMSFromArray(oControlArray)
{
	//alert( oControlArray[0].options[ oControlArray[0].selectedIndex ].value );

	var dtDate = new Date( oControlArray[2].options[ oControlArray[2].selectedIndex ].value,
						   oControlArray[1].options[ oControlArray[1].selectedIndex ].value-1,
						   oControlArray[0].options[ oControlArray[0].selectedIndex ].value );
						   
	return Date.UTC( oControlArray[2].options[ oControlArray[2].selectedIndex ].value,
					 oControlArray[1].options[ oControlArray[1].selectedIndex ].value-1,
					 oControlArray[0].options[ oControlArray[0].selectedIndex ].value );
}

function CheckInt(sText)
{
	return ( !isNaN(parseInt(sText)) ); 
}
			
function CheckFloat(sText)
{
	return ( !isNaN(parseFloat(sText)) ); 
}

function CheckLength(sText)
{
	return (sText.length) ? true : false;
}

function GetSelectedValue(oSelect)
{
	return oSelect.options[oSelect.selectedIndex].value;
}

function round(number,X) {
	// rounds number to X decimal places, defaults to 2
	X = (!X ? 2 : X);
	
	return Math.round(number * Math.pow(10,X) ) / Math.pow(10,X);
    
    return Math.floor(number*Math.pow(10,X))/Math.pow(10,X);
}

function parseFloatInput()
{
	var cKeyCode = event.keyCode;
	
	if ( ( isNaN( String.fromCharCode( event.keyCode ) ) ) && ( String.fromCharCode(event.keyCode) != '.' ) )
			event.keyCode = 0;
}

function parseIntInput()
{
	var cKeyCode = event.keyCode;
	
	if ( isNaN( String.fromCharCode( event.keyCode ) ) )
			event.keyCode = 0;
}

function padInt(iInt)
{
	var sInt = iInt.toString();
	
	if (sInt.length == 1)
		sInt = '0' + sInt;
	
	return sInt;
}

function trim(sStr)
{		
	sStr = sStr.replace(/(^\s*)|(\s*$)/g,"");
	return sStr;
}


function IsEmpty(val)
{	
	return (val.replace(/\s/g,"").length==0);
}



function HTMLDecode(sStr)
{
	sStr = sStr.replace(/\&gt\;/g,">");
	sStr = sStr.replace(/\&lt\;/g,"<");
	sStr = sStr.replace(/\&quot\;/g,"\"");
	return sStr;
}


//ADDRESS SPECIFICATION (http://www.rfc.net/rfc822.html)
function parseEmail(email, notrequired) {
	if ( email.length = 0 ){
		if (!notrequired)
			return false;
		else
			return true;
	}

	//addr-spec   =  local-part "@" domain  
	var AddrSpec;
	//local-part  =  word *("." word)  
	var LocalPart;
	//domain      =  sub-domain *("." sub-domain)
	//The address must end in maximium of four-letter domain, or min two letter country.
	var Domain;
	//atom        =  1*<any CHAR except specials, SPACE and CTLs>
	//specials    =  "(" / ")" / "<" / ">" / "@" 
	//		        /  "," / ";" / ":" / "\" / <">  
	//                /  "." / "[" / "]"             
	var Atom;

	Atom		="[^\\(\\)<>@,;:\\\\\"\\.\\[\\]\\s]+";
	LocalPart	="(" + Atom + "\\.)*" + Atom;
	Domain		="(" + Atom + "\\.)+" + "\\w{2,4}";
	AddrSpec	="^" + LocalPart + "@" + Domain + "$";
	
	var EmailPat=new RegExp(AddrSpec);
	
	 return EmailPat.test(email);
	
	
}


