/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

var dayName = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday")
var monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var now = new Date

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 strMonth=dtStr.substring(0,pos1);
	var strDay=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 : mm/dd/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
}

function valiDATE_Start(){
	var dt=document.fResponse.txtStart;
	if (isDate(dt.value)==false){
		dt.focus();
		return false;
	}
    return true;
 }

function valiDATE_Fin(){
	var dt=document.fResponse.txtFin
	if (isDate(dt.value)==false){
		dt.focus();
		return false;
	}
    return true;
 }
 
function valiDATE_Return(){
	var dt=document.newTravel.tReturn
	if (isDate(dt.value)==false){
		dt.focus();
		return false;
	}
    return true;
 }
 
function stringEmpty ( address ) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( address.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign ( address ) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if ( address.indexOf ( '@', 0 ) == -1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noSpace (address) {
    // CHECK THAT THERE IS NO ' ' CHARACTER IN THE STRING
    if ( address.indexOf ( ' ', 0 ) == -1 ) {
        return ( false );
    } else {
        return ( true );
    }
}

function nothingBeforeAt ( address ) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( address.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( address.indexOf ( '[', 0 ) == -1 && address.charAt ( address.length - 1 ) == ']' ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if ( address.indexOf ( '[', 0 ) > -1 && address.charAt ( address.length - 1 ) != ']' ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noCharBtw ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@xxx.xxx', THEN CHECK FOR RIGHT BRACKET	
    //if ( address.indexOf ( '.', 0 ) > -1 ) {
		//var len1 = address.indexOf ( '@', 0 );
		//var len2 = address.lastIndexOf ( '.', 0 );
		//if  ((len2-len1)<2){
			//return ( true );
		//}
		//return ( false );
    //}
	 return ( false );
}

function noValidPeriod ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if ( address.indexOf ( '.', 0 ) == -1 )
        return ( true );

    return ( false );
}

function noValidSuffix ( address ) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if ( address.indexOf ( '@', 0 ) > 1 && address.charAt ( address.length - 1 ) == ']' )
        return ( false );

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = address.length;
    var pos = address.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 3 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function dropdownValidate(mySel)
{
	var myVal;
	myVal = mySel.selectedIndex;
	if(myVal==0)
	{		
		return true;
	}	
	return false;
}

//=================== get selected value =======================================
function dropdown(mySel){
	var myVal;
	myVal = mySel.options[mySel.selectedIndex].value;
	if(myVal=='')
	{
		myVal = '0';
	}
	return myVal;
}

function getValue()
{
	var i =0;
	while(i<4)
	{	
		if(document.register_congress_2010.Diet[i].checked==true)
		{
			document.register_congress_2010.diets.value = document.register_congress_2010.Diet[i].value;
		}
		i++;	
	}
}
//=================== get selected value =======================================
function dropdownVal(mySel)
{
	var myVal;
	myVal = mySel.options[mySel.selectedIndex].value;
	if(myVal=='')
	{
		myVal = '00';
	}
	return myVal;
}

function checkAcc()
{	
	if((document.register_congress_2010.position1.value.length>0)||
	((document.register_congress_2010.SurName1.value.length>0)&&
	(document.register_congress_2010.FirstName1.value.length>0)))
	{
		document.register_congress_2010.acc.value = 'true'
		return true;
	}
	document.register_congress_2010.Title1.selectedIndex = 0;
	document.register_congress_2010.SurName1.value='';
	document.register_congress_2010.FirstName1.value='';
	document.register_congress_2010.acc.value = 'false'
	return false;
}

function extract(amount)
{
	//var arrAmount = amount.split('|');
	if (document.register_congress_2010.onSite.checked == true)
	{
		//return arrAmount[1];
		var s2 = amount.substring(amount.indexOf('|')+1,amount.length);
		return parseInt(s2);
	}
	if (document.register_congress_2010.onSite.checked == false)
	{
		var s2 = amount.substring(0,amount.indexOf('|'));
		return parseInt(s2);
		//return arrAmount[0];
	}
}

function swapValue()
{
	if (document.register_congress_2010.onSite.checked == true)
	{
		document.register_congress_2010.onSite.value = document.register_congress_2010.payType.value;
		document.register_congress_2010.payType.value = 'onSite';
	}
	if (document.register_congress_2010.onSite.checked == false)
	{
		if (document.register_congress_2010.onSite.value != 'onSite'){
		document.register_congress_2010.payType.value = document.register_congress_2010.onSite.value;
		}
		document.register_congress_2010.onSite.value = 'onSite';
	}
	return true;
}

//======================== get amount ========================================
function calculate(paytype)
{
	var dropdown = document.register_congress_2010.Membership
	if(paytype =='Congress fee')
	{
		var myAmount;
		var myAmount2 = parseInt(document.register_congress_2010.boothfee.value);
		if(checkAcc()==true)
		{			
			if(dropdownVal(dropdown)=='Member')
			{
				myAmount = 
				extract(document.register_congress_2010.Delegate.value)+
				extract(document.register_congress_2010.AccDelegate.value);
				document.register_congress_2010.delFee.value = extract(document.register_congress_2010.Delegate.value);
				document.register_congress_2010.accdelFee.value = extract(document.register_congress_2010.AccDelegate.value);
			}
			if(dropdownVal(dropdown)=='Non Member')
			{
				myAmount = 
				extract(document.register_congress_2010.NonDelegate.value)+
				extract(document.register_congress_2010.AccNonDelegate.value);
				document.register_congress_2010.delFee.value = extract(document.register_congress_2010.NonDelegate.value);
				document.register_congress_2010.accdelFee.value = extract(document.register_congress_2010.AccNonDelegate.value);
			}
			if(dropdownVal(dropdown)=='guest')
			{
				myAmount = 0;
				myAmount2 = 0;
			}
			if(dropdownVal(dropdown)=='0')
			{
				myAmount = 0;
				myAmount2 = 0;
			}
		}
		
		if(checkAcc()==false)
		{
			if(dropdownVal(dropdown)=='Member')
			{
				myAmount = extract(document.register_congress_2010.Delegate.value);
				document.register_congress_2010.delFee.value = myAmount;
				document.register_congress_2010.accdelFee.value = 0;
			}
			if(dropdownVal(dropdown)=='Non Member')
			{
				myAmount = extract(document.register_congress_2010.NonDelegate.value);
				document.register_congress_2010.delFee.value = myAmount;
				document.register_congress_2010.accdelFee.value = 0;
			}
			if(dropdownVal(dropdown)=='guest')
			{
				myAmount = 0;
				myAmount2 = 0;
			}
			if(dropdownVal(dropdown)=='0')
			{
				myAmount = 0;
				myAmount2 = 0;
			}
		}
		document.register_congress_2010.registration_fees.value = myAmount;
		document.register_congress_2010.hRegistration_fees.value = myAmount;
		document.register_congress_2010.Congress_fee.value = myAmount + myAmount2;
		document.register_congress_2010.hiddenTotal.value = myAmount + myAmount2;		
	}
	
	if(paytype == 'booth')
	{
		var myAmount = parseInt(document.register_congress_2010.registration_fees.value);
		var myAmount2;
		var boothOne = document.register_congress_2010.booth1.selectedIndex;
		var boothTwo = document.register_congress_2010.booth2.selectedIndex;
		if(((boothOne<1)&&(boothTwo>0))||((boothOne>0)&&(boothTwo<1))||(boothOne==boothTwo))
		{
			if (boothOne>0){
				myAmount2 = getSizeVal(dropdownVal(document.register_congress_2010.booth1));
			}else{
				myAmount2 = getSizeVal(dropdownVal(document.register_congress_2010.booth2));
			}
			document.register_congress_2010.Exhibition_space.value = 1
		}
		if((boothOne<1)&&(boothTwo<1))
		{
			myAmount2 = 0;
			document.register_congress_2010.Exhibition_space.value = 0
		}
		if((boothOne>0)&&(boothTwo>0)&&(boothTwo != boothOne))
		{			
			myAmount2 = getSizeVal(dropdownVal(document.register_congress_2010.booth1)) 
						+ getSizeVal(dropdownVal(document.register_congress_2010.booth2));
			
			document.register_congress_2010.Exhibition_space.value = 2
		}
		if(dropdownVal(dropdown)=='guest')
		{
			myAmount = 0;
			myAmount2 = 0;
			document.register_congress_2010.booth2.selectedIndex=0;
			document.register_congress_2010.booth1.selectedIndex=0;
		}
		if(dropdownVal(dropdown)=='0')
		{
			myAmount = 0;
			myAmount2 = 0;
			document.register_congress_2010.booth2.selectedIndex=0;
			document.register_congress_2010.booth1.selectedIndex=0;
		}
		document.register_congress_2010.boothfee.value = myAmount2;
		document.register_congress_2010.hBoothfee.value = myAmount2;
		document.register_congress_2010.Congress_fee.value = myAmount + myAmount2;
		document.register_congress_2010.hiddenTotal.value = myAmount + myAmount2;
	}	
return true;
}

function runAll()
{
	 swapValue(); 
	 calculate('Congress fee'); 
	 calculate('booth');
	 return true;
}













