function frmDataCollector(frm)
{
	this.frm = frm;
}

frmDataCollector.prototype =
{
	encodeNameAndValue: function(name, value)
	{
		param = name+'='+escape(value);
		return param;
	},
	
	frmDataToParams: function()
	{
		var params = "";
		var form = this.frm;
		
		for (var i = 0; i < form.elements.length; i++)
		{
			var field = form.elements[i];
			var stopped = false;
			
			switch (field.type) {
				case "button":
				case "submit":
				case "reset":
					stopped = true;
				break;
				case "checkbox":
				case "radio":
					if (!field.checked) {
						stopped = true;
						break;
					}
				case "text":
				case "hidden":
				case "password":
					params += this.encodeNameAndValue(field.name, field.value);
					break;
				default:
					switch(field.tagName.toLowerCase()) {
						case "select":
							params += this.encodeNameAndValue(field.name, field.options[field.selectedIndex].value);
							break;
						default:
							params += this.encodeNameAndValue(field.name, field.value);
					}
			}
			if (i < form.elements.length-2 && !stopped) {
				params += "&";
			}
		}
		return params;
	}
}

function ajaxSaveFRMJob(frm)
{
    var objForm = document.getElementById(frm);
    var objCollector = null;
    var strPostData = "";
    var url = "includes/continue_form.php";
    success = false;
    
    if (objForm != null)
    {
        objCollector = new frmDataCollector(objForm);
        strPostData = objCollector.frmDataToParams();

        jQuery.post(url, strPostData, function(retval){
                        
                        if(retval == 'success'){
                            success = true;
                            alert('Thanks for filling the form!  Please ckeck your emails and you can continue filling the form later. If you finish the form, please send it on the page 7! ');
                        }
                        else{
                            alert('An error occured, please check your email address, and try saving again!');
                         }
                    });
    }
    return success;
}

function ajaxSendFRMJob(frm)
{
    var objForm = document.getElementById(frm);
    var objCollector = null;
    var strPostData = "";
    var url = "includes/sendjobmail.php";
    success = false;

    if (objForm != null)
    {
        objCollector = new frmDataCollector(objForm);
        strPostData = objCollector.frmDataToParams();

        jQuery.post(url, strPostData, function(retval){

                        if(retval == 'success'){
                            success = true;
                            alert('Dear Applicant! <br />Thanks for filling the application form, one of our team will be in touch with you shortly.  ');
                            window.location.href="jobs.php";
                        }
                        else{
                            alert('An error occured, please try send it again!');
                         }
                    });
    }
    return success;
}




function AjaxMailer(frm, functFlagCallback, strFeedbackDivId, strSendBtnId)
{
	this.oThis = this;
	this.objForm = document.forms[frm];
	this.mandatory = new Array();
	this.FlagCallback = functFlagCallback;
	this.strFeedbackDiv = strFeedbackDivId;
	this.sendBtn = strSendBtnId;
	
	if (this.objForm != null)
	{
		this.theCollector = new frmDataCollector(this.objForm);
		
		for (i = 0; i < this.objForm.elements.length; i++)
		{
			if (this.objForm.elements[i].className.match(/mandatory/))
				this.mandatory.push(this.objForm.elements[i].name);
		}
	}
}

AjaxMailer.prototype = {
	
	inArray: function(needle, haystack, argStrict)
	{
		var key = '',
			strict = !! argStrict;
	 
		if (strict)
		{
			for (key in haystack)
			{
				if (haystack[key] === needle)
					return true;
			}
		}
		else
		{
			for (key in haystack)
			{
				if (haystack[key] == needle)
					return true;
			}
		} 
		return false;
	},
	
	emailCheck: function(strValue)
	{
		if (!strValue.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/))
			return false;
			
		return true;
	},
	
	setInputFlag: function(strElementId, bolFlag)
	{
		var objFlagCarrier = document.getElementById(strElementId),
			flagImage = (bolFlag ? "pipa.png" : "ix.png"),
			strMsg = (bolFlag ? "OK!" : "This field is not filled in properly!");
		
		
		if (objFlagCarrier !== null)
		{
			objFlagCarrier.innerHTML = '<img class="feedbackimg" src="images/'+flagImage+'" title="'+strMsg+'" />';
			objFlagCarrier.style.display = 'block';
		}
	},
	
	checkField: function(objField)
	{
		if (this.inArray(objField.name, this.mandatory, false))
		{
			switch (objField.name)
			{
				case 'email':
					if (!this.emailCheck(objField.value))
					{
						if (this.FlagCallback){this.setInputFlag(this.objForm.elements[i].name, false);}
						return false;
					}
					else
					{
						if (this.FlagCallback){this.setInputFlag(this.objForm.elements[i].name, true);}
						return true;
					}
					break;
				default:
					if (objField.value == '')
					{
						if (this.FlagCallback){this.setInputFlag(this.objForm.elements[i].name, false);}
						return false;
					}
					else
					{
						if (this.FlagCallback){this.setInputFlag(this.objForm.elements[i].name, true);}
						return true;
					}
			}
		}
		return true;
	},
	
	checkForm: function()
	{
		var retval = true;
		for (i = 0; i < this.objForm.elements.length; i++)
		{
			if (!this.checkField(this.objForm.elements[i]) && retval)
				retval = false;
		}
		if (retval)
			$('#'+this.sendBtn).fadeIn('fast');
		else
		{
			if ($('#'+this.sendBtn).attr('display') != 'none')
				$('#'+this.sendBtn).fadeOut('fast');
		}
			
		return retval;
	},
	
	hideMessagBox: function()
	{
		$("#"+this.strFeedbackDiv).fadeOut();
		if ($('#'+this.sendBtn).attr('display') != 'none')
				$('#'+this.sendBtn).fadeOut('fast');
	},
	
	execRequest: function()
	{
		var url = 'ajaxMailer.php',
			params = this.theCollector.frmDataToParams(),
			oThis = this;
		
		$("#"+this.strFeedbackDiv).fadeIn('fast');
		
		if (this.checkForm())
		{
			$.post(url, params, function(retval)
								{
									if (oThis.strFeedbackDiv)
									{
										$("#messagebox_"+oThis.strFeedbackDiv).html(retval);
									}
								});
		}
	}
	
}

function getModelList(makeId, strTargetDivId)
{
	var url = 'ajaxGetModels.php',
		params = 'manufacturers_id='+makeId,
		objTargetDiv = $('#'+strTargetDivId);
	
	if (objTargetDiv != null)
	{
		objTargetDiv.fadeIn('fast');
		if (makeId)
		{
			$.post(url, params, function(retval)
										{
											objTargetDiv.html(retval);
										});
		}
		else
		{
			objTargetDiv.fadeOut(400, function()
								 {
									 objTargetDiv.html("");
								 });
		}
	}
}

function validformEmail(frm) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   var address = document.getElementById('Email').value;
   if(reg.test(address) == false) {
      alert('Invalid Email Address');
      frm.Email.focus();
      return false;
   }
   return true;
}

function frmCheck1(frm)
{

   if(frm.Surname.value == ""){
      alert(frm.Surname.name+" field is mandatory!");
      frm.Surname.focus();
      return false;
   }
   if(frm.Initials.value == ""){
      alert(frm.Initials.name+" field is mandatory!");
      frm.Initials.focus();
      return false;
   }
   if(frm.Address.value == ""){
      alert(frm.Address.name+" field is mandatory!");
      frm.Address.focus();
      return false;
   }
   if(frm.Daytime_number.value == ""){
      alert(frm.Daytime_number.name+" field is mandatory!");
      frm.Daytime_number.focus();
      return false;
      } else {
      var reg = /^[0-9\ \-\+\/\#\*\(\)]{4,40}$/;
      var val = document.getElementById('Daytime_number').value;
      if(reg.test(val) == false) {
      alert(frm.Daytime_number.name+" field is not valid!");
      frm.Daytime_number.focus();
      return false;
      }

   }


   return true;
}

