/*     
	12/20/08
	Form Validator
	Jquery plugin for form validation and quick contact forms
	Copyright (C) 2008 Jeremy Fry

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

jQuery.iFormValidate = {
	build : function(user_options)
	{
		var defaults = {
			ajax: false,
			validCheck: true,
			phpFile:"send.php"
		};
		return $(this).each(
			function() {
			var options = $.extend(defaults, user_options); 
			if(options.validCheck){
				$inputs = $(this).find(":input").filter(":not(:submit)").filter(":not(:checkbox)").filter(":not(.novalid)");
			}else{
				$inputs = $(this).find(":input").filter(":not(:submit)");
			}
			//catch the submit
			$(this).submit(function(){
						
				//we need to do a seperate analysis for checboxes
				//$checkboxes = $(this).find(":checkbox[@name='upr_subjv[]']");
												//we test all our inputs
				if ($('#subj1').val()==0 && $('#subj2').val()==0 && $('#subj3').val()==0 && $('#subj4').val()==0)
				{
					alert("Ви не обрали жодного предмета!");
					return false;
				}
				
				if ($('#phone').val()=="" && $('#mobile').val()=="" )
				{
					alert("Будь ласка, введіть домашній або мобільний телефон.");
					return false;
				}
				
				var isValid = jQuery.iFormValidate.validateForm($inputs);
				
				if(!isValid){
					alert("Будь ласка, перевірте поля, які виділені червоним");
					return false;
				}	

				
				if(options.ajax){
					var data = {};
					$inputs.each(function(){
						data[this.name] = this.value;
					});
					$checkboxes.each(function(){
						if($(this).is(':checked')){
							data[this.name] = this.value;
						}else{
							data[this.name] = "";
						}
					});	
					$(this).parent('div').fadeOut("slow", function(){
						$(this).load(options.phpFile, data, function(){
							$(this).fadeIn("slow");
						});
					});
					return false;
				}else{
					return true;
				}
			});
			
			$inputs.bind("keyup", jQuery.iFormValidate.validate);
			$inputs.filter("select").bind("change", jQuery.iFormValidate.validate);
		});
	},
	validateForm : function($inputs)
	{
		var isValid = true; //benifit of the doubt?
		//$inputs.filter(".is_required").each(jQuery.iFormValidate.validate);
		$inputs.each(jQuery.iFormValidate.validate);
		
		if($inputs.hasClass("invalid")){isValid=false;}
		return isValid;
	},
		
	validate : function(){
		var $val = $(this).val();
		var isValid = true;
		//Regex for DATE
		if($(this).hasClass('vphone')){
			var Regex = /^$|^0\d{9}$/;
			if(!Regex.test($val)){isValid = false;}
		}else if($(this).hasClass('vseriya')){
			var Regex = /^[А-ЯA-Z\-ІіЇї0-9]{2,7}$/i;
			if(!Regex.test($val)){isValid = false;}
		}else if($(this).hasClass('vdoctype')){
			var Regex = /^[1-2]$/;
			if(!Regex.test($val)){isValid = false;}	
		}else if($(this).hasClass('vcategor')){
			var Regex = /^[1-4]$/;
			if(!Regex.test($val)){isValid = false;}	
		}else if($(this).hasClass('vname')){
			var Regex = /^[А-Яа-яІіЇї\'\'\-Єє`’ ]{2,}$/;
			if(!Regex.test($val)){isValid = false;}
		}else if($(this).hasClass('vaddr')){
			var Regex =/^[А-Яа-яІіЇї\'\'\-Єє 0-9.,’\/ \\ґҐ]{1,100}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vdocnum')){
			var Regex =/^\d{6}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vselect')){
			var Regex =/^\d{2,}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vstreet')){
			var Regex =/^[А-Яа-яІіЇї\'\'\-Єє 0-9.]{1,}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vhouse')){
			var Regex =/^[А-Яа-я\- 0-9]{1,7}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vflat')){
			var Regex =/^$|^\d{1,4}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vlogin')){
			var Regex =/^\d{5}$/;
			if(!Regex.test($val)){isValid = false;}		
		}else if($(this).hasClass('vpass')){
			var Regex =/^\d{2,4}$/;
			if(!Regex.test($val)){isValid = false;}		
		}
		
		
		
		//Check for not empty 
		//if($val == ""){
		//	isValid = false;
		//}
		
		if(isValid){
			$(this).removeClass("invalid");
			$(this).addClass("valid");
		}else{
			$(this).removeClass("valid");
			$(this).addClass("invalid");
		}
	}	
}
jQuery.fn.FormValidate = jQuery.iFormValidate.build;
