var rules = {
	"form" : function( el ) {
		if ( window.CalendarPopup ) {
			// instantiate CalendarPopup and set some params
			var yesterday = new Date();
//			yesterday.setDate( yesterday.getDate() + 1);
			cal = new CalendarPopup( "cp" );
			cal.addDisabledDates( null, formatDate( yesterday, "yyyy-MM-dd" ) );
			
			// create the <div> for calendar popup
			var d = document.createElement( "div" );
			d.id = "cp";
			document.body.appendChild( d );
		}
	},
	
	"form.validate" : function( el ) {
		// handle form validation
		el.onsubmit = function() {
			var form_fields = getElementsByClassName( "field", "div" );
			var counter = 0;
			var first_error = "";
			
			// loop through each div.field
			for ( var i = 0; i < form_fields.length; i++ ) {
				var elems = form_fields[i].getElementsByTagName( "*" );
				// loop through all elements in each div.field
				for ( var k = 0; k < elems.length; k++ ) {
					if ( !elems[k].className ) continue;
					if ( elems[k].className.indexOf( "required" ) < 0 ) continue;
					if ( elems[k].nodeName == "LABEL" ) continue;
					var valid = true;
					
					if ( elems[k].parentNode.lastChild.nodeName == "IMG" ) {
						elems[k].parentNode.removeChild( elems[k].parentNode.lastChild );
					}
					
					if ( elems[k].getAttribute( "name" ) == "email" ) {
						var regExp = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
						var regExp2 = /(\s+)|(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
						if ( ( elems[k].value.search( regExp ) ) == -1 || elems[k].value.search( regExp2 ) != -1 )
							valid = false;
					} else {
						if ( elems[k].value.replace( /(^\s+)|(\s+$)/g, '' ).length < 1 )
							valid = false;
					}
					
					if ( !valid ) {
						var img = document.createElement( "img" );
						img.setAttribute( "src", "images/icon-warning.gif" );
						img.setAttribute( "class", "validation-error" );
						elems[k].parentNode.appendChild( img );
						if ( first_error == "" ) {
							first_error = elems[k].getAttribute( "id" );
						}
						counter++;
					}
				}
			}
			
			if ( counter > 0 ) {
				alert( "One or more required fields were not correct	ly supplied. Please double-check the noted fields." );
				document.getElementById( first_error ).focus();
				return false;
			}
		}
	},
	/*

	"span.form-depart" : function( el ) {
		
		var calLink = document.getElementById("depart");
				
		calLink.onclick = function() {
			var o = calLink;
			cal.select( o, calLink.id, "MM/dd/yyyy" );
			return false;
		}


	},
*/
	
	"#form-arrive" : function( el ) {

		var calLink = document.getElementById("arrive");
		
		calLink.onclick = function() {
			var o = calLink;
			cal.select( o, calLink.id, "MM/dd/yyyy" );
			return false;
		}
	},

	"#form-depart" : function( el ) {
		
		var calLink = document.getElementById("depart");
				
		calLink.onclick = function() {

			var o = calLink;
			var arrive_string = document.getElementById('arrive').value
				if(arrive_string.length > 0 && arrive_string != 'MM/DD/YYYY') 
				{
					arrive_array = arrive_string.split('/')
					var depart_string = new Date(arrive_array[0]+'/'+(parseInt(arrive_array[1])+1)+'/'+arrive_array[2]);
					var depart_string = formatDate(depart_string , "MM/dd/yyyy" )	
					cal.select(o,calLink.id,'MM/dd/yyyy',depart_string); return false;
				}
				else
				{
				alert('Please choose `Check In` date first.')
				}
			return false;
		}
	}

	/*
	
	"form#check-avail input#arrive" : function( el ) {
		el.onblur = function() {
			var tomorrow = parseDate( el.value );
			tomorrow.setDate( tomorrow.getDate() + 1 );
			document.getElementById( "depart" ).value = formatDate( tomorrow, "MM/dd/yyyy" );
		}
	}*/
};
Behaviour.register( rules );