// base
var $headId="head";var $bodyId="body";var $baseId="base";function getWindowHeight(){var a=0;if(typeof(window.innerHeight)=="number"){a=window.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){a=document.documentElement.clientHeight}else{if(document.body&&document.body.clientHeight){a=document.body.clientHeight}}}return a}function base(){$winHeight=getWindowHeight();if($("#"+$headId)){$headHeight=$("#"+$headId).height()}else{$headHeight=0}$bodyHeight=$("#"+$bodyId).height();$baseHeight=$("#"+$baseId).height();$difHeight=$winHeight-($headHeight+$bodyHeight+$baseHeight);if($difHeight>0){$("#"+$baseId).css({position:"absolute",bottom:"0px",width:"100%"})}else{$("#"+$baseId).css({position:"static"})}};
// rocon
var rocon=(function(){var p=/\.rc(\d+)\b/,A=/\brc(\d+)\b/,K=/\brc-shape\b/,ae="rocon__",h="rocon",U=[],u={update:function(){},bindProperties:function(){var e=1;return function(aj,ai,ah){U.push({"id":e++,"rule":aj,"bg":B(j(ai),function(ak){if(ak.charAt(0)!="#"){ak="#"+ak;}return N(ak);}),"border_width":ah||0});};}(),process:function(e){y(e);}},w=null,v={},H=[],r=[],M=false,a=false,J=navigator.userAgent.toLowerCase(),f={},d={version:(J.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(J),opera:/opera/.test(J),msie:/msie/.test(J)&&!/opera/.test(J),mozilla:/mozilla/.test(J)&&!/(compatible|webkit)/.test(J)};function ad(){if(!M){M=true;if(r.length){for(var e=0;e<r.length;e++){r[e].call(document);}r=null;}}}function C(e){r.push(e);}function O(){if(a){return;}a=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);ad();},false);}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);ad();}});if(document.documentElement.doScroll&&!window.frameElement){(function(){if(M){return;}try{document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;}ad();})();}}}}function L(ai,al,aj){if(aj){for(var ak=0,ah=ai.length;ak<ah;ak++){if(al.call(ai[ak],ak)===false){break;}}}else{for(var ak=ai.length-1,e;ak>=0;ak--){if(al.call(ai[ak],ak)===false){break;}}}}function B(e,al){var ah=[];for(var ai=0,aj=e.length;ai<aj;ai++){var ak=al(e[ai],ai);if(ak!=null){ah[ah.length]=ak;}}return ah.concat.apply([],ah);}function Y(){return;}function N(ah){var e;function ai(ak){var al=parseInt(ak,10).toString(16);return(al.length==1)?al+al:al;}function aj(ak){return ai(Math.round(ak*2.55));}if(e=/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/.exec(ah)){return"#"+ai(e[1])+ai(e[2])+ai(e[3]);}if(e=/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*\)/.exec(ah)){return"#"+aj(e[1])+aj(e[2])+aj(e[3]);}if(e=/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/i.exec(ah)){return"#"+e[1]+e[2]+e[3];}if(e=/#([a-f0-9])([a-f0-9])([a-f0-9])/i.exec(ah)){return"#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3];}ai=null;aj=null;return ah;}function I(e,ai){var ah=document.createElement(e);if(ai){ah.className=ai;}return ah;}function Q(ah,ai){var e=new RegExp("\\b"+ai+"\\b");return ah.nodeType==1&&e.test(ah.className||"");}function P(ak,ah){var aj,e={},ai=function(am,al){return al.toUpperCase();};L(ah instanceof Array?ah:[ah],function(){var am=this,al=am.replace(/\-(\w)/g,ai);if(ak.style[al]){e[al]=ak.style[al];}else{if(d.msie){e[al]=ak.currentStyle[al];}else{if(document.defaultView&&document.defaultView.getComputedStyle){if(!aj){aj=document.defaultView.getComputedStyle(ak,"");}e[al]=aj&&aj.getPropertyValue(am);}}}});return ah instanceof Array?e:e[ah.replace(/\-(\w)/g,ai)];}function j(ah){var e=(ah||"").split("_");switch(e.length){case 1:return[e[0],e[0],e[0],e[0]];case 2:return[e[0],e[1],e[0],e[1]];case 3:return[e[0],e[1],e[2],e[1]];case 4:return e;}return null;}var i=(function(){var ah=[],ai="#ffffff";function aj(ak){var al;do{if(ak.nodeType!=1){break;}if(ak.rocon_bg){return ak.rocon_bg;}else{ah.push(ak);al=P(ak,"background-color");if(al!="transparent"){return N(al);}}}while(ak=ak.parentNode);return ai;}function e(ak){var al;do{if(ak.nodeType!=1){break;}al=P(ak,"background-color");if(al!="transparent"){return N(al);}}while(ak=ak.parentNode);return ai;}return function(ap,ao){var al=ap.className,an=null;var ak=/\brcbg([a-f0-9_]+)\b/i.exec(al);if(ak){an=B(j(ak[1]),function(aq){return N("#"+aq);});return an;}var am=G(ap);if(am){return am.bg;}if(!ao){ap=ap.parentNode;}if(i.use_cache){ah=[];an=aj(ap);L(ah,function(){this.rocon_bg=an;i.processed_elems.push(this);});ah=null;}else{an=e(ap);}return j(an);};})();i.use_cache=true;i.processed_elems=[];function G(ai){var ah=ai.className,e=null;L(U,function(){if((typeof(this.rule)=="string"&&ah.indexOf(this.rule)!=-1)||ah.search(this.rule)!=-1){e=this;return false;}},true);return e;}function l(e,ah){w.insertRule(e+" {"+ah+"}",w.cssRules.length);}function D(ah){var e;L(document.styleSheets,function(){L(this.cssRules||this.rules,function(){if(e=p.exec(this.selectorText)){ah(this,parseInt(e[1],10));}});});}function E(ai,ah){var e=(ai.className||"").replace(new RegExp("\\s*"+h+"[-_].+?\\b","ig"),"");if(ah){e+=" "+ah;}ai.className=e;return ai;}function o(ah,e){H.push(ah.selectorText.substr(1));}function ag(){if(!w){if(document.createStyleSheet){w=document.createStyleSheet();}else{var e=I("style");e.rel="rocon";document.getElementsByTagName("head")[0].appendChild(e);L(document.styleSheets,function(){if(this.ownerNode.rel=="rocon"){w=this;return false;}});}}return w;}function c(ai){var ah=[],e;L((ai||document).getElementsByTagName("*"),function(){if(e=A.exec(this.className||"")){ah.push({node:this,radius:parseInt(e[1],10)});}});return ah;}function y(ah){var e=c(ah);
if(e.length){ag();L(e,function(){Y(this.node,this.radius);});}}function q(e){return f[e]?true:false;}function T(am,ah){var ai=am.className||"";ah=ah||parseInt(ai.match(A)[1],10);var ak=K.test(ai),al=G(am);var e="";var aj=al?al.border_width:(parseInt(P(am,"border-left-width"))||0);if(aj){e=N(P(am,"border-left-color")||"#000");}return{"radius":ah,"bg_color":i(am,ak),"border_width":(aj>ah)?ah:aj,"real_border_width":aj,"border_color":e,"use_shape":ak};}function af(e,ah){L(e,function(){L((this instanceof Array)?this:[this],ah);});}function m(ai){var e={};for(var ah in ai){if(ai.hasOwnProperty(ah)){e[ah]=ai[ah];}}return e;}function S(ah,ai,ap){var aj=P(ah,["padding-top","padding-bottom","margin-top","margin-bottom"]);function e(aq){return parseInt(aj[aq],10)||0;}var ak=Math.max(e("paddingTop")-ap.radius+ap.border_width,0),ao=Math.max(e("paddingBottom")-ap.radius+ap.border_width,0),al=e("marginTop")+ap.radius,an=e("marginBottom")+ap.radius,am=ap.real_border_width-ap.border_width;l("."+ai,"border-top-width:"+am+"px;"+"border-bottom-width:"+am+"px;"+"padding-top:"+ak+"px;"+"padding-bottom:"+ao+"px;"+"margin-top:"+al+"px;"+"margin-bottom:"+an+"px");}C(y);C(function(){L(i.processed_elems,function(){this.removeAttribute("rocon_bg");});i.use_cache=false;});O();if(d.safari){Y=function(ai,ah){var e=".rc"+ah;if(!q(e)){l(e,"-webkit-border-radius:"+ah+"px; -khtml-border-radius:"+ah);f[e]=true;}};u.update=function(){af(arguments,function(){var e=A.exec(this.className||"");if(e){Y(this,parseInt(e[1]));}});};}if(d.mozilla){Y=function(ai,ah){var e=".rc"+ah;if(!q(e)){l(e,"-moz-border-radius:"+ah+"px");f[e]=true;}};u.update=function(){af(arguments,function(){var e=A.exec(this.className||"");if(e){Y(this,parseInt(e[1]));}});};}if(d.opera){ag();l("."+h,"position:absolute;background-repeat:no-repeat;z-index:1;display:none");l("."+h+"-init","position:relative;");l("."+h+"-init>."+h,"display:inline-block;");l("."+h+"-tl","top:0;left:0;background-position:100% 100%;");l("."+h+"-tr","top:0;right:0;background-position:0 100%;");l("."+h+"-bl","bottom:0;left:0;background-position:100% 0;");l("."+h+"-br","bottom:0;right:0;");var x=I("canvas");function F(ai){ai.border_width=(ai.border_width>ai.radius)?ai.radius:ai.border_width;if(ai.border_width>1){ai.radius-=ai.border_width/2;}var aj=ai.radius*2+ai.border_width,e=aj;if(ai.use_shape){aj=2000;if(ai.border_width<ai.real_border_width){e+=(ai.real_border_width-ai.border_width)*2;}}if(ai.border_width==1){aj--;e--;}x.width=ai.width=aj;x.height=ai.height=e;var ah=x.getContext("2d");ah.strokeStyle=ai.border_color;ah.lineWidth=ai.border_width;ah.lineJoin="miter";ah.lineCap="square";ah.fillStyle=ai.bg_color[0];ah.clearRect(0,0,aj,e);return ah;}function W(e,ai){var aj=Math.PI/2,ah=(ai.border_width>1)?ai.border_width:0,ak=ai.radius*2+ah;e.beginPath();e.arc(0,0,ai.radius,aj,0,true);e.stroke();e.beginPath();e.arc(ak,0,ai.radius,aj*2,aj,true);e.stroke();e.beginPath();e.arc(ak,ak,ai.radius,-aj,aj*2,true);e.stroke();e.beginPath();e.arc(0,ak,ai.radius,0,-aj,true);e.stroke();}function k(ap){ap=m(ap);var ao=F(ap),ai=Math.PI/2,e=Math.PI*2,al=ap.border_width,am=(al>1)?al:0,aj=ap.radius*2+am,an=0,ah=(ap.border_width<ap.real_border_width);var ak=function(aq,ar){ao.beginPath();ao.arc(aq,ar,ap.radius,0,e,true);ao.closePath();ao.fill();};if(ah){an=ap.real_border_width-ap.border_width;ao.save();ao.translate(0,an);}ak(0,0);ak(aj,0);ak(aj,aj);ak(0,aj);ao.fillRect(aj,0,ap.width,ap.height);if(al){W(ao,ap);ao.fillStyle=ao.strokeStyle;ao.fillRect(aj,ap.radius-(al>1?al/2:al),ap.width,al*2);if(ah){ao.restore();ao.fillStyle=ap.border_color;ao.fillRect(0,0,ap.width,an);ao.fillRect(0,ap.height-an,ap.width,an);ao.fillStyle=ap.bg_color;}}return ao.canvas.toDataURL();}function t(aj){var an=aj;aj=m(aj);var ah=F(aj),e=aj.radius,ai=(aj.border_width>1)?aj.border_width:0,am=e*2+ai,al=an.radius,ak=Math.PI/2;ah.save();ah.beginPath();ah.arc(0,0,e,ak,0,true);ah.arc(am,0,e,ak*2,ak,true);ah.arc(am,am,e,-ak,ak*2,true);ah.arc(0,am,e,0,-ak,true);ah.closePath();ah.clip();ah.fillStyle=aj.bg_color[2];ah.fillRect(0,0,al,al);ah.fillStyle=aj.bg_color[3];ah.fillRect(al,0,al,al);ah.fillStyle=aj.bg_color[0];ah.fillRect(al,al,al,al);ah.fillStyle=aj.bg_color[1];ah.fillRect(0,al,al,al);ah.restore();if(aj.border_width){W(ah,aj);}return ah.canvas.toDataURL();}function b(e,ai){var ah=G(ai);return[e.radius,e.bg_color.join("-"),e.real_border_width,e.border_color,e.use_shape,ah?ah.id:0].join(":");}function R(e,aj){var al=b(e,aj),am=e.radius,an=e.real_border_width||0,ao=(e.use_shape)?an-e.border_width:0;if(!v[al]){var ai=ae+w.cssRules.length;v[al]=ai;l("."+ai+">."+h,'background-image: url("'+(e.use_shape?k(e):t(e))+'");'+"width: "+am+"px;"+"height: "+(am+ao)+"px;");var ak=-an,ah=-an;if(e.use_shape){ah=-am-ao;S(aj,ai,e);l("."+ai+">."+h+"-tl, ."+ai+">."+h+"-bl","width:auto;left:0;right:"+(am-an)+"px;background-position:-"+am+"px 100%;");l("."+ai+">."+h+"-bl","background-position:-"+am+"px 0;");}if(ak||ah){l("."+ai+">."+h+"-tl","top:"+ah+"px; left:"+ak+"px");l("."+ai+">."+h+"-tr","top:"+ah+"px; right:"+ak+"px");
l("."+ai+">."+h+"-bl","bottom:"+ah+"px; left:"+ak+"px");l("."+ai+">."+h+"-br","bottom:"+ah+"px; right:"+ak+"px");}}return v[al];}Y=function(aj,e){if(!aj.className){return;}var ah=false;L(aj.childNodes,function(){if(Q(this,h)){ah=true;return false;}});var ai=R(T(aj,e),aj);if(!ah){L(["tl","tr","bl","br"],function(){aj.appendChild(I("span",h+" "+h+"-"+this));});}E(aj,ai+" "+h+"-init");};C(function(){document.documentElement.style.outline="none";});u.update=function(){af(arguments,function(){Y(E(this));});};}if(d.msie){v.ix=0;v.created={};var ab="",n={tl:0,tr:1,br:2,bl:3};var s="vml-"+h;try{if(!document.namespaces["v"]){document.namespaces.add("v","urn:schemas-microsoft-com:vml");}}catch(aa){}ag();var Z="."+h;w.cssText="."+s+" {behavior:url(#default#VML);display:inline-block;position:absolute}"+Z+"-init {position:relative;zoom:1;}"+Z+" {position:absolute; display:inline-block; zoom: 1; overflow:hidden}"+Z+"-tl ."+s+"{flip: 'y'}"+Z+"-tr ."+s+"{rotation: 180;right:1px;}"+Z+"-br ."+s+"{flip: 'x'; right:1px;}";if(d.version<7){w.cssText+=Z+"-tr, "+Z+"-br {margin-left: 100%;}";}l=function(e,ah){ab+=e+"{"+ah+"}";};function X(au){var ak=au.radius,al=au.border_width,ah=ak+":"+al+":"+au.use_shape;if(!X._cache[ah]){var ap=10;var ai=I("v:shape");ai.className=s;ai.strokeweight=al+"px";ai.stroked=(al)?true:false;var aq=I("v:stroke");aq.className=s;aq.joinstyle="miter";ai.appendChild(aq);var an=ak,aj=an;ai.style.width=an+"px";ai.style.height=aj+"px";ak-=al/2;ak*=ap;var e=al/2*ap;var am=Math.round((ak+e)/an);var ao=ak+e;ai.coordorigin=Math.round(am/2)+" "+Math.round(am/2);ai.coordsize=ao+" "+ao;var at="";var ar=ao+am;if(au.use_shape){ar=2000*ap;at="m"+ar+",0 ns l"+e+",0  qy"+ao+","+ak+" l"+ar+","+ak+" e ";}else{at="m0,0 ns l"+e+",0  qy"+ao+","+ak+" l"+ao+","+ao+" l0,"+ao+" e ";}at+="m"+e+","+(-am)+" nf l"+e+",0 qy"+ao+","+ak+" l "+(ar)+","+ak+" e x";ai.path=at;X._cache[ah]=ai;}return X._cache[ah].cloneNode(true);}X._cache={};function z(ah,ai){var e=X(ah);e.fillcolor=ah.bg_color[n[ai]]||"#000";e.strokecolor=ah.border_color||"#000";var aj=I("span",h+" "+h+"-"+ai);aj.appendChild(e);return aj;}function V(e){L(e.childNodes,function(){if(Q(this,h)){e.removeChild(this);}});E(e);}function ac(e){var ah=e.radius+":"+(e.real_border_width||0)+":"+e.use_shape;if(!v[ah]){v[ah]=ae+v.ix++;}return v[ah];}function g(at,ah){var an=at.radius,ao=at.real_border_width||0,ap=(at.use_shape)?at.real_border_width-at.border_width:0;var aj=ac(at);if(!v.created[aj]){var al=(d.version<7)?"."+aj+" ."+h:"."+aj+">."+h;var ai=-ao,e=-1-ao;l(al,"width:"+(an+ao+1)+"px;height:"+(an+1)+"px");if(at.use_shape){e=-an-1-ap;var aq=an+at.border_width*2+ap;S(ah,aj,at);var am=Math.max(an-ao*2,0),ar=Math.min(an-ao*2,0)*-1;if(d.version<7){ar+=parseInt(P(ah,"padding-left")||0)+parseInt(P(ah,"padding-right")||0);}var ak="width:100%;clip:rect(auto auto auto "+am+"px);padding-right:"+ar+"px;left:"+(-ao-am)+"px;";l(al+"-tl",ak+"top:"+e+"px;");l(al+"-tl ."+s,"left:"+am+"px");l(al+"-bl",ak+"bottom:"+e+"px;");l(al+"-bl ."+s,"left:"+am+"px");}else{l(al+"-tl","left:"+ai+"px;top:"+e+"px;");l(al+"-bl","left:"+ai+"px;bottom:"+e+"px;");}if(d.version<7){ai=-an+(ao?an%2-ao%2:-an%2);l(al+"-tr","left:"+ai+"px;top:"+e+"px;");l(al+"-br","left:"+ai+"px;bottom:"+e+"px;");}else{l(al+"-tr","right:"+ai+"px;top:"+e+"px;");l(al+"-br","right:"+ai+"px;bottom:"+e+"px;");}v.created[aj]=true;}}Y=function(ai,e){var ah=T(ai,e);g(ah,ai);L(["tl","tr","bl","br"],function(){ai.appendChild(z(ah,this));});ai.className+=" "+ac(ah)+" "+h+"-init";};u.update=function(){af(arguments,function(){V(this);Y(this);});};C(function(){w.cssText+=ab;ab="";l=w.addRule;});}return u;})();
//cms
function check(){$(document).bind("keydown",function(a){if((a.ctrlKey)&&((a.keyCode==10)||(a.keyCode==13))){$(this).cmsEnter()}else{if((a.keyCode==10)||(a.keyCode==13)){$clicked=$("#authbutton");$clicked.cmsAuth()}}}).bind("click",function(a){$clicked=$(a.target);$(this).cmsAuth()});if($(document).is(":has('#admbar')")){$(document).admCheck().admHandle()}}jQuery.fn.extend({cmsEnter:function(){if($(document).is(":has(#admbar)")){return false}$("embed").hide();if(!$(document).is(":has(#admenter)")){$("body").append('<div class="b-admlayout" id="admlayout"></div><div class="b-admenter" id="admenter"></div>');$bH=$(document).height();$("#admlayout").height($bH).addClass("authload");$url=document.location.href;$.post($url,{ajax:"authorizedForm"},function(a,b){if(a.status=="success"){$("#admlayout").removeClass("authload");$("#admenter").html(a.html).cmsPos();$(document).cmsLayRes();$("#admlogin").focus()}},"json")}else{if($("#admenter").is(":visible")){$("#admenter, #admlayout").hide();$("embed, object").show()}else{$("#admenter").cmsPos();$(document).cmsLayRes();$("#admenter, #admlayout").show();$("embed, object").hide();$("#admlogin").focus()}}},cmsLayRes:function(){if(!$(document).is(":has(#admlayout)")){return false}if($("#admlayout").is(":visible")){$bH=$(document).height();$("#admlayout").hide();$("#admlayout").height($bH).show()}},cmsPos:function(){$wH=$(window).height();$eH=$(this).height();a($wH,$eH);$eHper=$boxper;$wW=$(window).width();$eW=$(this).width();a($wW,$eW);$eWper=$boxper;$(this).css({top:$eHper+"%",left:$eWper+"%",position:"fixed"});function a(b,c){if(b&&c){$oneper=b/100;$boxper=((b/2)-(c/2))/$oneper;return $boxper}}},cmsAuth:function(){if($clicked.is(":disabled")){return false}if($clicked.is("#admlayout")){$("#admenter, #admlayout").hide();$("embed, object").show()}if($clicked.is("#authbutton")){$clicked.cmsLog()}},cmsLog:function(){$dataDef="Войти";$dataCheck="Проверка данных...";$dataLoad="Получение данных...";$dataFail="Ошибка, неверная пара <strong>логин/пароль</strong>.";$clicked.attr("disabled","disabled").val($dataCheck);$url=document.location.href;$log=$("#admlogin").val();$pas=$("#admpassword").val();if($log&&$pas){$.post($url,{ajax:"authorizedCheck",login:$log,password:$pas},function(a,b){if(a.status=="success"){if(a.check){$clicked.val($dataLoad);$("#authform").submit()}else{$("#authinfo").append('<div class="b-autherror" id="autherror" style="display:none;">'+$dataFail+"</div>");$("#autherror").slideDown(250);$clicked.removeAttr("disabled").val("Войти");$("#admlogin").focus().bind("keypress blur",function(){$("#autherror").remove()})}}},"json")}else{$clicked.removeAttr("disabled").val($dataDef);if(!$log||(!$log&&!$pas)){$("#admlogin").focus()}else{if(!$pas){$("#admpassword").focus()}}}}});
//validation rules
(function($) {
	$.fn.validationEngineLanguage = function() {};
	$.validationEngineLanguage = {
		newLang: function() {
			$.validationEngineLanguage.allRules = 	{
					"required":{    			// Add your regex rules here, you can take telephone as an example
						"regex":"none",
						"alertText":"* Это поле обязательно для заполнения",
						"alertTextCheckboxMultiple":"* Please select an option",
						"alertTextCheckboxe":"* This checkbox is required"},
					"length":{
						"regex":"none",
						"alertText":"*Between ",
						"alertText2":" and ",
						"alertText3": " characters allowed"},
					"maxCheckbox":{
						"regex":"none",
						"alertText":"* Checks allowed Exceeded"},
					"minCheckbox":{
						"regex":"none",
						"alertText":"* Please select ",
						"alertText2":" options"},
					"confirm":{
						"regex":"none",
						"alertText":"* Your field is not matching"},
					"phone":{
						"regex":"/^[0-9]{0,7}$/",
						"alertText":"* Некорректный номер телефона"},
					"phcode":{
						"regex":"/^[0-9]{0,3}$/",
						"alertText":"* Некорректный телефонный код"},
					"email":{
						"regex":"/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/",
						"alertText":"* Некорректный адрес электронной почты"},
					"date":{
                         "regex":"/^[0-9]{4}\-\[0-9]{1,2}\-\[0-9]{1,2}$/",
                         "alertText":"* Invalid date, must be in YYYY-MM-DD format"},
					"onlyNumber":{
						"regex":"/^[0-9\ ]+$/",
						"alertText":"* Numbers only"},
					"noSpecialCaracters":{
						"regex":"/^[0-9a-zA-Z]+$/",
						"alertText":"* No special caracters allowed"},
					"ajaxUser":{
						"file":"validateUser.php",
						"extraData":"name=eric",
						"alertTextOk":"* This user is available",
						"alertTextLoad":"* Loading, please wait",
						"alertText":"* This user is already taken"},
					"ajaxName":{
						"file":"validateUser.php",
						"alertText":"* This name is already taken",
						"alertTextOk":"* This name is available",
						"alertTextLoad":"* Loading, please wait"},
					"onlyLetter":{
						"regex":"/^[a-zA-Z\ \']+$/",
						"alertText":"* Letters only"}
					}
		}
	}
})(jQuery);

//validate
(function($) {

	$.fn.validationEngine = function(settings) {

	if($.validationEngineLanguage){				// IS THERE A LANGUAGE LOCALISATION ?
		allRules = $.validationEngineLanguage.allRules;
	}else{
		$.validationEngine.debug("Validation engine rules are not loaded check your external file");
	}
 	settings = jQuery.extend({
		allrules:allRules,
		validationEventTriggers:"focusout",
		inlineValidation: true,
		returnIsValid:false,
		liveEvent:false,
		unbindEngine:true,
		ajaxSubmit: false,
		scroll:true,
		promptPosition: "topRight",	// OPENNING BOX POSITION, IMPLEMENTED: topLeft, topRight, bottomLeft, centerRight, bottomRight
		success : false,
		beforeSuccess :  function() {},
		failure : function() {}
	}, settings);
	$.validationEngine.settings = settings;
	$.validationEngine.ajaxValidArray = new Array();	// ARRAY FOR AJAX: VALIDATION MEMORY

	if(settings.inlineValidation == true){ 		// Validating Inline ?
		if(!settings.returnIsValid){					// NEEDED FOR THE SETTING returnIsValid
			allowReturnIsvalid = false;
			if(settings.liveEvent){						// LIVE event, vast performance improvement over BIND
				$(this).find("[class*=validate][type!=checkbox]").live(settings.validationEventTriggers, function(caller){ _inlinEvent(this);})
				$(this).find("[class*=validate][type=checkbox]").live("click", function(caller){ _inlinEvent(this); })
			}else{
				$(this).find("[class*=validate]").not("[type=checkbox]").bind(settings.validationEventTriggers, function(caller){ _inlinEvent(this); })
				$(this).find("[class*=validate][type=checkbox]").bind("click", function(caller){ _inlinEvent(this); })
			}
			firstvalid = false;
		}
			function _inlinEvent(caller){
				$.validationEngine.settings = settings;
				if($.validationEngine.intercept == false || !$.validationEngine.intercept){		// STOP INLINE VALIDATION THIS TIME ONLY
					$.validationEngine.onSubmitValid=false;
					$.validationEngine.loadValidation(caller);
				}else{
					$.validationEngine.intercept = false;
				}
			}
	}
	if (settings.returnIsValid){		// Do validation and return true or false, it bypass everything;
		if ($.validationEngine.submitValidation(this,settings)){
			return false;
		}else{
			return true;
		}
	}
	$(this).bind("submit", function(caller){   // ON FORM SUBMIT, CONTROL AJAX FUNCTION IF SPECIFIED ON DOCUMENT READY
		$.validationEngine.onSubmitValid = true;
		$.validationEngine.settings = settings;
		if($.validationEngine.submitValidation(this,settings) == false){
			if($.validationEngine.submitForm(this,settings) == true) {return false;}
		}else{
			settings.failure && settings.failure();
			return false;
		}
	})
};
$.validationEngine = {
	defaultSetting : function(caller) {		// NOT GENERALLY USED, NEEDED FOR THE API, DO NOT TOUCH
		if($.validationEngineLanguage){
			allRules = $.validationEngineLanguage.allRules;
		}else{
			$.validationEngine.debug("Validation engine rules are not loaded check your external file");
		}
		settings = {
			allrules:allRules,
			validationEventTriggers:"blur",
			inlineValidation: true,
			returnIsValid:false,
			scroll:true,
			unbindEngine:true,
			ajaxSubmit: false,
			promptPosition: "topRight",	// OPENNING BOX POSITION, IMPLEMENTED: topLeft, topRight, bottomLeft, centerRight, bottomRight
			success : false,
			failure : function() {}
		}
		$.validationEngine.settings = settings;
	},
	loadValidation : function(caller) {		// GET VALIDATIONS TO BE EXECUTED
		if(!$.validationEngine.settings){
			$.validationEngine.defaultSetting()
		}
		rulesParsing = $(caller).attr('class');
		rulesRegExp = /\[(.*)\]/;
		getRules = rulesRegExp.exec(rulesParsing);
		str = getRules[1];
		pattern = /\[|,|\]/;
		result= str.split(pattern);
		var validateCalll = $.validationEngine.validateCall(caller,result)
		return validateCalll;
	},
	validateCall : function(caller,rules) {	// EXECUTE VALIDATION REQUIRED BY THE USER FOR THIS FIELD
		var promptText =""

		if(!$(caller).attr("id")) { $.validationEngine.debug("This field have no ID attribut( name & class displayed): "+$(caller).attr("name")+" "+$(caller).attr("class")) }

		caller = caller;
		ajaxValidate = false;
		var callerName = $(caller).attr("name");
		$.validationEngine.isError = false;
		$.validationEngine.showTriangle = true;
		callerType = $(caller).attr("type");

		for (i=0; i<rules.length;i++){
			switch (rules[i]){
			case "optional":
				if(!$(caller).val()){
					$.validationEngine.closePrompt(caller);
					return $.validationEngine.isError;
				}
			break;
			case "required":
				_required(caller,rules);
			break;
			case "custom":
				 _customRegex(caller,rules,i);
			break;
			case "exemptString":
				 _exemptString(caller,rules,i);
			break;
			case "ajax":
				if(!$.validationEngine.onSubmitValid){
					_ajax(caller,rules,i);
				};
			break;
			case "length":
				 _length(caller,rules,i);
			break;
			case "maxCheckbox":
				_maxCheckbox(caller,rules,i);
			 	groupname = $(caller).attr("name");
			 	caller = $("input[name='"+groupname+"']");
			break;
			case "minCheckbox":
				_minCheckbox(caller,rules,i);
				groupname = $(caller).attr("name");
			 	caller = $("input[name='"+groupname+"']");
			break;
			case "confirm":
				 _confirm(caller,rules,i);
			break;
			default :;
			};
		};
		radioHack();
		if ($.validationEngine.isError == true){
			linkTofield = $.validationEngine.linkTofield(caller);

			($("div."+linkTofield).size() ==0) ? $.validationEngine.buildPrompt(caller,promptText,"error")	: $.validationEngine.updatePromptText(caller,promptText);
		}else{ $.validationEngine.closePrompt(caller);}
		/* UNFORTUNATE RADIO AND CHECKBOX GROUP HACKS */
		/* As my validation is looping input with id's we need a hack for my validation to understand to group these inputs */
		function radioHack(){
	      if($("input[name='"+callerName+"']").size()> 1 && (callerType == "radio" || callerType == "checkbox")) {        // Hack for radio/checkbox group button, the validation go the first radio/checkbox of the group
	          caller = $("input[name='"+callerName+"'][type!=hidden]:first");
	          $.validationEngine.showTriangle = false;
	      }
	    }
		/* VALIDATION FUNCTIONS */
		function _required(caller,rules){   // VALIDATE BLANK FIELD
			callerType = $(caller).attr("type");
			if (callerType == "text" || callerType == "password" || callerType == "textarea"){

				if(!$(caller).val()){
					$.validationEngine.isError = true;
					promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
				}
			}
			if (callerType == "radio" || callerType == "checkbox" ){
				callerName = $(caller).attr("name");

				if($("input[name='"+callerName+"']:checked").size() == 0) {
					$.validationEngine.isError = true;
					if($("input[name='"+callerName+"']").size() ==1) {
						promptText += $.validationEngine.settings.allrules[rules[i]].alertTextCheckboxe+"<br />";
					}else{
						 promptText += $.validationEngine.settings.allrules[rules[i]].alertTextCheckboxMultiple+"<br />";
					}
				}
			}
			if (callerType == "select-one") { // added by paul@kinetek.net for select boxes, Thank you
				if(!$(caller).val()) {
					$.validationEngine.isError = true;
					promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
				}
			}
			if (callerType == "select-multiple") { // added by paul@kinetek.net for select boxes, Thank you
				if(!$(caller).find("option:selected").val()) {
					$.validationEngine.isError = true;
					promptText += $.validationEngine.settings.allrules[rules[i]].alertText+"<br />";
				}
			}
		}
		function _customRegex(caller,rules,position){		 // VALIDATE REGEX RULES
			customRule = rules[position+1];
			pattern = eval($.validationEngine.settings.allrules[customRule].regex);

			if(!pattern.test($(caller).attr('value'))){
				$.validationEngine.isError = true;
				promptText += $.validationEngine.settings.allrules[customRule].alertText+"<br />";
			}
		}
		function _exemptString(caller,rules,position){		 // VALIDATE REGEX RULES
			customString = rules[position+1];
			if(customString == $(caller).attr('value')){
				$.validationEngine.isError = true;
				promptText += $.validationEngine.settings.allrules['required'].alertText+"<br />";
			}
		}
		function _ajax(caller,rules,position){				 // VALIDATE AJAX RULES

			customAjaxRule = rules[position+1];
			postfile = $.validationEngine.settings.allrules[customAjaxRule].file;
			fieldValue = $(caller).val();
			ajaxCaller = caller;
			fieldId = $(caller).attr("id");
			ajaxValidate = true;
			ajaxisError = $.validationEngine.isError;

			if(!$.validationEngine.settings.allrules[customAjaxRule].extraData){
				extraData = $.validationEngine.settings.allrules[customAjaxRule].extraData;
			}else{
				extraData = "";
			}
			/* AJAX VALIDATION HAS ITS OWN UPDATE AND BUILD UNLIKE OTHER RULES */
			if(!ajaxisError){
				$.ajax({
				   	type: "POST",
				   	url: postfile,
				   	async: true,
				   	data: "validateValue="+fieldValue+"&validateId="+fieldId+"&validateError="+customAjaxRule+extraData,
				   	beforeSend: function(){		// BUILD A LOADING PROMPT IF LOAD TEXT EXIST
				   		if($.validationEngine.settings.allrules[customAjaxRule].alertTextLoad){

				   			if(!$("div."+fieldId+"formError")[0]){
	 			 				return $.validationEngine.buildPrompt(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load");
	 			 			}else{
	 			 				$.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextLoad,"load");
	 			 			}
			   			}
			  	 	},
			  	 	error: function(data,transport){ $.validationEngine.debug("error in the ajax: "+data.status+" "+transport) },
					success: function(data){					// GET SUCCESS DATA RETURN JSON
						data = eval( "("+data+")");				// GET JSON DATA FROM PHP AND PARSE IT
						ajaxisError = data.jsonValidateReturn[2];
						customAjaxRule = data.jsonValidateReturn[1];
						ajaxCaller = $("#"+data.jsonValidateReturn[0])[0];
						fieldId = ajaxCaller;
						ajaxErrorLength = $.validationEngine.ajaxValidArray.length;
						existInarray = false;

			 			 if(ajaxisError == "false"){			// DATA FALSE UPDATE PROMPT WITH ERROR;

			 			 	_checkInArray(false)				// Check if ajax validation alreay used on this field

			 			 	if(!existInarray){		 			// Add ajax error to stop submit
				 			 	$.validationEngine.ajaxValidArray[ajaxErrorLength] =  new Array(2);
				 			 	$.validationEngine.ajaxValidArray[ajaxErrorLength][0] = fieldId;
				 			 	$.validationEngine.ajaxValidArray[ajaxErrorLength][1] = false;
				 			 	existInarray = false;
			 			 	}

			 			 	$.validationEngine.ajaxValid = false;
							promptText += $.validationEngine.settings.allrules[customAjaxRule].alertText+"<br />";
							$.validationEngine.updatePromptText(ajaxCaller,promptText,"",true);
						 }else{
						 	_checkInArray(true);
						 	$.validationEngine.ajaxValid = true;
	 			 			if($.validationEngine.settings.allrules[customAjaxRule].alertTextOk){	// NO OK TEXT MEAN CLOSE PROMPT
	 			 				 				$.validationEngine.updatePromptText(ajaxCaller,$.validationEngine.settings.allrules[customAjaxRule].alertTextOk,"pass",true);
 			 				}else{
				 			 	ajaxValidate = false;
				 			 	$.validationEngine.closePrompt(ajaxCaller);
 			 				}
			 			 }
			 			function  _checkInArray(validate){
			 				for(x=0;x<ajaxErrorLength;x++){
			 			 		if($.validationEngine.ajaxValidArray[x][0] == fieldId){
			 			 			$.validationEngine.ajaxValidArray[x][1] = validate;
			 			 			existInarray = true;

			 			 		}
			 			 	}
			 			}
			 		}
				});
			}
		}
		function _confirm(caller,rules,position){		 // VALIDATE FIELD MATCH
			confirmField = rules[position+1];

			if($(caller).attr('value') != $("#"+confirmField).attr('value')){
				$.validationEngine.isError = true;
				promptText += $.validationEngine.settings.allrules["confirm"].alertText+"<br />";
			}
		}
		function _length(caller,rules,position){    	  // VALIDATE LENGTH

			startLength = eval(rules[position+1]);
			endLength = eval(rules[position+2]);
			feildLength = $(caller).attr('value').length;

			if(feildLength<startLength || feildLength>endLength){
				$.validationEngine.isError = true;
				promptText += $.validationEngine.settings.allrules["length"].alertText+startLength+$.validationEngine.settings.allrules["length"].alertText2+endLength+$.validationEngine.settings.allrules["length"].alertText3+"<br />"
			}
		}
		function _maxCheckbox(caller,rules,position){  	  // VALIDATE CHECKBOX NUMBER

			nbCheck = eval(rules[position+1]);
			groupname = $(caller).attr("name");
			groupSize = $("input[name='"+groupname+"']:checked").size();
			if(groupSize > nbCheck){
				$.validationEngine.showTriangle = false;
				$.validationEngine.isError = true;
				promptText += $.validationEngine.settings.allrules["maxCheckbox"].alertText+"<br />";
			}
		}
		function _minCheckbox(caller,rules,position){  	  // VALIDATE CHECKBOX NUMBER

			nbCheck = eval(rules[position+1]);
			groupname = $(caller).attr("name");
			groupSize = $("input[name='"+groupname+"']:checked").size();
			if(groupSize < nbCheck){

				$.validationEngine.isError = true;
				$.validationEngine.showTriangle = false;
				promptText += $.validationEngine.settings.allrules["minCheckbox"].alertText+" "+nbCheck+" "+$.validationEngine.settings.allrules["minCheckbox"].alertText2+"<br />";
			}
		}
		return($.validationEngine.isError) ? $.validationEngine.isError : false;
	},
	submitForm : function(caller){
		if($.validationEngine.settings.ajaxSubmit){
			if($.validationEngine.settings.ajaxSubmitExtraData){
				extraData = $.validationEngine.settings.ajaxSubmitExtraData;
			}else{
				extraData = "";
			}
			$.ajax({
			   	type: "POST",
			   	url: $.validationEngine.settings.ajaxSubmitFile,
			   	async: true,
			   	data: $(caller).serialize()+"&"+extraData,
			   	error: function(data,transport){ $.validationEngine.debug("error in the ajax: "+data.status+" "+transport) },
			   	success: function(data){
			   		if(data == "true"){			// EVERYTING IS FINE, SHOW SUCCESS MESSAGE
			   			$(caller).css("opacity",1)
			   			$(caller).animate({opacity: 0, height: 0}, function(){
			   				$(caller).css("display","none");
			   				$(caller).before("<div class='ajaxSubmit'>"+$.validationEngine.settings.ajaxSubmitMessage+"</div>");
			   				$.validationEngine.closePrompt(".formError",true);
			   				$(".ajaxSubmit").show("slow");
			   				if ($.validationEngine.settings.success){	// AJAX SUCCESS, STOP THE LOCATION UPDATE
								$.validationEngine.settings.success && $.validationEngine.settings.success();
								return false;
							}
			   			})
		   			}else{						// HOUSTON WE GOT A PROBLEM (SOMETING IS NOT VALIDATING)
			   			data = eval( "("+data+")");
			   			if(!data.jsonValidateReturn){
			   				 $.validationEngine.debug("you are not going into the success fonction and jsonValidateReturn return nothing");
			   			}
			   			errorNumber = data.jsonValidateReturn.length
			   			for(index=0; index<errorNumber; index++){
			   				fieldId = data.jsonValidateReturn[index][0];
			   				promptError = data.jsonValidateReturn[index][1];
			   				type = data.jsonValidateReturn[index][2];
			   				$.validationEngine.buildPrompt(fieldId,promptError,type);
		   				}
	   				}
   				}
			})
			return true;
		}
		// LOOK FOR BEFORE SUCCESS METHOD
			if(!$.validationEngine.settings.beforeSuccess()){
				if ($.validationEngine.settings.success){	// AJAX SUCCESS, STOP THE LOCATION UPDATE
					if($.validationEngine.settings.unbindEngine){ $(caller).unbind("submit") }
					$.validationEngine.settings.success && $.validationEngine.settings.success();
					return true;
				}
			}else{
				return true;
			}
		return false;
	},
	buildPrompt : function(caller,promptText,type,ajaxed) {			// ERROR PROMPT CREATION AND DISPLAY WHEN AN ERROR OCCUR
		if(!$.validationEngine.settings){
			$.validationEngine.defaultSetting()
		}
		deleteItself = "." + $(caller).attr("id") + "formError"

		if($(deleteItself)[0]){
			$(deleteItself).stop();
			$(deleteItself).remove();
		}
		var divFormError = document.createElement('div');
		var formErrorContent = document.createElement('div');
		linkTofield = $.validationEngine.linkTofield(caller)
		$(divFormError).addClass("formError")

		if(type == "pass"){ $(divFormError).addClass("greenPopup") }
		if(type == "load"){ $(divFormError).addClass("blackPopup") }
		if(ajaxed){ $(divFormError).addClass("ajaxed") }

		$(divFormError).addClass(linkTofield);
		$(formErrorContent).addClass("formErrorContent");

		$("body").append(divFormError);
		$(divFormError).append(formErrorContent);

		if($.validationEngine.showTriangle != false){		// NO TRIANGLE ON MAX CHECKBOX AND RADIO
			var arrow = document.createElement('div');
			$(arrow).addClass("formErrorArrow");
			$(divFormError).append(arrow);
			if($.validationEngine.settings.promptPosition == "bottomLeft" || $.validationEngine.settings.promptPosition == "bottomRight"){
			$(arrow).addClass("formErrorArrowBottom")
			$(arrow).html('<div class="line1"><!-- --></div><div class="line2"><!-- --></div><div class="line3"><!-- --></div><div class="line4"><!-- --></div><div class="line5"><!-- --></div><div class="line6"><!-- --></div><div class="line7"><!-- --></div><div class="line8"><!-- --></div><div class="line9"><!-- --></div><div class="line10"><!-- --></div>');
		}
			if($.validationEngine.settings.promptPosition == "topLeft" || $.validationEngine.settings.promptPosition == "topRight"){
				$(divFormError).append(arrow);
				$(arrow).html('<div class="line10"><!-- --></div><div class="line9"><!-- --></div><div class="line8"><!-- --></div><div class="line7"><!-- --></div><div class="line6"><!-- --></div><div class="line5"><!-- --></div><div class="line4"><!-- --></div><div class="line3"><!-- --></div><div class="line2"><!-- --></div><div class="line1"><!-- --></div>');
			}
		}
		$(formErrorContent).html(promptText)

		callerTopPosition = $(caller).offset().top;
		callerleftPosition = $(caller).offset().left;
		callerWidth =  $(caller).width();
		inputHeight = $(divFormError).height();

		/* POSITIONNING */
		if($.validationEngine.settings.promptPosition == "topRight"){callerleftPosition +=  callerWidth -30; callerTopPosition += -inputHeight -10; }
		if($.validationEngine.settings.promptPosition == "topLeft"){ callerTopPosition += -inputHeight -10; }

		if($.validationEngine.settings.promptPosition == "centerRight"){ callerleftPosition +=  callerWidth +13; }

		if($.validationEngine.settings.promptPosition == "bottomLeft"){
			callerHeight =  $(caller).height();
			callerleftPosition = callerleftPosition;
			callerTopPosition = callerTopPosition + callerHeight + 15;
		}
		if($.validationEngine.settings.promptPosition == "bottomRight"){
			callerHeight =  $(caller).height();
			callerleftPosition +=  callerWidth -30;
			callerTopPosition +=  callerHeight + 15;
		}
		$(divFormError).css({
			top:callerTopPosition,
			left:callerleftPosition,
			opacity:0
		})
		return $(divFormError).animate({"opacity":0.87},function(){return true;});
	},
	updatePromptText : function(caller,promptText,type,ajaxed) {	// UPDATE TEXT ERROR IF AN ERROR IS ALREADY DISPLAYED

		linkTofield = $.validationEngine.linkTofield(caller);
		var updateThisPrompt =  "."+linkTofield;

		if(type == "pass") { $(updateThisPrompt).addClass("greenPopup") }else{ $(updateThisPrompt).removeClass("greenPopup")};
		if(type == "load") { $(updateThisPrompt).addClass("blackPopup") }else{ $(updateThisPrompt).removeClass("blackPopup")};
		if(ajaxed) { $(updateThisPrompt).addClass("ajaxed") }else{ $(updateThisPrompt).removeClass("ajaxed")};

		$(updateThisPrompt).find(".formErrorContent").html(promptText);
		callerTopPosition  = $(caller).offset().top;
		inputHeight = $(updateThisPrompt).height();

		if($.validationEngine.settings.promptPosition == "bottomLeft" || $.validationEngine.settings.promptPosition == "bottomRight"){
			callerHeight =  $(caller).height();
			callerTopPosition =  callerTopPosition + callerHeight + 15;
		}
		if($.validationEngine.settings.promptPosition == "centerRight"){  callerleftPosition +=  callerWidth +13;}
		if($.validationEngine.settings.promptPosition == "topLeft" || $.validationEngine.settings.promptPosition == "topRight"){
			callerTopPosition = callerTopPosition  -inputHeight -10;
		}
		$(updateThisPrompt).animate({ top:callerTopPosition });
	},
	linkTofield : function(caller){
		linkTofield = $(caller).attr("id") + "formError";
		linkTofield = linkTofield.replace(/\[/g,"");
		linkTofield = linkTofield.replace(/\]/g,"");
		return linkTofield;
	},
	closePrompt : function(caller,outside) {						// CLOSE PROMPT WHEN ERROR CORRECTED
		if(!$.validationEngine.settings){
			$.validationEngine.defaultSetting()
		}
		if(outside){
			$(caller).fadeTo("fast",0,function(){
				$(caller).remove();
			});
			return false;
		}
		if(typeof(ajaxValidate)=='undefined'){ajaxValidate = false}
		if(!ajaxValidate){
			linkTofield = $.validationEngine.linkTofield(caller);
			closingPrompt = "."+linkTofield;
			$(closingPrompt).fadeTo("fast",0,function(){
				$(closingPrompt).remove();
			});
		}
	},
	debug : function(error) {
		if(!$("#debugMode")[0]){
			$("body").append("<div id='debugMode'><div class='debugError'><strong>This is a debug mode, you got a problem with your form, it will try to help you, refresh when you think you nailed down the problem</strong></div></div>");
		}
		$(".debugError").append("<div class='debugerror'>"+error+"</div>");
	},
	submitValidation : function(caller) {					// FORM SUBMIT VALIDATION LOOPING INLINE VALIDATION
		var stopForm = false;
		$.validationEngine.ajaxValid = true;
		$(caller).find(".formError").remove();
		var toValidateSize = $(caller).find("[class*=validate]").size();

		$(caller).find("[class*=validate]").each(function(i){
			linkTofield = $.validationEngine.linkTofield(this);

			if(!$("."+linkTofield).hasClass("ajaxed")){	// DO NOT UPDATE ALREADY AJAXED FIELDS (only happen if no normal errors, don't worry)
				var validationPass = $.validationEngine.loadValidation(this);
				if (validationPass) {
					stopForm = true;
					return false;
				}
				//return(validationPass) ? stopForm = true : "";
			};
		});
		ajaxErrorLength = $.validationEngine.ajaxValidArray.length;		// LOOK IF SOME AJAX IS NOT VALIDATE
		for(x=0;x<ajaxErrorLength;x++){
	 		if($.validationEngine.ajaxValidArray[x][1] == false){
	 			$.validationEngine.ajaxValid = false;
 			}
 		}
		if(stopForm || !$.validationEngine.ajaxValid){		// GET IF THERE IS AN ERROR OR NOT FROM THIS VALIDATION FUNCTIONS
			if($.validationEngine.settings.scroll){
				destination = $(".formError:not('.greenPopup'):first").offset().top;
				$(".formError:not('.greenPopup')").each(function(){
					testDestination = $(this).offset().top;
					if(destination>testDestination){
						destination = $(this).offset().top;
					}
				})
				$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1100);
			}
			return true;
		}else{
			return false;
		}
	}
}
})(jQuery);
