﻿$(document).ready(function() {
	// if the function argument is given to overlay,
	// it is assumed to be the onBeforeLoad event listener
	showRandomContent(); // Citatmaskinen initieras
	
	$("div[rel]").overlay({
		api:  			true,
		top:			'26%',
		left:			'37%',
		mask: 			{color:'LightSkyBlue',loadspeed:'normal'},
		effect: 		'default',
		closeOnClick: 	false,
				
		onBeforeLoad: 	function() {
			var wrap = this.getOverlay().find(".contentWrap"); // grab wrapper element inside content
			wrap.load(this.getTrigger().attr("id"));},  // load the page specified in the trigger, we're abusing attributes here. But it's ok since we know it.

		onLoad:	function() {
			var self = this;
			jQuery("#RMTclose").click({overlay:self},function(event){
				event.data.overlay.close();}				
			);
			jQuery("img#Submit").click({overlay:self},function(event){
				var formList = ['RMTname', 'RMTcompany', 'RMTemail', 'RMTphone','RMTdemo','RMTcall'];
				var contact = rmtContact(formList); 
				var error = ""; 
				var testsObj = {
					RMTname 	: "text",
					RMTcompany	: "text",
					RMTdemo		: "checkbox", 
					RMTcall		: "checkbox",
					RMTemail	: "email",
					RMTphone	: "phonenumber"};
				var formStatus = rmtValidate(testsObj,contact);
				if(formStatus.Ok){
					var RMTjson = buildJSON(contact,formList);
					$.post("/Pages/FormToMail.aspx",RMTjson);
					event.data.overlay.close(); // Exit here
					alert("Ett e-brev skickas nu")
					pageTracker._trackPageview('/virtuell/kontaktformular-startsida/skickad');					
					}
				else{
					for(err in formStatus.error){
						error = error+" "+formStatus.error[err];}
						alert(error);}				
				}); 
			}
	});
	
});

function buildJSON(obj,formList){
var json={};
var I = 0;
	if(jQuery.browser.msie){
		 json = {
			"name": 	obj.RMTname, 
			"company":	obj.RMTcompany,
			"email":	obj.RMTemail,
			"phone":	obj.RMTphone,
			"demo":		obj.RMTdemo,
			"call":		obj.RMTcall};}
	else{	
		for( I in formList){
			field = formList[I].slice(3);
			json[field] = obj[formList[I]];}}
			
return json;}

function rmtContact(formList){
	var con={};
	var I = 0;
	for(I in formList){
		if(jQuery("#"+formList[I])[0].type.match("text")){
			con[formList[I]] = jQuery("#"+formList[I])[0].value;}
		else if(jQuery("#"+formList[I])[0].type == "checkbox"){
			con[formList[I]] = jQuery("#"+formList[I])[0].checked;}
	}
	return con;}

function rmtValidate(testsObj,con){

//Temporary storage of Error Strings
errObj = {
	RMTname : "Du angav ditt namn felaktigt.",
	RMTcompany : "Du angav ditt företagsnamn felaktigt.",
	RMTemail : "Du angav en felaktig mejladress.",
	RMTphone : "Du angav ett felaktigt telefonnummer.",
	RMTmessage : "Du glömde skriva vad du ville.",
	RMTcheckbox : "Du glömde välja vad du önskade."};
var I = 0;
var checked = false;
var checkboxes = false;
var result = {Ok:true,error:{}};

for( I in con){
	switch(testsObj[I]){
		case "text": 	
			if(!isLetter(con[I])){
			result.error[I] = errObj[I];}
			break;
		case "email":
			if(!isProbablyMail(con[I])){
			result.error[I] = errObj[I];}
			break;
		case "phonenumber":
			if(!isNumber(con[I])){
			result.error[I] = errObj[I];}
			break;
		case "checkbox":
			checkboxes = true;
			if(con[I]){
			checked = true;}
			break;
		default:
	}
}

var noMail = Boolean("RMTemail" in result.error);
var noPhone = Boolean("RMTphone" in result.error);

if(checkboxes && !checked){
	result.error.checkbox = errObj.RMTcheckbox;
	result.Ok = false;}
if( noMail !=  noPhone ){ // != equivalent to xor in this case
	if (noMail){
		delete result.error["RMTemail"];}
	else{
		delete result.error["RMTphone"];}}

for( I in con){
	if(result.error[I]){ 
		result.Ok = false;}}
	
return result;
}

function isProbablyMail(string){
	var allowedMailFormat = /\w*@\w*\.\w*/i;
	return boolStrMatch(string,allowedMailFormat);}

function isLetter(string){
	//Svenska namn Är ok.
	var expr = /^[A-Za-zÅÄÖåäö ']+$/;
	return boolStrMatch(string,expr);}
	
function isNumber(string){
	var expr = /^[0-9]+$/;
if(!boolStrMatch(string,expr)){
	// In case of leading blankspaces or a international +:
	string = string.replace(/[ -]+/g,"");
	while (string.charAt(0) == ' ' || string.charAt(0) == '+' ){
		string = string.slice(1);}}
	
	return boolStrMatch(string,expr);}
	
function boolStrMatch(string,regexp){
	if(string.match(regexp)){
		return true;}
	else{
		return false;}}

