function dateDiff(p_strType, p_dtFrom, p_dtTo){
//Declarations
var v_dblMicroSecond;

//Initialize
v_dblMicroSecond= Date.UTC( p_dtTo.getFullYear(), p_dtTo.getMonth(), p_dtTo.getDate() ) -
	Date.UTC( p_dtFrom.getFullYear(), p_dtFrom.getMonth(), p_dtFrom.getDate() );
	
	//Process
	switch(p_strType){
		case "d":
			return v_dblMicroSecond/1000/60/60/24;
			break;
		case "m":
			return v_dblMicroSecond/1000/60/60;
			break;
		case "n":
			return v_dblMicroSecond/1000/60;
			break;
		case "s":
			return v_dblMicroSecond/1000;
			break;
	}//End Case
	return true;
}

function monthName(nindex){
	nindex= parseInt(nindex, 10);
	var laBulan = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	return(laBulan[nindex])
}

function allowNumericOnly(p_objText){
	var v_regExp= /^\d+$/;
	var v_strTemp;

	with(p_objText){
		if(value.length<2){
			v_strTemp= value;
			if( !v_regExp.test(v_strTemp) ) value= "";
		}
		else{
			//delete alphanumeric at beginning and at the end of string
			v_strTemp= value.substring(0,1);
			if( !v_regExp.test(v_strTemp) ) value= value.substring(1,value.length);
			
			v_strTemp= value.substring(value.length-1);
			if( !v_regExp.test(v_strTemp) ) value= value.substring(0,value.length-1);
			
			//delete alphanumeric at the middle string
			if( !v_regExp.test(value) ){

				v_strTemp= "";
				for(var v_intCounter=0; v_intCounter<value.length; v_intCounter++){
					if( v_regExp.test( value.substring(v_intCounter, v_intCounter+1) ) ) v_strTemp+= value.substring(v_intCounter, v_intCounter+1);
				}//end for
				value= v_strTemp;
			}//end if
			
		}//end if
	}//end with
	return true;
}

function trim(svalue){
	if(svalue!=""){
		while (svalue.charAt(0)==" ")
			svalue=svalue.substring(1,svalue.length)
		while (svalue.charAt(svalue.length-1)==" ")
			svalue=svalue.substring(0,svalue.length-1)
		return svalue
	}
	return ""
}

function delSpace(isi)
{
  var kata="";
  for(i=0;i<isi.length;i++)
  {    
    if(isi.charAt(i) != " " && isi.charCodeAt(i) != 13 && isi.charCodeAt(i) != 10)
    {    	  
	  kata += isi.charAt(i);
    }     
  }
  return kata
}

function y2k(nyear){
	return((nyear < 1000) ? nyear+1900 : nyear)
}


function isDate(nday,nmonth,nyear){
	if(nyear<1) return false;
	nmonth-=1
	nyear=y2k(nyear)
	var dtemp=new Date(nyear,nmonth,nday)
	var dyear=dtemp.getFullYear()
	if((dyear==nyear) && (dtemp.getMonth()==nmonth) && (dtemp.getDate()==nday))
		return true
	else
		return false
}

function isEmail(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	//var matchArray=emailStr.match(emailPat);
	var matchArray=emailStr.toLowerCase();
	matchArray=matchArray.match(emailPat);

	if (matchArray==null) {
		return false;
	}
		
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
	  }
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
		}
	}

	if (user.match(userPat)==null) {
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
		  }
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
		}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}

	if (len<2) {
		return false;
	}

	return true;
}

function checkMaximumLength(p_objValue, p_objCounter, p_intMaxLength){
	p_intMaxLength = parseInt(p_intMaxLength, 10)
	if(p_objValue.value.length>p_intMaxLength){
		p_objValue.value= p_objValue.value.substring(0, p_intMaxLength);
	}//End if
	p_objCounter.value= p_intMaxLength - p_objValue.value.length;
}

function validCcNumber(p_strNumber){

	var v_counter;
	var v_blnIsEven= false;
	var v_total= 0;
	var v_decodeNumber= "";

	if(p_strNumber== "") return false;

	for(v_counter=p_strNumber.length-1; v_counter>=0; v_counter--){
		if(v_blnIsEven){
			v_decodeNumber+= parseInt(p_strNumber.substr(v_counter, 1), 10) * 2;
		}
		else{
			v_decodeNumber+= parseInt(p_strNumber.substr(v_counter, 1), 10);
		}//End if
	
		v_blnIsEven= !v_blnIsEven;
	}//End for

	for(v_counter=v_decodeNumber.length-1; v_counter>=0; v_counter--){
		v_total+= parseInt(v_decodeNumber.substr(v_counter, 1), 10)
	}

	return (v_total%10== 0);
}

function Check_Cookies(p_strMsgType){

	var v_strValue;

	saveCookie('testCookies', 'Enable', 1);
	v_strValue = readCookie('testCookies');
	if (v_strValue == null) {	
		if (p_strMsgType == 'ALERT'){
			alert('You have to enable cookies in your browser configuration');
			return false;
		}else{
			if (p_strMsgType == 'WINDOW'){
				window.open('../M001-U50.html', 'wnd_Cookies','width=780,height=480,left=0,top=10')
			}
		}
	}
	return true;
}

function dateConfirmation(p_intFrYear, p_intFrMon, p_intFrDay,
	p_intToYear, p_intToMon, p_intToDay , p_dtNow){

//Declarations
var v_dtFrom= new Date(p_intFrYear, p_intFrMon-1, p_intFrDay);
var v_dtTo= new Date(p_intToYear, p_intToMon-1, p_intToDay);
var v_dtTemp= new Date( p_dtNow.getFullYear(), p_dtNow.getMonth(), p_dtNow.getDate() );
var v_strDate= monthName(p_intFrMon-1) + " " + p_intFrDay + ", " + p_intFrYear;

//Initialize
v_dtTemp.setYear( p_dtNow.getFullYear() + 1 );

	//Process
	if( Date.UTC(p_intFrYear, p_intFrMon-1, p_intFrDay )>
		Date.UTC(v_dtTemp.getFullYear(), v_dtTemp.getMonth(), v_dtTemp.getDate()) ){
		if( !confirm("Are you sure the Check-In date is " + v_strDate + "?") ) return false;
	}
	
	if( dateDiff("d", v_dtFrom, v_dtTo)>30 ){
		if( !confirm("Are you sure that the period of stay is more than 30 days?") ) return false;
	}

return true;
}
