window.addEvent('domready', function(){
	var error = [];

/*
	$$('a.tooltips').each(function(element,index) {
			var content = element.get('title').split('::');
			element.store('tip:title', content[0]);
			element.store('tip:text', content[1]);
	});

	//create the tooltips
	var ToolTips = new Tips('.tooltips',{
		fixed: true,
		hideDelay: 50,
		showDelay: 50
	});
	
	//customize

	ToolTips.addEvents({
		'show': function(tip) {
			tip.fade('in');
		},
		'hide': function(tip) {
			tip.fade('out');
		}
	});
*/
	Element.implement({  
		 //implement show  
		 show: function() { 
			 this.setStyle('display',''); 
			 this.fade('in');  
		 },  
		 
		 //implement hide  
		 hide: function() {
			this.fade('out');
			this.setStyle('display','none');     
		 }  
	});

	var validate_form = function() {
		error.empty();	// clear previous errors
		// collect all fields			
		$$('.required').each(function(field){
			switch(field.name){
				case "salutation":
					if(field.value.length < 1){
						error.include("Your salutation is required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "first_name": case "last_name":
					if(field.value.length < 1){
						error.include("Your first and last name are required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "gcempnum":
					if(isNaN(field.value) || field.value.length != 6){
						error.include("Please enter a valid 6 digit Guitar Center employee number.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "email":
					var regex = new RegExp("^[0-9a-z\\._]+@[0-9a-z]+\\..+$","i");

					if (!regex.test(field.value)){
						error.include("A valid email address is required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");						
					break;
				case "zip":
					if(isNaN(field.value) || field.value.length < 5){
						error.include("Please enter a valid Zip Code.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "address1": 
					if(field.value.length < 2){
						error.include("Your complete address is required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "gcempnum":
					if(field.value.length < 1){
						error.include("Please provide your Guitar Center employee number.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "company":
					if(field.value.length < 3){
						error.include("Please provide your artist name or company name.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "city":
					if(field.value.length < 3){
						error.include("Please provide the city where the Guitar Center store is located.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "state":
					if(field.value == ""){
						error.include("Please provide the state where the Guitar Center store is located.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "phone_type":
					if(field.value == ""){
						error.include("Please provide a phone type.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "phone1": case "phone2":
					if(isNaN(field.value) || field.value.length < 3){
						error.include("Your complete, valid phone number is required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				 case "phone3":
					if(isNaN(field.value) || field.value.length < 4){
						error.include("Your complete phone number is required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "website":
					if(field.value.length < 3){
						error.include("Please provide the url of your website.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
				case "area_interest":
					if(field.value == ""){
						error.include("Please provide an area of interest.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;

				case "birth_year": case "birth_month": case "birth_day":
					if(!field.value){
						error.include("Your birth date required.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
					
				case "shirtsize":
					if(field.value == ""){
						error.include("Please provide a shirt size.");
						field.addClass("field_error");
					}
					else
						field.removeClass("field_error");
					break;
			}
		});
	}

	var submit_form = function(form) {
		if(error.length == 0){
			// collect all data to submit 
			options = {};
			$$('#contact_form input','#contact_form select','#contact_form textarea').each(function(field){
				options[field.name] = field.value;
				if(field.get('rel')) options[field.name] = field.get('rel');	// cannot grab hidden field values??
				if(field.type == "checkbox") options[field.name] = (field.checked) ? 1 : 0;
			});
			
			var req = new Request.JSON({
				url:'/ajax_proxy.php',
				method:'post',
				autoCancel:true,
				data: options,
				onRequest: function() {
					$('error_messages').empty().show();
					var error_msg = new Element('p', {'html': 'Processing request...<br /><br />'}).inject($('error_messages'));
					$('submit_button').disabled = true;
					$('submit_button').value = "sending...";
				},
			
				onComplete: function(jsonObj) {
					var error_msg = new Element('p', {'html': jsonObj.error }).setStyle('font-weight','bold').inject($('error_messages').empty());
					// clear all fields
					$$('#contact_form input','#contact_form select','#contact_form textarea').each(function(field){
						if(field.type != "button" && field.type != "hidden")
							field.value = "";
					});
					
					$('submit_button').value = "Thank You!";
					$$('.required').each(function(field){ field.disabled = true; });
				}
			}).send();
			
		}
		else{
			$('error_messages').empty().show();
			error.each(function(msg){
				var error_msg = new Element('p', {'html': msg}).inject($('error_messages'));
			});
		}				
	}

	// set up triggers		
	$$('.required').each(function(field){
		if(field.type == "text" || field.type == "textarea" || field.type == "password")
			field.addEvent("keyup", function(){ validate_form.run(); } );
		else if(field.type == "select-one")
			field.addEvent("change", function(){ validate_form.run(); } );
	});
	
	$('submit_button').addEvent('click', function(e){ e.stop(); validate_form.run(); submit_form.run(this.name); } );

});