// Function trim
String.prototype.trim = function()
{
	return this.replace(/(^\s*)|(\s*$)/g, "")
};

// Main form constructor
function FormUtils(formId, valids) {
	var form =  $("#"+formId);
	var validators = valids;
	var lang = $('body').attr('lang');
	
	this.checkRequiredField = function(event) {
			
		if(form == null || form.length == 0)
			return false;
		var check = true;
		form.find(".highlited").removeClass("highlited");

		form.find(".required").each(function(){
			var item = $(this);

			if(	(item.is('input[type=text], input[type=password], input[type=hidden], select, textarea') && (item.val() == null || item.val().trim() == "" || item.val().trim().length == 0)) 
				|| (item.is('input[type=checkbox], input[type=radio]') && !item.attr('checked'))) {
			
				if(!item.parent().hasClass("required")) {
					item.parent().addClass("required");
				}
				item.addClass("highlited");
				check = false;
			}
		});
  		
		if(validators == null) {
			if(!check) {
				//var msg = $('<div class="valid_msg">'+FormUtils.regional[lang].requiredFields+'</div>').css({"border" : "1px solid red", 'font-size' : '18px', 'color' : 'red'});
				//form.before(msg);
				//form.after(msg.clone());
				//window.scroll(0, 0);
			} 
			return check;
		}
		
		// check all specific validators
		for(var val in validators) {
			var res = validators[val](form, event);
			if(!res.check) {
			 if(res.msg!=undefined){
    			  $("#wrapper").append('<div id="display_message"><div class="overarea_message"></div><div class="message"><img class="close_button" src="/img/cross.gif" /><p></p></div></div>');
            $('#display_message').hide();
    		    $('#display_message .overarea_message').hide();
    		    $('#display_message .message').hide();
    			  var width = Math.min($(document).width(),$(window).width());
    			  $('#display_message').show();
    			  $('#display_message .overarea_message').show();
    			  $('#display_message .message').css({"margin":"190px "+((width-300)/2)+"px"});
    			  $('#display_message .message').show();
          	$('#display_message .message p').empty().append(res.msg); 
		   }
				check = false;
	

  			for(var it in res.required) {
          if(res.required[it].length == 0) continue;
  				if(!res.required[it].parent().hasClass("required")) {
  						res.required[it].parent().addClass("required");
  				}
  				res.required[it].addClass("highlited");
  			}
				
				
			}
		}
		
//		if (check) form.submit(function() {return true;}).submit();
		return check;
	};

	this.validate = function() {
		//form.submit(this.checkRequiredField);
  form.find('input[type=submit], button[name=submit], button[type=submit]').click(this.checkRequiredField);
	};
};

// Regionals
FormUtils.regional = [];
FormUtils.regional['CZ'] = {'requiredFields' : 'Vyplňte všechny povinné informace'};
FormUtils.regional['EN'] = {'requiredFields' : 'Fill all required fields please'};


// FORM ad_edit
FormUtils.validateAgencyForm = function() {
	
	var validators = {

		'checkEmail' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find("input[name=email]")],
					'msg': LABEL.alert.email

			};
			
			emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
			 if((!result.required[0].val().match(emailRegExp)) || result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
      	result.check = false;
			}
			
			return result;
		},
	    'checkName' : function(form) {
			//price_alternative price price_unit
			var result = {
					'check' : true,
					'required' : [form.find('input[name=name]')],
					'msg': LABEL.alert.global

			};
			
			if(result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
				result.check = false;
			}
			
			return result;
		}	
  
  
  };
  	var validators2 = {
		'checkEmail' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find("input[name=email]")],
					'msg': LABEL.alert.email

			};
			
			emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
			 if((!result.required[0].val().match(emailRegExp)) || result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
      	result.check = false;
			}
			return result;
		},
		'checkEmailFriend' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find("input[name=friend_email]")],
					'msg': LABEL.alert.email
			};
			
			emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
			 if((!result.required[0].val().match(emailRegExp)) || result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
      	result.check = false;
			}
			return result;
		},
	    'checkName' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find('input[name=name]')],
					'msg': LABEL.alert.global

			};
			
			if(result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
				result.check = false;
			}
			return result;
		}
		
		};
  	var validators3 = {
	    'checkName' : function(form) {
			//price_alternative price price_unit
			var result = {
					'check' : true,
					'required' : [form.find('input[name=realcode]')],
					'msg': LABEL.alert.realcode
			};
			
			if(result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
				result.check = false;
      }
			
			
      return result;
		}
	};
		
  	var validators4 = {
	    'checkName' : function(form, event) {
			//price_alternative price price_unit
			var result = {
					'check' : true,
					'required' : [form.find('input[name=location]')],
					'msg': LABEL.alert.t9
					
			};
			
			if(event.target.id == "back_to_result") return result;
			if(event.target.id == "") return result;
			
			if(result.required[0].val() == "") {
			  $("#city_t9").addClass("highlited");
				$("#city_t9").val($("#city_t9").attr("desc"));
            result.check = false;
			}
			return result;
		}
		};
  	
    
    var validators5 = {
	    'checkName' : function(form) {
			//price_alternative price price_unit
			var result = {
					'check' : true,
					'required' : [form.find('input[name=id]')],
					'msg': LABEL.alert.t9_agency
			};
			
			if(result.required[0].val() == "" ) {
			  $("#city_t9").addClass("highlited");
				$("#city_t9").val($("#city_t9").attr("desc"));
        result.check = false;
			}
			return result;
		}
		};


    var validators7 = {
	    'checkEmail' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find("input[name=email]")],
					'msg': LABEL.alert.email
			};
			
			emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
			 if((!result.required[0].val().match(emailRegExp)) || result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
      	result.check = false;
			}
			return result;
		}
		};



  	var validators6 = {
	    
      'checkEmail' : function(form) {
			var result = {
					'check' : true,
					'required' : [form.find("input[name=email]")],
					'msg': LABEL.alert.email
			}
      ;
			
			emailRegExp = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.([a-z]){2,4})$/;
			 if((!result.required[0].val().match(emailRegExp)) || result.required[0].val() == ""  || result.required[0].val().trim() == result.required[0].attr("desc")) {
      	result.check = false;
			}
			return result;
		},
      
      
      'checkName' : function(form) {
			//price_alternative price price_unit
			var result = {
					'check' : true,
					'required' : [form.find('input[name=location]')],
					'msg': LABEL.alert.global
			};
			
			if(result.required[0].val() == "" ) {
			  $("#city_t9").addClass("highlited");
        result.check = false;
			}
			return result;
		 }
		};

  if($("#contact_form").length > 0)
  	 (new FormUtils('contact_form', validators)).validate();

  if($("#send_to_friend_form").length > 0)
	 (new FormUtils('send_to_friend_form', validators2)).validate();

  if($("#realcode_form").length > 0)
	(new FormUtils('realcode_form', validators3)).validate();

  
  if($("#search").length > 0){
  (new FormUtils('search', validators4)).validate();
	}
	 
  if($("#search_agency_form").length > 0){
  (new FormUtils('search_agency_form', validators5)).validate();
	 }

  if($("#add_property_form").length > 0){
  (new FormUtils('add_property_form', validators6)).validate();
	 }

  if($("#contact_us").length > 0){
  (new FormUtils('contact_us', validators)).validate();
	 }

  if($("#email_alert_form").length > 0){
  (new FormUtils('email_alert_form', validators7)).validate();
	 }

  if($("#email_alert_form_popup").length > 0){
    (new FormUtils('email_alert_form_popup', validators7)).validate();
	}
	
  if($("#email_alert_join_form").length > 0){
    (new FormUtils('email_alert_join_form', validators7)).validate();
	}
	

};

$(function($){
  //alert("d");
  FormUtils.validateAgencyForm();
});

