String.prototype.format = function()
{
    var str = this;
    for(var i=0, j = arguments.length; i < j; i++)
    {
        var re = new RegExp('\\{' + (i) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

var ContactUs = function()
{
	var self = {};
	
	self.init = function()
	{

	};
	
	self.hideContactBox = function()
	{
		$("#contactFormBox").slideUp("slow", function() {$("#topgears").show();});
		$("#formPlaceholder").hide();
		$("#contactForm").show();
	};
	
	self.submitForm = function()
	{
		var aErrors = self.validateFields();
		
		$.post("form/contact.php",
			{
				submitted: "yes",
				contactName: $("#contactName").val(),
				contactEmail: $("#contactEmail").val(),
				contactPhone: $("#contactPhone").val(),
				contactCompany: $("#contactCompany").val(),
				contactWebsite: $("#contactWebsite").val(),
				contactMessage: $("#contactMessage").val()
     		}, 	ContactUs.handleResponse);
		
		return false;
	};
	
	self.handleResponse = function(html)
	{
		var sSplitter = "@";
		if(html.indexOf(sSplitter) == -1)
		{
			self.showResponse(html);
			return;
		}
		self.displayErrors(html.split(sSplitter));
	};
	
	self.validateFields = function()
	{

		$("#contactForm div.required :input").removeClass("error");
		var aErrorFields = [];
		$("#contactForm div.required :input").each(
			function(i)
			{
				var sId;
				if ($(this).val().replace(/\s+/, "").length === 0)
				{
					$(this).addClass("error");
					sId = this.id.replace("contact", "").toLowerCase();
					if (sId == "email")
					{
						sId = "valid email address";
					}
					aErrorFields.push("Please provide a " + sId);
				}
			}
		);

		
		

		return aErrorFields;
	};
	
	self.displayErrors = function(aErrors)
	{
		var sResponse = "";
		for (var i = 0; i < aErrors.length; i++)
		{
			sResponse += aErrors[i] + "<br/>";
		}

		

		if (sResponse.search("Please provide a valid email address") >= 0){
			$("#contactEmail").addClass("error");
		}
		var oFeedback = $("#formErrors");
		oFeedback.empty();
		oFeedback.append(sResponse);
		oFeedback.show();
		$("#formPlaceholder").show();


//		self.showResponse(sResponse);
	};
	
	self.showResponse = function(sResponse)
	{
		$("#contactForm").hide();
		$("#formErrors").hide();
		
		var oFeedback = $("#formFeedback");
		oFeedback.empty();
		oFeedback.append(sResponse);
		oFeedback.show();
		$("#formPlaceholder").show();
	};
	
	return self;
}();

$(document).ready(ContactUs.init);