// JavaScript Document
function initFormPimp(){
	var fpFormsArray = $$('form.fp-form') ;
	var fpFieldsArray = $$('.fp-field') ;
	
	// attach onSubmit handler to each form element
	for(i = 0; i < fpFormsArray.length; i++){	
		Event.observe(fpFormsArray[i],'submit',fpHandleFormSubmit) ;
	}
	// attach handlers to each element in the forms
	for(i = 0; i < fpFieldsArray.length; i++){		
		// go through form fields and store default values of each element, attach event handlers
		var elFF = fpFieldsArray[i] ;
		elFF.store('default_value',elFF.getValue()) ;
		Event.observe(elFF,'focus',fpHandleFieldFocus) ;
		Event.observe(elFF,'blur',fpHandleFieldBlur) ;
	}
	
	var fpSubmitLinksArray = $$('.fp-submit-link') ;
	for(i = 0; i < fpSubmitLinksArray.length; i++){		
		// go through form fields and store default values of each element, attach event handlers
		var elSL = fpSubmitLinksArray[i] ;
		Event.observe(elSL,'click',fpHandleSubmitClick) ;
	}
}

function fpHandleFieldFocus(ev){
	el = Event.element(ev) ;

	// if current value of the field is the default value...
	if(el.retrieve('default_value') == el.getValue()){
		el.style.color = "#000" ;
		el.clear() ;
	}
}

function fpHandleFieldBlur(ev){
	el = Event.element(ev) ;
	
	// if field was left blank, revert to the label text/colour
	if(el.value == ''){
		el.style.color = "#999999" ;
		el.value = el.retrieve('default_value') ;
	}
}

function fpHandleFormSubmit(ev){
	elForm = Event.element(ev) ;
	if(!fpValidateForm(elForm)){
		ev.stop() ;
	}
}

function fpHandleSubmitClick(ev){
	ev.stop() ;
	var el = Event.element(ev) ;
	var elForm = el.up('form') ;
	
	if(fpValidateForm(elForm)){
		elForm.submit() ;
	}
}

function fpValidateForm(formObj){
	var missingFieldsStr = "" ;
	var fpFieldElements = formObj.childElements() ;
	for(i = 0; i < fpFieldElements.length; i++){	
		field = fpFieldElements[i] ;
		if(field.hasClassName('fp-required') && (field.getValue() == field.retrieve('default_value') || field.getValue() == "")){
			missingFieldsStr += field.retrieve('default_value')+" was left blank\n" ;
		}
	}
	
	if(missingFieldsStr != ""){
		alert("Please correct the following errors in the form:\n\n"+missingFieldsStr) ;
		return 0 ;	
	}else{
		return 1 ;	
	}
}