(function($) {
	
$.fn.ajaxForm = function(settings){
	 
	var defaults = { 
		validate: true,
		url: 'email.php',
		sendMethod: 'post',
    	showColors: true,
    	button: '#foo',
    	buttonText: "L&auml;het&auml;",
    	clearFormAfterSend: true,
    	showMandatoryFields: true,
    	mandatoryText: "&nbsp; (pakollinen tieto)",
    	mandatoryTextColor: 'red',
    	mandatoryFieldBackground: 'lightyellow'
    		
	};
 
	settings = $.extend(defaults,settings);
	
	return this.each(function(){
	
		$.data(this,"form",settings);
	
	
		if ($.Settings.get(this,"form","validate")){
			
			$(this).bind('submit',beforesubmit);
			//$(this).unbind('submit',sendForm);
		}
		else{
			//$(this).unbind('submit',beforesubmit);
			$(this).bind('submit',sendForm);
		}
		 
 		//$(this).attr("action", $.Settings.get(this,"form","url"));
		$(this).attr("action", "#");
		$(this).attr("method", $.Settings.get(this,"form","sendMethod"));
	 	
	 	var button = $.Settings.get(this,"form","button");
		
		if (button){
			$(button).append("<input id='send_" + this.id  + "' type='submit' value='" + $.Settings.get(this,"form","buttonText") + "'>");
		}
			
		if ($.Settings.get(this,"form","showMandatoryFields")){
			$("label").after("<span class='required'>" + $.Settings.get(this,"form","mandatoryText") + "</span>");
		}
		
		
		if ($.Settings.get(this,"form","clearFormAfterSend")){
			$.clearForm = true;
		}
		
 	 });
}
 
function sendForm()
{
	send(this);
}

function send(container)
{
	
	var fields = $(":input");
	var fieldData = $.param(fields);
	$("#contactForm").html("");
	$("<div id='loader'><img src='pics/loading.gif'>&nbsp;L&auml;hetet&auml;&auml;n yhteydenottopyynt&ouml;&auml; </div>").appendTo("#contactForm");
	var url = $.Settings.get( container,"form","url");
	var options={type: "POST", url: url, dataType: 'xml', data: fieldData, success: sendSuccess};
	$.ajax(options);
}
// this is called when 
function beforesubmit()
{
	var fields = $(":input");
	var result = false;
 	
 	  
	$(fields).each(function(i)
	{
		var type     = fields[i].type.toLowerCase();
		var value    = fields[i].value;
		var name     = fields[i].name;
		var id       = fields[i].id;
		var disabled = fields[i].disabled;
		
		if (type == "text" || type =="textarea")
		{
			
		 
			//  all files are mandatory
			if (value.length == 0)
			{
				result = false;
				return result;
			} 
			if (name == "email") //&& $.util.isSet(value))
			{
				result = (value.match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/)) ? true :false;
			}
		}
	});
	
	
	if (!result && $.Settings.get(this,"form","showColors") && $.Settings.get(this,"form","showMandatoryFields")){
		$(".form_item_head").css("color",$.Settings.get(this,"form","mandatoryTextColor")).css("font-weight","bold");
		$(".textfield").css("background-color",$.Settings.get(this,"form","mandatoryFieldBackground"));
	}
	
	
	if (result == true)
	{
		//$("#contactForm").("L&auml;hetet&auml;&auml;n yhteydenottopyynt&ouml;&auml;").addClass("loading");
		send(this);
	}
 	return false;
}

function sendSuccess(xml)
{
 
	if ($.clearForm)
	{
		$('form :input').val("");
	}
	 $("#loader").remove();
 	 $(xml).find('response',xml).each(function(){
        var message = $("message",this).text();
        $("#contactForm").html(message); 
	});

}
 
})(jQuery); 
