var rules = {
	"form.validate" : 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 );
		}
		
		// 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" ||  elems[k].nodeName == "UL" ) continue;
					var valid = true;
					
					if ( elems[k].parentNode.lastChild.nodeName == "IMG" ) {
						elems[k].parentNode.removeChild( elems[k].parentNode.lastChild );
					}
					else if( elems[k].className == "checkboxgroup" ) {
						alert("group");
						valid = false;
					}
					else if ( elems[k].getAttribute( "name" ) == "email" || elems[k].getAttribute( "name" ) == "friend_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 correctly supplied. Please double-check the noted fields." );
				document.getElementById( first_error ).focus();
				return false;
			}
		}
	},
	
	"span.form-cal" : function( el ) {
		// replace <span class="form-cal"> tags with calendar image
		var calLink = document.createElement( "a" );
		calLink.href = "#";
		calLink.id = "form-cal-" + i;
		calLink.name = "form-cal-" + i;
		calLink.title = "Click to select a date";
		calLink.onclick = function() {
			var o = this.previousSibling;
			while ( o.nodeType != 1 ) {
				o = o.previousSibling;
			}
			cal.select( o, calLink.id, "MM/dd/yyyy" );
			return false;
		}
		
		var calImg = document.createElement( "img" );
		calImg.src = "images/icon-cal.gif";
		calLink.appendChild( calImg );
		
		el.parentNode.appendChild( calLink );
		el.parentNode.removeChild( el );
	},
	
	"div.family-activity div" : function( el ) {
		el.style.display = "none";
	},

	"div.family-activity h3 a" : function( el ) {
		//alert(el.firstChild.id);
		
		el.onclick = function() {
			h3 = this.parentNode;
			details = nextSibling(h3);
			Effect.toggle( details, "blind", {duration: 0.5} );
			return false;
		};
	},

	"div.package-wrapper" : function( el ) {
		var toggle_wrapper = document.createElement( "div" );
		toggle_wrapper.className = "package-toggle";
		//toggle_wrapper.style.clear = "both";
		
		var is_expandable = el.className.indexOf( "package-expandable" );
		if ( is_expandable != -1 ) {
			var toggle_link = document.createElement( "a" );
			toggle_link.setAttribute( "href", "#" + i );
			var toggle_text = document.createTextNode( "View details" );
			toggle_link.appendChild( toggle_text );
			toggle_wrapper.appendChild( toggle_link );
		}
		
		el.appendChild( toggle_wrapper );
	},
	
	"div.package-expandable div.package-long" : function( el ) {
		el.style.display = "none";
	},
	
	"div.package-toggle a" : function( el ) {
		el.onclick = function() {
		    if ( typeof window.jQuery !== 'undefined' && window.$ == jQuery ) {
			jQuery.noConflict();
		    }

			var longtext = getElementsByClassName( "package-long", "div", el.parentNode.parentNode );
			Effect.toggle( longtext[0], "blind", {duration: 0.5} );
			if ( this.lastChild.nodeValue == "View details" ) {
				this.lastChild.nodeValue = "Hide details";
			} else {
				this.lastChild.nodeValue = "View details";
			}
			return false;
		};
	},

	"div.wrapper-employee-package" : function( el ) {
		var toggle_wrapper = document.createElement( "div" );
		toggle_wrapper.className = "emp-package-toggle";
		//toggle_wrapper.style.clear = "both";
		
		var is_expandable = el.className.indexOf( "package-emp-expandable" );
		if ( is_expandable != -1 ) {
			var toggle_link1 = document.createElement( "a" );
			toggle_link1.setAttribute( "href", "#" + i );
			var toggle_text1 = new Image();
			toggle_text1.src="images/view-more.gif";
			toggle_link1.appendChild( toggle_text1 );
			toggle_wrapper.appendChild( toggle_link1 );
		}
		
		el.appendChild( toggle_wrapper );
	},
	
	"div.package-emp-expandable div.employee-package-long" : function( el ) {
		el.style.display = "none";
	},
	
	"div.emp-package-toggle a" : function( el ) {
		el.onclick = function() {
			var longtext = getElementsByClassName( "employee-package-long", "div", el.parentNode.parentNode );
			Effect.toggle( longtext[0], "blind", {duration: 0.5} );
			if ( this.lastChild.src.indexOf('view-more.gif')!=-1 ) {
				this.lastChild.src = "images/view-less.gif";
			} else {
				this.lastChild.src = "images/view-more.gif";
			}
			return false;
		};
	},
	
		
	
	"#meeting-space a" : function( el ) {
		el.onclick = function() {
			window.open( this.href, 'Resort_Map', 'width=760,height=550' );
			return false;
		};
	},

	"#how_heard_about" : function( el ) {
		el.onchange = function() {
			if (this.value == 13) {
				document.getElementById('how_heard_other_wrapper').style.display = 'inline';
				document.getElementById('how_heard_other').focus();
			}
			else {
				document.getElementById('how_heard_other_wrapper').style.display = 'none';
			}
		};
	}

};
Behaviour.register( rules );
