/*
 * jQuery bValidator plugin
 *
 * http://code.google.com/p/bvalidator/
 *
 * Copyright (c) 2011 Bojan Mauser
 *
 * $Id: jquery.bvalidator.js 55 2011-02-02 01:29:04Z bmauser $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function(a){a.fn.bValidator=function(b){return new bValidator(this,b)};bValidator=function(m,e){var i={singleError:false,offset:{x:25,y:-15},position:{x:"left",y:"top"},template:'<div class="{errMsgClass}"><em/>{message}</div>',templateCloseIcon:'<div style="display:table"><div style="display:table-cell">{message}</div><div style="display:table-cell"><div class="{closeIconClass}" onclick="{closeErrMsg}">x</div></div></div>',showCloseIcon:true,showErrMsgSpeed:"normal",scrollToError:true,closeIconClass:"bvalidator_close_icon",errMsgClass:"bvalidator_errmsg",errorClass:"bvalidator_invalid",validClass:"",lang:"en",errorMessageAttr:"data-bvalidator-msg",validateActionsAttr:"data-bvalidator",paramsDelimiter:":",validatorsDelimiter:",",validateOn:null,errorValidateOn:"keyup",onBeforeValidate:null,onAfterValidate:null,onValidateFail:null,onValidateSuccess:null,errorMessages:{en:{"default":"Please correct this value.",equalto:"Please enter the same value again.",differs:"Please enter a different value.",minlength:"The length must be at least {0} characters",maxlength:"The length must be at max {0} characters",rangelength:"The length must be between {0} and {1}",min:"Please enter a number greater than or equal to {0}.",max:"Please enter a number less than or equal to {0}.",between:"Please enter a number between {0} and {1}.",required:"This field is required.",alpha:"Please enter alphabetic characters only.",alphanum:"Please enter alphanumeric characters only.",digit:"Please enter only digits.",number:"Please enter a valid number.",email:"Please enter a valid email address.",image:"This field should only contain image types",url:"Please enter a valid URL.",ip4:"Please enter a valid IP address.",date:"Please enter a valid date in format {0}."}},regex:{alpha:/^[a-z ._\-]+$/i,alphanum:/^[a-z0-9 ._\-]+$/i,digit:/^\d+$/,number:/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/,email:/^([a-zA-Z0-9_\.\-\+%])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,image:/\.(jpg|jpeg|png|gif|bmp)$/i,url:/^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&amp;%\$#\=~])*$/i}},c=function(o){return o.is(":input")?o:o.find(":input["+i.validateActionsAttr+"]").not(":button, :image, :reset, :submit, :hidden, :disabled")
},j=function(o){o.bind(i.validateOn+".bV",{bVInstance:l},function(p){p.data.bVInstance.validate(false,a(this))})},h=function(q,p){g(q);msg_container=a('<div class="bVErrMsgContainer"></div>').css("position","absolute");q.data("errMsg.bV",msg_container);msg_container.insertAfter(q);var u="";for(var s in p){u+="<div>"+p[s]+"</div>\n"}if(i.showCloseIcon){u=i.templateCloseIcon.replace("{message}",u).replace("{closeIconClass}",i.closeIconClass).replace("{closeErrMsg}","$(this).closest('."+i.errMsgClass+"').css('visibility', 'hidden');")
}var o=a(i.template.replace("{errMsgClass}",i.errMsgClass).replace("{message}",u));o.appendTo(msg_container);var t=n(q,o);o.css({visibility:"visible",position:"absolute",top:t.top,left:t.left}).fadeIn(i.showErrMsgSpeed);if(i.scrollToError){var r=o.offset().top;if(k===null||r<k){k=r}}},g=function(o){var p=o.data("errMsg.bV");if(p){p.remove()}},n=function(v,r){var q=v.data("errMsg.bV"),s=-((q.offset().top-v.offset().top)+r.outerHeight()-i.offset.y),p=(v.offset().left+v.outerWidth())-q.offset().left+i.offset.x,u=i.position.x,t=i.position.y;
if(t=="center"||t=="bottom"){var w=r.outerHeight()+v.outerHeight();if(t=="center"){s+=w/2}if(t=="bottom"){s+=w}}if(u=="center"||u=="left"){var o=v.outerWidth();if(u=="center"){p-=o/2}if(u=="left"){p-=o}}return{top:s,left:p}},b=function(p,q,r,o){if(a.isFunction(i[p])){return i[p](q,r,o)}},d=function(p){var o={};if(p.is("input:checkbox")){o.value=p.attr("name")?o.selectedInGroup=a('input:checkbox[name="'+p.attr("name")+'"]:checked').length:p.attr("checked")}else{if(p.is("input:radio")){o.value=p.attr("name")?o.value=a('input:radio[name="'+p.attr("name")+'"]:checked').length:p.val()
}else{if(p.is("select")){o.selectedInGroup=a("option:selected",p).length;o.value=p.val()}else{if(p.is(":input")){o.value=p.val()}}}}return o},f={equalto:function(o,p){return o.value==a("#"+p).val()},differs:function(o,p){return o.value!=a("#"+p).val()},minlength:function(o,p){return(o.value.length>=parseInt(p))},maxlength:function(o,p){return(o.value.length<=parseInt(p))},rangelength:function(o,q,p){return(o.value.length>=parseInt(q)&&o.value.length<=parseInt(p))},min:function(o,p){if(o.selectedInGroup){return o.selectedInGroup>=parseFloat(p)
}else{if(!this.number(o)){return false}return(parseFloat(o.value)>=parseFloat(p))}},max:function(p,o){if(p.selectedInGroup){return p.selectedInGroup<=parseFloat(o)}else{if(!this.number(p)){return false}return(parseFloat(p.value)<=parseFloat(o))}},between:function(p,q,o){if(p.selectedInGroup){return(p.selectedInGroup>=parseFloat(q)&&p.selectedInGroup<=parseFloat(o))}if(!this.number(p)){return false}var r=parseFloat(p.value);return(r>=parseFloat(q)&&r<=parseFloat(o))},required:function(o){if(!o.value||!a.trim(o.value)){return false
}return true},alpha:function(o){return this.regex(o,i.regex.alpha)},alphanum:function(o){return this.regex(o,i.regex.alphanum)},digit:function(o){return this.regex(o,i.regex.digit)},number:function(o){return this.regex(o,i.regex.number)},email:function(o){return this.regex(o,i.regex.email)},image:function(o){return this.regex(o,i.regex.image)},url:function(o){return this.regex(o,i.regex.url)},regex:function(o,q,p){if(typeof q==="string"){q=new RegExp(q,p)}return q.test(o.value)},ip4:function(o){var p=/^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$/;
if(!p.test(o.value)||o.value=="0.0.0.0"||o.value=="255.255.255.255"){return false}return true},date:function(x,y){if(x.value.length==10&&y.length==10){var z=y.match(/[^mdy]+/g);if(z.length==2&&z[0].length==1&&z[0]==z[1]){var t=x.value.split(z[0]),q=y.split(z[0]);for(var p=0;p<3;p++){if(q[p]=="dd"){var w=t[p]}else{if(q[p]=="mm"){var r=t[p]}else{if(q[p]=="yyyy"){var u=t[p]}}}}var o=new Date(u,r-1,w);if((o.getMonth()+1!=r)||(o.getDate()!=w)||(o.getFullYear()!=u)){return false}return true}}return false
},extension:function(){var o=arguments[0],q="";if(!arguments[1]){return false}for(var p=1;p<arguments.length;p++){q+=arguments[p];if(p!=arguments.length-1){q+="|"}}return this.regex(o,"\\.("+q+")$","i")}},l=this,k;if(window.bValidatorOptions){a.extend(true,i,window.bValidatorOptions)}if(e){a.extend(true,i,e)}if(m.data("bValidator")){return m.data("bValidator")}m.data("bValidator",this);if(m.is("form")){m.bind("submit.bV",function(o){if(l.validate()){return true}else{o.stopImmediatePropagation();return false
}});m.bind("reset.bV",function(){l.reset()})}if(i.validateOn){j(c(m))}this.validate=function(o,s){var p=true,r=s?s:c(m);k=null;r.each(function(){var H=a.trim(a(this).attr(i.validateActionsAttr).replace(new RegExp("\\s*\\"+i.validatorsDelimiter+"\\s*","g"),i.validatorsDelimiter)),E=0;if(!H){return true}var x=H.split(i.validatorsDelimiter),w=d(a(this)),D=[];if(jQuery.inArray("required",x)==-1&&!f.required(w)){E=1}if(!E){var u=a(this).attr(i.errorMessageAttr),C=0;for(var z in x){x[z]=a.trim(x[z]);if(!x[z]){continue
}if(b("onBeforeValidate",a(this),x[z])===false){continue}var B=x[z].match(/^(.*?)\[(.*?)\]/);if(B&&B.length==3){var A=B[1];B=B[2].split(i.paramsDelimiter)}else{B=[];var A=x[z]}if(typeof f[A]=="function"){B.unshift(w);var t=f[A].apply(f,B)}else{if(typeof window[A]=="function"){B.unshift(w.value);var t=window[A].apply(f,B)}}if(b("onAfterValidate",a(this),x[z],t)===false){continue}if(!t){if(!o){if(!C){if(!u){if(i.errorMessages[i.lang]&&i.errorMessages[i.lang][A]){u=i.errorMessages[i.lang][A]}else{if(i.errorMessages.en[A]){u=i.errorMessages.en[A]
}else{if(i.errorMessages[i.lang]&&i.errorMessages[i.lang]["default"]){u=i.errorMessages[i.lang]["default"]}else{u=i.errorMessages.en["default"]}}}}else{C=1}if(u.indexOf("{")){for(var y=0;y<B.length-1;y++){u=u.replace(new RegExp("\\{"+y+"\\}","g"),B[y+1])}}if(!(D.length&&A=="required")){D[D.length]=u}u=null}}else{D[D.length]=""}p=false;if(b("onValidateFail",a(this),x[z],D)===false){continue}}else{if(b("onValidateSuccess",a(this),x[z])===false){continue}}}}if(!o){var v=a(this).is("input:checkbox,input:radio")?1:0;
if(D.length){h(a(this),D);if(!v){a(this).removeClass(i.validClass);if(i.errorClass){a(this).addClass(i.errorClass)}}if(i.errorValidateOn){if(i.validateOn){a(this).unbind(i.validateOn+".bV")}var G=v||a(this).is("select,input:file")?"change":i.errorValidateOn;if(v){var F=a(this).is("input:checkbox")?a('input:checkbox[name="'+a(this).attr("name")+'"]'):a('input:radio[name="'+a(this).attr("name")+'"]');a(F).unbind(".bVerror");a(F).bind("change.bVerror",{bVInstance:l,groupLeader:a(this)},function(I){I.data.bVInstance.validate(false,I.data.groupLeader)
})}else{a(this).unbind(".bVerror");a(this).bind(G+".bVerror",{bVInstance:l},function(I){I.data.bVInstance.validate(false,a(this))})}}if(i.singleError){return false}}else{g(a(this));if(!v){a(this).removeClass(i.errorClass);if(i.validClass){a(this).addClass(i.validClass)}}if(i.validateOn){a(this).unbind(i.validateOn+".bV");j(a(this))}}}});if(k&&!s&&(a(window).scrollTop()>k||a(window).scrollTop()+a(window).height()<k)){var q=navigator.userAgent.toLowerCase();a(q.indexOf("chrome")>-1||q.indexOf("safari")>-1?"body":"html").animate({scrollTop:k-10},{duration:"slow"})
}return p};this.getOptions=function(){return i};this.isValid=function(){return this.validate(true)};this.removeErrMsg=function(o){g(o)};this.getInputs=function(){return c(m)};this.bindValidateOn=function(o){j(o)};this.reset=function(){elements=c(m);if(i.validateOn){j(elements)}elements.each(function(){g(a(this));a(this).unbind(".bVerror");a(this).removeClass(i.errorClass);a(this).removeClass(i.validClass)})};this.destroy=function(){if(m.is("form")){m.unbind(".bV")}this.reset();m.removeData("bValidator")
}}})(jQuery);


(function(b){var h=b.tools.tooltip;b.extend(h.conf,{direction:"down",bounce:!0,slideOffset:0,slideInSpeed:200,slideOutSpeed:200,slideFade:!b.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};h.addEffect("slide",function(b){var a=this.getConf(),g=this.getTip(),k=a.slideFade?{opacity:a.opacity}:{},l=e[a.direction]||e.up;k[l[1]]=l[0]+"="+a.slideOffset;a.slideFade&&g.css({opacity:0});g.show().animate(k,a.slideInSpeed,b)},function(j){var a=this.getConf(),g=a.slideOffset,
k=a.slideFade?{opacity:0}:{},l=e[a.direction]||e.up,f=""+l[0];a.bounce&&(f=f=="+"?"-":"+");k[l[1]]=f+"="+g;this.getTip().animate(k,a.slideOutSpeed,function(){b(this).hide();j.call()})})})(jQuery);
(function(b){var h=b.tools.tooltip;h.dynamic={conf:{classNames:"top right bottom left"}};b.fn.dynamic=function(e){typeof e=="number"&&(e={speed:e});var e=b.extend({},h.dynamic.conf,e),j=e.classNames.split(/\s/),a;this.each(function(){var g=b(this).tooltip().onBeforeShow(function(k,g){var f=this.getTip(),c=this.getConf();a||(a=[c.position[0],c.position[1],c.offset[0],c.offset[1],b.extend({},c)]);b.extend(c,a[4]);c.position=[a[0],a[1]];c.offset=[a[2],a[3]];f.css({visibility:"hidden",position:"absolute",
top:g.top,left:g.left}).show();var d;d=b(window);var i=d.width()+d.scrollLeft(),h=d.height()+d.scrollTop();d=[f.offset().top<=d.scrollTop(),i<=f.offset().left+f.width(),h<=f.offset().top+f.height(),d.scrollLeft()>=f.offset().left];a:{for(i=d.length;i--;)if(d[i]){i=!1;break a}i=!0}if(!i){d[2]&&(b.extend(c,e.top),c.position[0]="top",f.addClass(j[0]));d[3]&&(b.extend(c,e.right),c.position[1]="right",f.addClass(j[1]));d[0]&&(b.extend(c,e.bottom),c.position[0]="bottom",f.addClass(j[2]));d[1]&&(b.extend(c,
e.left),c.position[1]="left",f.addClass(j[3]));if(d[0]||d[2])c.offset[0]*=-1;if(d[1]||d[3])c.offset[1]*=-1}f.css({visibility:"visible"}).hide()});g.onBeforeShow(function(){var b=this.getConf();this.getTip();setTimeout(function(){b.position=[a[0],a[1]];b.offset=[a[2],a[3]]},0)});g.onHide(function(){this.getTip().removeClass(e.classNames)});ret=g});return e.api?ret:this}})(jQuery);
