//   validate.js

valid={
		
		//global variable for form errors
	errorCount:0,
	
		//initialize function observes all input fields
	init:function (){
		if(!document.getElementById || !document.createTextNode){return;}
		$('input').change(function(event){
			valid.testContent(event);
		});
	},
	
		//id is pulled from element, sent to validation
	testContent:function(event){
		str=$(valid.getTarget(event)).attr('id');
			try{
				valid.callCakeAjax(str);
				}
			catch(err){};
	},

	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		while(target.nodeType!=1 && target.nodeName.toLowerCase()!='body'){
			target=target.parentNode;
		}//end if
		return target;
	},
	
		//element value is extracted and sent to same validation file server-side uses
	callCakeAjax:function(str){
		var params = str + '=' + $('#'+str).val();
		new $.ajax({
			url:'/leads/validate_lead',
			type:'POST',
			data: params,
			success: function(something){
				var response = something || "Error in field";
				valid.isValid(str, response);	
			},
			error: function(){}
		});
	},
	
		//test response of ajax call
	isValid:function(str, response){
		var resptest = response;
		resptest = resptest.substr(0,1);
		if(resptest != true)
			valid.addColor(str, response);
		else
			valid.removeColor(str);
	},
		
		//adds errors to specific field as well as showing general error messages
	addColor:function(str, response){
		$('#'+str).parent().addClass('error');
		if(valid.errorCount<=0){
			var src = $('#submitbutton').attr('src').replace('.jpg','_ovr.jpg');
			$('#submitbutton').attr('src',src).disabled=true;
		}
			$(str).focus(function(event){
				$(str).focus(this.select());
			});
		if($('#'+str).next(0).size()<=0){
			valid.createErrorMsg(str, response);}
		if(valid.errorCount<=1){
			valid.createFormError();}
	//	match.matchColumns();
	},
	
		//removes errors from specific field.  if no other errors present, removes general error messages
	removeColor:function(str){
		$('#'+str).parent().removeClass('error');
		valid.removeErrorMsg(str);
		$(str).unbind('focus');
		if(valid.errorCount<=0){
			var src = $('#submitbutton').attr('src').replace('_ovr.','.');
			$('#submitbutton').attr('src',src).disabled=false;
			valid.removeFormError();
		}
	},//end addColor
	
		//creates error message for top and bottom of form
	createFormError:function(){
		if($('V3Form')){
			if($('#topErr').size()<=0){
				var topErr = $(document.createElement('h2')).attr('id', 'topErr').addClass('flashMessage').append('There are one or more errors on the page');
				$('#V3Form').prev('p').append(topErr);	
				
				if($('h2#botErr').length < 1) {
					var botErr = $(document.createElement('h2')).attr('id', 'botErr').addClass('flashMessage').append('There are one or more errors on the page');
					$('div.submit').prepend(botErr);
				}
			}
		}//end if V3Form
		else if($('V2Form')){
			if($('#topErr').size()<=0){
				var topErr = $(document.createElement('h2')).attr('id', 'topErr').addClass('flashMessage').append('There are one or more errors on the page');
				$('V2Form').prev('p').append(topErr);	
			}
		}//end if V2Form
	},
	
		//removes form error message
	removeFormError:function(){
		$('#topErr').remove();
		$('#botErr').remove();
	},	
	
		//creates field specific error message
	createErrorMsg:function(str, response){
		var element = $(document.createElement('div')).addClass('error-message').append(response);
		$('#'+str).parent().append(element);
		valid.errorCount++;
		
	},
		//removes field specific error message
	removeErrorMsg:function(str){
		$('#'+str).next(0).remove();
			valid.errorCount--;
	}
}

$().ready(function(){
	valid.init();
});
