eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}))
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0.C(0.1,{7:2(x,t,b,c,d){3 0.1.D(x,t,b,c,d)},5:2(x,t,b,c,d){3 0.1.6(x,t,b,c,d)},h:2(x,t,b,c,d){3 0.1.B(x,t,b,c,d)},A:2(x,t,b,c,d){3 0.1.m(x,t,b,c,d)},y:2(x,t,b,c,d){3 0.1.w(x,t,b,c,d)},v:2(x,t,b,c,d){3 0.1.u(x,t,b,c,d)},s:2(x,t,b,c,d){3 0.1.r(x,t,b,c,d)},q:2(x,t,b,c,d){3 0.1.p(x,t,b,c,d)},o:2(x,t,b,c,d){3 0.1.n(x,t,b,c,d)},8:2(x,t,b,c,d){3 0.1.l(x,t,b,c,d)},g:2(x,t,b,c,d){3 0.1.j(x,t,b,c,d)},i:2(x,t,b,c,d){3 0.1.k(x,t,b,c,d)},z:2(x,t,b,c,d){3 0.1.f(x,t,b,c,d)},e:2(x,t,b,c,d){3 0.1.a(x,t,b,c,d)},9:2(x,t,b,c,d){3 0.1.4(x,t,b,c,d)}});',40,40,'jQuery|easing|function|return|easeInOutBack|easeOut|easeOutQuad|easeIn|elasin|backinout|easeOutBack||||backout|easeInBack|elasout|easeInOut|elasinout|easeOutElastic|easeInOutElastic|easeInElastic|easeInExpo|easeInOutBounce|bounceinout|easeOutBounce|bounceout|easeInBounce|bouncein||easeInOutExpo|expoinout|easeOutExpo||expoout|backin|expoin|easeInOutQuad|extend|easeInQuad'.split('|'),0,{}))
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3(d(){3("4.T").1s("<p r=\'O\'>16...<1t /><18 19=\'1a/11-1b.1c\' 1d=\'O...\'/ ></p>")});b j=0;3.1e.1f=d(f){f=3.1g({G:"1h",E:1i,1j:Q},f);P 6.w(d(){b o=3(6);o.7("p.O").1k();o.q("T").l("1l");b m=o.7("4.I").C();b k=o.7("4.I").1m();b U=m*k;o.7("4.t").K("C",U);b N=k*2;F(h.g&&D(h.g.s(1))<=k){b 9=D(h.g.s(1));b e=-(m*(9-1));3(6).7("4.t").K({H:e})}B{b 9=1};o.w(d(i){3(6).W("<4 r=\'J\' M=\'J"+j+"\'><a A=\'#\'>1n</a><\\/4>");3(6).1o("<4 r=\'L\' M=\'L"+j+"\'><a A=\'#\'>1q</a><\\/4>");3(6).W("<4 r=\'c\' M=\'c"+j+"\'><v><\\/v><\\/4>");3(6).7("4.I").w(d(n){3("4#c"+j+" v").X("<x r=\'Z"+(n+1)+"\'><a A=\'#"+(n+1)+"\'>"+3(6).S("10")+"<\\/a><\\/x>")});3("4#c"+j+" a").w(d(z){N+=3(6).5().C();3(6).12("u",d(){3(6).l("8").5().5().7("a").13(3(6)).q("8");b e=-(m*z);9=z+1;3(6).5().5().5().V().7("4.t").R({H:e},f.E,f.G)})});3("4#J"+j+" a").u(d(){F(9==1){b e=-(m*(k-1));9=k;3(6).5().5().7("4.c a.8").q("8").5().5().7("x:14 a").l("8")}B{9-=1;b e=-(m*(9-1));3(6).5().5().7("4.c a.8").q("8").5().15().7("a").l("8")};3(6).5().5().7("4.t").R({H:e},f.E,f.G);h.g=9;P Q});3("4#L"+j+" a").u(d(){F(9==k){b e=0;9=1;3(6).5().5().7("4.c a.8").q("8").5().5().7("a:y(0)").l("8")}B{b e=-(m*9);9+=1;3(6).5().5().7("4.c a.8").q("8").5().V().7("a").l("8")};3(6).5().5().7("4.t").R({H:e},f.E,f.G);h.g=9;P Q});3("a.1p-1r").u(d(){3(6).Y().7(".c v x a:y("+(D(3(6).S("A").s(1))-1)+")").17(\'u\')});3("4#c"+j).K("C",N);F(h.g&&D(h.g.s(1))<=k){3("4#c"+j+" a:y("+(h.g.s(1)-1)+")").l("8")}B{3("4#c"+j+" a:y(0)").l("8")}});j++})};',62,92,'|||jQuery|div|parent|this|find|current|cPanel||var|stripNav|function|cnt|settings|hash|location|||panelCount|addClass|panelWidth||container||removeClass|class|slice|panelContainer|click|ul|each|li|eq||href|else|width|parseInt|easeTime|if|easeFunc|left|panel|stripNavL|css|stripNavR|id|navWidth|loading|return|false|animate|attr|csw|stripViewerWidth|next|before|append|parents|tab|title|ajax|bind|not|last|prev|Loading|trigger|img|src|images|loader|gif|alt|fn|codaSlider|extend|expoinout|750|toolTip|remove|stripViewer|size|Left|after|cross|Right|link|prepend|br'.split('|'),0,{}))
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('8.M(8.2O,{1A:7(c){l(!6.F){c&&c.2k&&32.1n&&1n.4P("3u 2A, 6m\'t 1A, 61 3u");k}p b=8.17(6[0],\'r\');l(b){k b}b=28 8.r(c,6[0]);8.17(6[0],\'r\',b);l(b.q.3z){6.4J(".4G:21").3i(7(){b.3e=v});6.21(7(a){l(b.q.2k)a.64();7 2r(){l(b.q.4e){b.q.4e.15(b,b.16);k L}k v}l(b.3e){b.3e=L;k 2r()}l(b.P()){l(b.1m){b.1P=v;k L}k 2r()}1k{b.2c();k L}})}k b},N:7(){l(8(6[0]).2R(\'P\')){k 6.1A().P()}1k{p b=L;p a=8(6[0].P).1A();6.O(7(){b|=a.K(6)});k b}},4R:7(a){p b={},$K=6;$.O(a.1H(/\\s/),7(){b[6]=$K.1E(6);$K.4L(6)});k b},1b:7(d,h){p i=6[0];l(d){p c=8.17(i.P,\'r\').q.1b;p f=8.r.2D(i);2f(d){1a"20":$.M(f,8.r.1X(h));c[i.u]=f;3d;1a"6c":l(!h){R c[i.u];k f}p j={};$.O(h.1H(/\\s/),7(a,b){j[b]=f[b];R f[b]});k j}}p g=8.r.4m(8.M({},8.r.4h(i),8.r.4g(i),8.r.4d(i),8.r.2D(i)),i);l(g.14){p e=g.14;R g.14;g=$.M({14:e},g)}k g},13:7(t){k 6.5M(6.20(t).5I())}});8.M(8.5D[":"],{5A:7(a){k!8.2j(a.J)},5q:7(a){k!!8.2j(a.J)},5o:7(a){k!a.3X}});8.Q=7(c,b){l(I.F==1)k 7(){p a=8.45(I);a.5e(c);k 8.Q.U(6,a)};l(I.F>2&&b.2e!=4n){b=8.45(I).52(1)}l(b.2e!=4n){b=[b]}8.O(b,7(i,n){c=c.4y(28 3J("\\\\{"+i+"\\\\}","g"),n)});k c};8.r=7(b,a){6.q=8.M({},8.r.2N,b);6.16=a;6.3I()};8.M(8.r,{2N:{1c:{},27:{},1b:{},19:"3E",2L:"4M",2c:v,3y:8([]),2K:8([]),3z:v,3w:[],4K:7(a){6.3t=a;l(6.q.4I&&!6.4H){6.q.1D&&6.q.1D.15(6,a,6.q.19);6.1J(a).2F()}},4F:7(a){l(!6.1w(a)&&(a.u 12 6.1o||!6.H(a))){6.K(a)}},4D:7(a){l(a.u 12 6.1o||a==6.3h){6.K(a)}},4A:7(a){l(a.u 12 6.1o)6.K(a)},2y:7(a,b){8(a).2s(b)},1D:7(a,b){8(a).3f(b)}},6l:7(a){8.M(8.r.2N,a)},1c:{14:"6j 4v 2R 14.",1V:"E 3b 6 4v.",1U:"E G a N 1U 6a.",1T:"E G a N 65.",1x:"E G a N 1x.",29:"E G a N 1x (62).",2h:"4k 4i 4f 37 5W�5U 5S 37.",1G:"E G a N 1G.",2p:"4k 4i 4f 5R 5O 37.",1K:"E G 5L 1K",2n:"E G a N 5H 5F.",44:"E G 43 5z J 5x.",41:"E G a J 5u a N 5s.",W:8.Q("E G 2V 3Y 1v {0} 1u."),2d:8.Q("E G 2V 3Y 1v {0} 1u."),1f:8.Q("E G 3V 42 {0} 1u."),30:8.Q("E G 3V 42 {0} 1u."),1s:8.Q("E G a J 2b {0} 2a {1} 1u 3O."),34:8.Q("E G a J 2b {0} 2a {1} 1u 3O."),2U:8.Q("E G a J 2b {0} 2a {1}."),1z:8.Q("E G a J 2b {0} 2a {1}."),2T:8.Q("E G a J 3N 1v 2q 2i 26 {0}."),1h:8.Q("E G a J 3N 1v 2q 2i 26 {0}."),39:8.Q("E G a J 4p 1v 2q 2i 26 {0}."),1g:8.Q("E G a J 4p 1v 2q 2i 26 {0}.")},3L:L,4Z:{3I:7(){6.2v=8(6.q.2K);6.3K=6.2v.F&&6.2v||8(6.16);6.2w=8(6.q.3y).20(6.q.2K);6.1o={};6.4S={};6.1m=0;6.1d={};6.1t={};6.1I();p f=(6.27={});8.O(6.q.27,7(d,c){8.O(c.1H(/\\s/),7(a,b){f[b]=d})});p e=6.q.1b;8.O(e,7(b,a){e[b]=8.r.1X(a)});7 1r(a){p b=8.17(6[0].P,"r");b.q["3H"+a.1q]&&b.q["3H"+a.1q].15(b,6[0])}8(6.16).1r("3G 3F 4Q",":2M, :4O, :4N, 1C, 3D",1r).1r("3i",":3C, :3B",1r)},P:7(){6.3A();8.M(6.1o,6.1p);6.1t=8.M({},6.1p);l(!6.N())8(6.16).3x("1t-P.1A",[6]);6.1l();k 6.N()},3A:7(){6.2J();S(p i=0,Y=6.Y();Y[i];i++){6.23(Y[i])}k 6.N()},K:7(a){a=6.2I(a);6.3h=a;6.2H(a);p b=6.23(a);l(b){R 6.1t[a.u]}1k{6.1t[a.u]=v}l(!6.3s()){6.18.13(6.2w)}6.1l();k b},1l:7(b){l(b){8.M(6.1p,b);6.T=[];S(p c 12 b){6.T.13({1e:b[c],K:6.22(c)[0]})}6.1j=8.3r(6.1j,7(a){k!(a.u 12 b)})}6.q.1l?6.q.1l.15(6,6.1p,6.T):6.3p()},2G:7(){l(8.2O.2G)8(6.16).2G();6.2J();6.3g();6.Y().3f(6.q.19)},3s:7(){k 6.2l(6.1t)},2l:7(a){p b=0;S(p i 12 a)b++;k b},3g:7(){6.2E(6.18).2F()},N:7(){k 6.3o()==0},3o:7(){k 6.T.F},2c:7(){l(6.q.2c){3n{8(6.3S()||6.T.F&&6.T[0].K||[]).1L(":4E").3l()}3k(e){}}},3S:7(){p a=6.3t;k a&&8.3r(6.T,7(n){k n.K.u==a.u}).F==1&&a},Y:7(){p a=6,2C={};k 8([]).20(6.16.Y).1L("2B, 1C, 3D").1N(":21, :1I, [4C]").1N(6.q.3w).1L(7(){!6.u&&a.q.2k&&32.1n&&1n.3E("%o 4B 2V u 4z",6);l(6.u 12 2C||!a.2l($(6).1b()))k L;2C[6.u]=v;k v})},2I:7(a){k 8(a)[0]},2z:7(){k 8(6.q.2L+"."+6.q.19,6.3K)},1I:7(){6.1j=[];6.T=[];6.1p={};6.1O=8([]);6.18=8([]);6.1P=L},2J:7(){6.1I();6.18=6.2z().13(6.2w)},2H:7(a){6.1I();6.18=6.1J(a)},23:7(d){d=6.2I(d);l(6.1w(d)){d=6.22(d.u)[0]}p a=$(d).1b();p c=L;S(11 12 a){p b={11:11,2x:a[11]};3n{p f=8.r.X[11].15(6,8.2j(d.J),d,b.2x);l(f=="1Z-1Y"){c=v;6k}c=L;l(f=="1d"){6.18=6.18.1N(6.1J(d));k}l(!f){6.4x(d,b);k L}}3k(e){6.q.2k&&32.1n&&1n.6i("6h 6g 6f 6e K "+d.4u+", 23 43 \'"+b.11+"\' 11");6d e;}}l(c)k;l(6.2l(a))6.1j.13(d);k v},4t:7(a,b){p m=6.q.1c[a];k m&&(m.2e==4s?m:m[b])},4r:7(){S(p i=0;i<I.F;i++){l(I[i]!==1S)k I[i]}k 1S},2u:7(a,b){k 6.4r(6.4t(a.u,b),a.6b||1S,8.r.1c[b],"<4q>68: 67 1e 66 S "+a.u+"</4q>")},4x:7(b,a){p c=6.2u(b,a.11);l(1i c=="7")c=c.15(6,a.2x,b);6.T.13({1e:c,K:b});6.1p[b.u]=c;6.1o[b.u]=c},2E:7(a){l(6.q.2t)a.13(a.63(6.q.2t));k a},3p:7(){S(p i=0;6.T[i];i++){p a=6.T[i];6.q.2y&&6.q.2y.15(6,a.K,6.q.19);6.3a(a.K,a.1e)}l(6.T.F){6.1O.13(6.2w)}l(6.q.1B){S(p i=0;6.1j[i];i++){6.3a(6.1j[i])}}l(6.q.1D){S(p i=0,Y=6.4o();Y[i];i++){6.q.1D.15(6,Y[i],6.q.19)}}6.18=6.18.1N(6.1O);6.3g();6.2E(6.1O).3v()},4o:7(){k 6.Y().1N(6.3m())},3m:7(){k 8(6.T).4l(7(){k 6.K})},3a:7(a,c){p b=6.1J(a);l(b.F){b.3f().2s(6.q.19);b.1E("3j")&&b.4j(c)}1k{b=8("<"+6.q.2L+"/>").1E({"S":6.38(a),3j:v}).2s(6.q.19).4j(c||"");l(6.q.2t){b=b.2F().3v().60("<"+6.q.2t+">").5Z()}l(!6.2v.5Y(b).F)6.q.3q?6.q.3q(b,8(a)):b.5X(a)}l(!c&&6.q.1B){b.2M("");1i 6.q.1B=="1F"?b.2s(6.q.1B):6.q.1B(b)}6.1O.13(b)},1J:7(a){k 6.2z().1L("[@S=\'"+6.38(a)+"\']")},38:7(a){k 6.27[a.u]||(6.1w(a)?a.u:a.4u||a.u)},1w:7(a){k/3C|3B/i.Z(a.1q)},22:7(d){p c=6.16;k 8(5V.5T(d)).4l(7(a,b){k b.P==c&&b.u==d&&b||4c})},1R:7(a,b){2f(b.4b.4a()){1a\'1C\':k 8("3M:2A",b).F;1a\'2B\':l(6.1w(b))k 6.22(b.u).1L(\':3X\').F}k a.F},49:7(b,a){k 6.36[1i b]?6.36[1i b](b,a):v},36:{"5Q":7(b,a){k b},"1F":7(b,a){k!!8(b,a.P).F},"7":7(b,a){k b(a)}},H:7(a){k!8.r.X.14.15(6,8.2j(a.J),a)&&"1Z-1Y"},48:7(a){l(!6.1d[a.u]){6.1m++;6.1d[a.u]=v}},47:7(a,b){6.1m--;l(6.1m<0)6.1m=0;R 6.1d[a.u];l(b&&6.1m==0&&6.1P&&6.P()){8(6.16).21()}},2o:7(a){k 8.17(a,"2o")||8.17(a,"2o",5N={35:4c,N:v,1e:6.2u(a,"1V")})}},1Q:{14:{14:v},1U:{1U:v},1T:{1T:v},1x:{1x:v},29:{29:v},2h:{2h:v},1G:{1G:v},2p:{2p:v},1K:{1K:v},2n:{2n:v}},46:7(a,b){a.2e==4s?6.1Q[a]=b:8.M(6.1Q,a)},4g:7(b){p a={};p c=8(b).1E(\'5K\');c&&8.O(c.1H(\' \'),7(){l(6 12 8.r.1Q){8.M(a,8.r.1Q[6])}});k a},4d:7(c){p a={};p d=8(c);S(11 12 8.r.X){p b=d.1E(11);l(b!==1S&&b!==\'\'){a[11]=b}}l(a.W&&/-1|5J|5G/.Z(a.W)){R a.W;R a.2d}k a},4h:7(a){l(!8.33)k{};p b=8.17(a.P,\'r\').q.5E;k b?8(a).33()[b]:8(a).33()},2D:7(b){p a={};p c=8.17(b.P,\'r\');l(c.q.1b){a=8.r.1X(c.q.1b[b.u])||{}}k a},4m:7(d,e){8.O({30:\'1f\',2d:\'W\',34:\'1s\',39:\'1g\',2T:\'1h\',2U:\'1z\'},7(a,b){l(d[a]){d[b]=d[a];R d[a]}});$.O(d,7(c,b){l(b===L){R d[c];k}l(b.2Q||b.2m){p a=v;2f(1i b.2m){1a"1F":a=!!8(b.2m,e.P).F;3d;1a"7":a=b.2m.15(e,e);3d}l(a){d[c]=b.2Q!==1S?b.2Q:v}1k{R d[c]}}});8.O(d,7(a,b){d[a]=8.5C(b)?b(e):b});8.O([\'1f\',\'W\',\'1g\',\'1h\'],7(){l(d[6]){d[6]=31(d[6])}});8.O([\'1s\',\'1z\'],7(){l(d[6]){d[6]=[31(d[6][0]),31(d[6][1])]}});l(8.r.3L){l(d.1g&&d.1h){d.1z=[d.1g,d.1h];R d.1g;R d.1h}l(d.1f&&d.W){d.1s=[d.1f,d.W];R d.1f;R d.W}}k d},1X:7(a){l(1i a=="1F"){p b={};8.O(a.1H(/\\s/),7(){b[6]=v});a=b}k a},5B:7(c,a,b){8.r.X[c]=a;8.r.1c[c]=b;l(a.F<3){8.r.46(c,8.r.1X(c))}},X:{14:7(b,c,a){l(!6.49(a,c))k"1Z-1Y";2f(c.4b.4a()){1a\'1C\':p d=8("3M:2A",c);k d.F>0&&(c.1q=="1C-5y"||(8.2Z.2S&&!(d[0].5w[\'J\'].5v)?d[0].2M:d[0].J).F>0);1a\'2B\':l(6.1w(c))k 6.1R(b,c)>0;5t:k b.F>0}},1V:7(e,h,d){l(6.H(h))k"1Z-1Y";p g=6.2o(h);l(!6.q.1c[h.u])6.q.1c[h.u]={};6.q.1c[h.u].1V=1i g.1e=="7"?g.1e(e):g.1e;l(g.35!==e){g.35=e;p i=6;6.48(h);p f={};f[h.u]=e;8.2X({1T:d,40:"2W",3Z:"1A"+h.u,5r:"5p",17:f,1B:7(a){l(!a){p c={};c[h.u]=a||i.2u(h,"1V");i.1l(c)}1k{p b=i.1P;i.2H(h);i.1P=b;i.1j.13(h);i.1l()}g.N=a;i.47(h,a)}});k"1d"}1k l(6.1d[h.u]){k"1d"}k g.N},1f:7(b,c,a){k 6.H(c)||6.1R(b,c)>=a},30:7(b,c,a){k 8.r.X.1f.U(6,I)},W:7(b,c,a){k 6.H(c)||6.1R(b,c)<=a},2d:7(b,c,a){k 8.r.X.W.U(6,I)},1s:7(b,d,a){p c=6.1R(b,d);k 6.H(d)||(c>=a[0]&&c<=a[1])},34:7(b,c,a){k 8.r.X.1s.U(6,I)},1g:7(b,c,a){k 6.H(c)||b>=a},39:7(){k 8.r.X.1g.U(6,I)},1h:7(b,c,a){k 6.H(c)||b<=a},2T:7(){k 8.r.X.1h.U(6,I)},1z:7(b,c,a){k 6.H(c)||(b>=a[0]&&b<=a[1])},2U:7(){k 8.r.X.1z.U(6,I)},1U:7(a,b){k 6.H(b)||/^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^V`{\\|}~]|[\\B-\\x\\A-\\C\\w-\\y])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^V`{\\|}~]|[\\B-\\x\\A-\\C\\w-\\y])+)*)|((\\3W)((((\\2g|\\1M)*(\\2Y\\3U))?(\\2g|\\1M)+)?(([\\3T-\\5n\\3R\\3Q\\5m-\\5l\\3P]|\\5k|[\\5j-\\5i]|[\\5h-\\5g]|[\\B-\\x\\A-\\C\\w-\\y])|(\\\\([\\3T-\\1M\\3R\\3Q\\2Y-\\3P]|[\\B-\\x\\A-\\C\\w-\\y]))))*(((\\2g|\\1M)*(\\2Y\\3U))?(\\2g|\\1M)+)?(\\3W)))@((([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])|(([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])*([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])))\\.)+(([a-z]|[\\B-\\x\\A-\\C\\w-\\y])|(([a-z]|[\\B-\\x\\A-\\C\\w-\\y])([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])*([a-z]|[\\B-\\x\\A-\\C\\w-\\y])))\\.?$/i.Z(b.J)},1T:7(a,b){k 6.H(b)||/^(5f?|5P):\\/\\/(((([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])|(%[\\1W-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])|(([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])*([a-z]|\\d|[\\B-\\x\\A-\\C\\w-\\y])))\\.)+(([a-z]|[\\B-\\x\\A-\\C\\w-\\y])|(([a-z]|[\\B-\\x\\A-\\C\\w-\\y])([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])*([a-z]|[\\B-\\x\\A-\\C\\w-\\y])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])|(%[\\1W-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])|(%[\\1W-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])|(%[\\1W-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|[\\5d-\\5c]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|V|~|[\\B-\\x\\A-\\C\\w-\\y])|(%[\\1W-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.Z(b.J)},1x:7(a,b){k 6.H(b)||!/5b|5a/.Z(28 59(a))},29:7(a,b){k 6.H(b)||/^\\d{4}[\\/-]\\d{1,2}[\\/-]\\d{1,2}$/.Z(a)},2h:7(a,b){k 6.H(b)||/^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.Z(a)},1G:7(a,b){k 6.H(b)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)(?:\\.\\d+)?$/.Z(a)},2p:7(a,b){k 6.H(b)||/^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.Z(a)},1K:7(a,b){k 6.H(b)||/^\\d+$/.Z(a)},2n:7(b,e){l(6.H(e))k"1Z-1Y";l(/[^0-9-]+/.Z(b))k L;p a=0,d=0,24=L;b=b.4y(/\\D/g,"");S(n=b.F-1;n>=0;n--){p c=b.58(n);p d=57(c,10);l(24){l((d*=2)>9)d-=9}a+=d;24=!24}k(a%10)==0},41:7(b,c,a){a=1i a=="1F"?a:"56|55?g|54";k 6.H(c)||b.53(28 3J(".("+a+")$","i"))},44:7(b,c,a){k b==8(a).69()}}});(7($){p c=$.2X;p d={};$.2X=7(a){a=8.M(a,8.M({},8.51,a));p b=a.3Z;l(a.40=="2W"){l(d[b]){d[b].2W()}k(d[b]=c.U(6,I))}k c.U(6,I)}})(8);(7($){$.O({3l:\'3G\',50:\'3F\'},7(b,a){$.1y.2P[a]={4Y:7(){l($.2Z.2S)k L;6.4X(b,$.1y.2P[a].3c,v)},4W:7(){l($.2Z.2S)k L;6.4V(b,$.1y.2P[a].3c,v)},3c:7(e){I[0]=$.1y.3b(e);I[0].1q=a;k $.1y.2r.U(6,I)}}});$.M($.2O,{1r:7(d,e,c){k 6.4U(d,7(a){p b=$(a.4w);l(b.2R(e)){k c.U(b,I)}})},4T:7(a,b){k 6.3x(a,[8.1y.3b({1q:a,4w:b})])}})})(8);',62,395,'||||||this|function|jQuery||||||||||||return|if||||var|settings|validator|||name|true|uFDF0|uD7FF|uFFEF||uF900|u00A0|uFDCF||Please|length|enter|optional|arguments|value|element|false|extend|valid|each|form|format|delete|for|errorList|apply|_|maxlength|methods|elements|test||method|in|push|required|call|currentForm|data|toHide|errorClass|case|rules|messages|pending|message|minlength|min|max|typeof|successList|else|showErrors|pendingRequest|console|submitted|errorMap|type|delegate|rangelength|invalid|characters|than|checkable|date|event|range|validate|success|select|unhighlight|attr|string|number|split|reset|errorsFor|digits|filter|x09|not|toShow|formSubmitted|classRuleSettings|getLength|undefined|url|email|remote|da|normalizeRule|mismatch|dependency|add|submit|findByName|check|bEven||to|groups|new|dateISO|and|between|focusInvalid|maxLength|constructor|switch|x20|dateDE|equal|trim|debug|objectLength|depends|creditcard|previousValue|numberDE|or|handle|addClass|wrapper|defaultMessage|labelContainer|containers|parameters|highlight|errors|selected|input|rulesCache|staticRules|addWrapper|hide|resetForm|prepareElement|clean|prepareForm|errorLabelContainer|errorElement|text|defaults|fn|special|param|is|msie|maxValue|rangeValue|no|abort|ajax|x0d|browser|minLength|Number|window|metadata|rangeLength|old|dependTypes|ein|idOrName|minValue|showLabel|fix|handler|break|cancelSubmit|removeClass|hideErrors|lastElement|click|generated|catch|focus|invalidElements|try|size|defaultShowErrors|errorPlacement|grep|numberOfInvalids|lastActive|nothing|show|ignore|triggerHandler|errorContainer|onsubmit|checkForm|checkbox|radio|textarea|error|focusout|focusin|on|init|RegExp|errorContext|autoCreateRanges|option|less|long|x7f|x0c|x0b|findLastActive|x01|x0a|at|x22|checked|more|port|mode|accept|least|the|equalTo|makeArray|addClassRules|stopRequest|startRequest|depend|toLowerCase|nodeName|null|attributeRules|submitHandler|Sie|classRules|metadataRules|geben|html|Bitte|map|normalizeRules|Array|validElements|greater|strong|findDefined|String|customMessage|id|field|target|formatAndAdd|replace|assigned|onclick|has|disabled|onkeyup|visible|onfocusout|cancel|blockFocusCleanup|focusCleanup|find|onfocusin|removeAttr|label|file|password|warn|keyup|removeAttrs|valueCache|triggerEvent|bind|removeEventListener|teardown|addEventListener|setup|prototype|blur|ajaxSettings|slice|match|gif|jpe|png|parseInt|charAt|Date|NaN|Invalid|uF8FF|uE000|unshift|https|x7e|x5d|x5b|x23|x21|x1f|x0e|x08|unchecked|json|filled|dataType|extension|default|with|specified|attributes|again|multiple|same|blank|addMethod|isFunction|expr|meta|card|524288|credit|get|2147483647|class|only|setArray|previous|Nummer|ftp|boolean|eine|Datum|getElementsByName|ltiges|document|g�|insertAfter|append|parent|wrap|returning|ISO|parents|preventDefault|URL|defined|No|Warning|val|address|title|remove|throw|checking|when|occured|exception|log|This|continue|setDefaults|can'.split('|'),0,{}))
jQuery.validator.addMethod("maxWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length < params; 
}, "Please enter {0} words or less."); 
 
jQuery.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params; 
}, "Please enter at least {0} words."); 
 
jQuery.validator.addMethod("rangeWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1]; 
}, "Please enter between {0} and {1} words.");


jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 

jQuery.validator.addMethod("letternumberunderscore", function(value, element) {
	return this.optional(element) || /^[a-z0-9_]+$/i.test(value);
}, "Letters numbers and uderscores"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "No white space please"); 

jQuery.validator.addMethod("ziprange", function(value, element) {
	return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");

/**
* Return true, if the value is a valid vehicle identification number (VIN).
*
* Works with all kind of text inputs.
*
* @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
* @desc Declares a required input element whose value must be a valid vehicle identification number.
*
* @name jQuery.validator.methods.vinUS
* @type Boolean
* @cat Plugins/Validate/Methods
*/ 
jQuery.validator.addMethod(
	"vinUS",
	function(v){
		if (v.length != 17)
			return false;
		var i, n, d, f, cd, cdv;
		var LL    = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
		var VL    = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
		var FL    = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
		var rs    = 0;
		for(i = 0; i < 17; i++){
		    f = FL[i];
		    d = v.slice(i,i+1);
		    if(i == 8){
		        cdv = d;
		    }
		    if(!isNaN(d)){
		        d *= f;
		    }
		    else{
		        for(n = 0; n < LL.length; n++){
		            if(d.toUpperCase() === LL[n]){
		                d = VL[n];
		                d *= f;
		                if(isNaN(cdv) && n == 8){
		                    cdv = LL[n];
		                }
		                break;
		            }
		        }
		    }
		    rs += d;
		}
		cd = rs % 11;
		if(cd == 10){cd = "X";}
		if(cd == cdv){return true;}
		return false; 
	},
	"The specified vehicle identification number (VIN) is invalid."
);

/**
  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
  *
  * @example jQuery.validator.methods.date("01/01/1900")
  * @result true
  *
  * @example jQuery.validator.methods.date("01/13/1990")
  * @result false
  *
  * @example jQuery.validator.methods.date("01.01.1900")
  * @result false
  *
  * @example <input name="pippo" class="{dateITA:true}" />
  * @desc Declares an optional input element whose value must be a valid date.
  *
  * @name jQuery.validator.methods.dateITA
  * @type Boolean
  * @cat Plugins/Validate/Methods
  */
jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
		if( re.test(value)){
			var adata = value.split('/');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Please enter a correct date"
);

/**
 * matches US phone number format 
 * 
 * where the area code may not start with 1 and the prefix may not start with 1 
 * allows '-' or ' ' as a separator and allows parens around area code 
 * some people may want to put a '1' in front of their number 
 * 
 * 1(212)-999-2345
 * or
 * 212 999 2344
 * or
 * 212-999-0983
 * 
 * but not
 * 111-123-5434
 * and not
 * 212 123 4567
 */
jQuery.validator.addMethod("phone", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
	return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

// TODO check if value starts with <, otherwise don't try stripping anything
jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
	return jQuery(value).text().length >= param;
}, jQuery.format("Please enter at least {0} characters"));

// same as email, but TLD is optional
jQuery.validator.addMethod("email2", function(value, element, param) {
	return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); 
}, jQuery.validator.messages.email);

// same as url, but TLD is optional
jQuery.validator.addMethod("url2", function(value, element, param) {
	return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); 
}, jQuery.validator.messages.url);
	/*
	 * jQuery Form Plugin
	 * version: 2.12 (06/07/2008)
	 * @requires jQuery v1.2.2 or later
	 *
	 * Examples and documentation at: http://malsup.com/jquery/form/
	 * Dual licensed under the MIT and GPL licenses:
	 *   http://www.opensource.org/licenses/mit-license.php
	 *   http://www.gnu.org/licenses/gpl.html
	 *
	 * Revision: $Id$
	 */
	(function($) {

	/*
	    Usage Note:  
	    -----------
	    Do not use both ajaxSubmit and ajaxForm on the same form.  These
	    functions are intended to be exclusive.  Use ajaxSubmit if you want
	    to bind your own submit handler to the form.  For example,

	    $(document).ready(function() {
	        $('#myForm').bind('submit', function() {
	            $(this).ajaxSubmit({
	                target: '#output'
	            });
	            return false; // <-- important!
	        });
	    });

	    Use ajaxForm when you want the plugin to manage all the event binding
	    for you.  For example,

	    $(document).ready(function() {
	        $('#myForm').ajaxForm({
	            target: '#output'
	        });
	    });
	        
	    When using ajaxForm, the ajaxSubmit function will be invoked for you
	    at the appropriate time.  
	*/

	/**
	 * ajaxSubmit() provides a mechanism for immediately submitting 
	 * an HTML form using AJAX.
	 */
	$.fn.ajaxSubmit = function(options) {
	    // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
	    if (!this.length) {
	        log('ajaxSubmit: skipping submit process - no element selected');
	        return this;
	    }

	    if (typeof options == 'function')
	        options = { success: options };

	    options = $.extend({
	        url:  this.attr('action') || window.location.toString(),
	        type: this.attr('method') || 'GET'
	    }, options || {});

	    // hook for manipulating the form data before it is extracted;
	    // convenient for use with rich editors like tinyMCE or FCKEditor
	    var veto = {};
	    this.trigger('form-pre-serialize', [this, options, veto]);
	    if (veto.veto) {
	        log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
	        return this;
	   }

	    var a = this.formToArray(options.semantic);
	    if (options.data) {
	        options.extraData = options.data;
	        for (var n in options.data)
	            a.push( { name: n, value: options.data[n] } );
	    }

	    // give pre-submit callback an opportunity to abort the submit
	    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
	        log('ajaxSubmit: submit aborted via beforeSubmit callback');
	        return this;
	    }    

	    // fire vetoable 'validate' event
	    this.trigger('form-submit-validate', [a, this, options, veto]);
	    if (veto.veto) {
	        log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
	        return this;
	    }    

	    var q = $.param(a);

	    if (options.type.toUpperCase() == 'GET') {
	        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
	        options.data = null;  // data is null for 'get'
	    }
	    else
	        options.data = q; // data is the query string for 'post'

	    var $form = this, callbacks = [];
	    if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
	    if (options.clearForm) callbacks.push(function() { $form.clearForm(); });

	    // perform a load on the target only if dataType is not provided
	    if (!options.dataType && options.target) {
	        var oldSuccess = options.success || function(){};
	        callbacks.push(function(data) {
	            $(options.target).html(data).each(oldSuccess, arguments);
	        });
	    }
	    else if (options.success)
	        callbacks.push(options.success);

	    options.success = function(data, status) {
	        for (var i=0, max=callbacks.length; i < max; i++)
	            callbacks[i](data, status, $form);
	    };

	    // are there files to upload?
	    var files = $('input:file', this).fieldValue();
	    var found = false;
	    for (var j=0; j < files.length; j++)
	        if (files[j])
	            found = true;

	    // options.iframe allows user to force iframe mode
	   if (options.iframe || found) { 
	       // hack to fix Safari hang (thanks to Tim Molendijk for this)
	       // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
	       if ($.browser.safari && options.closeKeepAlive)
	           $.get(options.closeKeepAlive, fileUpload);
	       else
	           fileUpload();
	       }
	   else
	       $.ajax(options);

	    // fire 'notify' event
	    this.trigger('form-submit-notify', [this, options]);
	    return this;


	    // private function for handling file uploads (hat tip to YAHOO!)
	    function fileUpload() {
	        var form = $form[0];
	        
	        if ($(':input[@name=submit]', form).length) {
	            alert('Error: Form elements must not be named "submit".');
	            return;
	        }
	        
	        var opts = $.extend({}, $.ajaxSettings, options);

	        var id = 'jqFormIO' + (new Date().getTime());
	        var $io = $('<iframe id="' + id + '" name="' + id + '" />');
	        var io = $io[0];

	        if ($.browser.msie || $.browser.opera) 
	            io.src = 'javascript:false;document.write("");';
	        $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });

	        var xhr = { // mock object
	            responseText: null,
	            responseXML: null,
	            status: 0,
	            statusText: 'n/a',
	            getAllResponseHeaders: function() {},
	            getResponseHeader: function() {},
	            setRequestHeader: function() {}
	        };

	        var g = opts.global;
	        // trigger ajax global events so that activity/block indicators work like normal
	        if (g && ! $.active++) $.event.trigger("ajaxStart");
	        if (g) $.event.trigger("ajaxSend", [xhr, opts]);

	        var cbInvoked = 0;
	        var timedOut = 0;

	        // add submitting element to data if we know it
	        var sub = form.clk;
	        if (sub) {
	            var n = sub.name;
	            if (n && !sub.disabled) {
	                options.extraData = options.extraData || {};
	                options.extraData[n] = sub.value;
	                if (sub.type == "image") {
	                    options.extraData[name+'.x'] = form.clk_x;
	                    options.extraData[name+'.y'] = form.clk_y;
	                }
	            }
	        }
	        
	        // take a breath so that pending repaints get some cpu time before the upload starts
	        setTimeout(function() {
	            // make sure form attrs are set
	            var t = $form.attr('target'), a = $form.attr('action');
	            $form.attr({
	                target:   id,
	                encoding: 'multipart/form-data',
	                enctype:  'multipart/form-data',
	                method:   'POST',
	                action:   opts.url
	            });

	            // support timout
	            if (opts.timeout)
	                setTimeout(function() { timedOut = true; cb(); }, opts.timeout);

	            // add "extra" data to form if provided in options
	            var extraInputs = [];
	            try {
	                if (options.extraData)
	                    for (var n in options.extraData)
	                        extraInputs.push(
	                            $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
	                                .appendTo(form)[0]);
	            
	                // add iframe to doc and submit the form
	                $io.appendTo('body');
	                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
	                form.submit();
	            }
	            finally {
	                // reset attrs and remove "extra" input elements
	                $form.attr('action', a);
	                t ? $form.attr('target', t) : $form.removeAttr('target');
	                $(extraInputs).remove();
	            }
	        }, 10);

	        function cb() {
	            if (cbInvoked++) return;
	            
	            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);

	            var operaHack = 0;
	            var ok = true;
	            try {
	                if (timedOut) throw 'timeout';
	                // extract the server response from the iframe
	                var data, doc;

	                doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
	                
	                if (doc.body == null && !operaHack && $.browser.opera) {
	                    // In Opera 9.2.x the iframe DOM is not always traversable when
	                    // the onload callback fires so we give Opera 100ms to right itself
	                    operaHack = 1;
	                    cbInvoked--;
	                    setTimeout(cb, 100);
	                    return;
	                }
	                
	                xhr.responseText = doc.body ? doc.body.innerHTML : null;
	                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
	                xhr.getResponseHeader = function(header){
	                    var headers = {'content-type': opts.dataType};
	                    return headers[header];
	                };

	                if (opts.dataType == 'json' || opts.dataType == 'script') {
	                    var ta = doc.getElementsByTagName('textarea')[0];
	                    xhr.responseText = ta ? ta.value : xhr.responseText;
	                }
	                else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
	                    xhr.responseXML = toXml(xhr.responseText);
	                }
	                data = $.httpData(xhr, opts.dataType);
	            }
	            catch(e){
	                ok = false;
	                $.handleError(opts, xhr, 'error', e);
	            }

	            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
	            if (ok) {
	                opts.success(data, 'success');
	                if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
	            }
	            if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
	            if (g && ! --$.active) $.event.trigger("ajaxStop");
	            if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');

	            // clean up
	            setTimeout(function() {
	                $io.remove();
	                xhr.responseXML = null;
	            }, 100);
	        };

	        function toXml(s, doc) {
	            if (window.ActiveXObject) {
	                doc = new ActiveXObject('Microsoft.XMLDOM');
	                doc.async = 'false';
	                doc.loadXML(s);
	            }
	            else
	                doc = (new DOMParser()).parseFromString(s, 'text/xml');
	            return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
	        };
	    };
	};

	/**
	 * ajaxForm() provides a mechanism for fully automating form submission.
	 *
	 * The advantages of using this method instead of ajaxSubmit() are:
	 *
	 * 1: This method will include coordinates for <input type="image" /> elements (if the element
	 *    is used to submit the form).
	 * 2. This method will include the submit element's name/value data (for the element that was
	 *    used to submit the form).
	 * 3. This method binds the submit() method to the form for you.
	 *
	 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
	 * passes the options argument along after properly binding events for submit elements and
	 * the form itself.
	 */ 
	$.fn.ajaxForm = function(options) {
	    return this.ajaxFormUnbind().bind('submit.form-plugin',function() {
	        $(this).ajaxSubmit(options);
	        return false;
	    }).each(function() {
	        // store options in hash
	        $(":submit,input:image", this).bind('click.form-plugin',function(e) {
	            var $form = this.form;
	            $form.clk = this;
	            if (this.type == 'image') {
	                if (e.offsetX != undefined) {
	                    $form.clk_x = e.offsetX;
	                    $form.clk_y = e.offsetY;
	                } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
	                    var offset = $(this).offset();
	                    $form.clk_x = e.pageX - offset.left;
	                    $form.clk_y = e.pageY - offset.top;
	                } else {
	                    $form.clk_x = e.pageX - this.offsetLeft;
	                    $form.clk_y = e.pageY - this.offsetTop;
	                }
	            }
	            // clear form vars
	            setTimeout(function() { $form.clk = $form.clk_x = $form.clk_y = null; }, 10);
	        });
	    });
	};

	// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
	$.fn.ajaxFormUnbind = function() {
	    this.unbind('submit.form-plugin');
	    return this.each(function() {
	        $(":submit,input:image", this).unbind('click.form-plugin');
	    });

	};

	/**
	 * formToArray() gathers form element data into an array of objects that can
	 * be passed to any of the following ajax functions: $.get, $.post, or load.
	 * Each object in the array has both a 'name' and 'value' property.  An example of
	 * an array for a simple login form might be:
	 *
	 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
	 *
	 * It is this array that is passed to pre-submit callback functions provided to the
	 * ajaxSubmit() and ajaxForm() methods.
	 */
	$.fn.formToArray = function(semantic) {
	    var a = [];
	    if (this.length == 0) return a;

	    var form = this[0];
	    var els = semantic ? form.getElementsByTagName('*') : form.elements;
	    if (!els) return a;
	    for(var i=0, max=els.length; i < max; i++) {
	        var el = els[i];
	        var n = el.name;
	        if (!n) continue;

	        if (semantic && form.clk && el.type == "image") {
	            // handle image inputs on the fly when semantic == true
	            if(!el.disabled && form.clk == el)
	                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
	            continue;
	        }

	        var v = $.fieldValue(el, true);
	        if (v && v.constructor == Array) {
	            for(var j=0, jmax=v.length; j < jmax; j++)
	                a.push({name: n, value: v[j]});
	        }
	        else if (v !== null && typeof v != 'undefined')
	            a.push({name: n, value: v});
	    }

	    if (!semantic && form.clk) {
	        // input type=='image' are not found in elements array! handle them here
	        var inputs = form.getElementsByTagName("input");
	        for(var i=0, max=inputs.length; i < max; i++) {
	            var input = inputs[i];
	            var n = input.name;
	            if(n && !input.disabled && input.type == "image" && form.clk == input)
	                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
	        }
	    }
	    return a;
	};

	/**
	 * Serializes form data into a 'submittable' string. This method will return a string
	 * in the format: name1=value1&amp;name2=value2
	 */
	$.fn.formSerialize = function(semantic) {
	    //hand off to jQuery.param for proper encoding
	    return $.param(this.formToArray(semantic));
	};

	/**
	 * Serializes all field elements in the jQuery object into a query string.
	 * This method will return a string in the format: name1=value1&amp;name2=value2
	 */
	$.fn.fieldSerialize = function(successful) {
	    var a = [];
	    this.each(function() {
	        var n = this.name;
	        if (!n) return;
	        var v = $.fieldValue(this, successful);
	        if (v && v.constructor == Array) {
	            for (var i=0,max=v.length; i < max; i++)
	                a.push({name: n, value: v[i]});
	        }
	        else if (v !== null && typeof v != 'undefined')
	            a.push({name: this.name, value: v});
	    });
	    //hand off to jQuery.param for proper encoding
	    return $.param(a);
	};

	/**
	 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
	 *
	 *  <form><fieldset>
	 *      <input name="A" type="text" />
	 *      <input name="A" type="text" />
	 *      <input name="B" type="checkbox" value="B1" />
	 *      <input name="B" type="checkbox" value="B2"/>
	 *      <input name="C" type="radio" value="C1" />
	 *      <input name="C" type="radio" value="C2" />
	 *  </fieldset></form>
	 *
	 *  var v = $(':text').fieldValue();
	 *  // if no values are entered into the text inputs
	 *  v == ['','']
	 *  // if values entered into the text inputs are 'foo' and 'bar'
	 *  v == ['foo','bar']
	 *
	 *  var v = $(':checkbox').fieldValue();
	 *  // if neither checkbox is checked
	 *  v === undefined
	 *  // if both checkboxes are checked
	 *  v == ['B1', 'B2']
	 *
	 *  var v = $(':radio').fieldValue();
	 *  // if neither radio is checked
	 *  v === undefined
	 *  // if first radio is checked
	 *  v == ['C1']
	 *
	 * The successful argument controls whether or not the field element must be 'successful'
	 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
	 * The default value of the successful argument is true.  If this value is false the value(s)
	 * for each element is returned.
	 *
	 * Note: This method *always* returns an array.  If no valid value can be determined the
	 *       array will be empty, otherwise it will contain one or more values.
	 */
	$.fn.fieldValue = function(successful) {
	    for (var val=[], i=0, max=this.length; i < max; i++) {
	        var el = this[i];
	        var v = $.fieldValue(el, successful);
	        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
	            continue;
	        v.constructor == Array ? $.merge(val, v) : val.push(v);
	    }
	    return val;
	};

	/**
	 * Returns the value of the field element.
	 */
	$.fieldValue = function(el, successful) {
	    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
	    if (typeof successful == 'undefined') successful = true;

	    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
	        (t == 'checkbox' || t == 'radio') && !el.checked ||
	        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
	        tag == 'select' && el.selectedIndex == -1))
	            return null;

	    if (tag == 'select') {
	        var index = el.selectedIndex;
	        if (index < 0) return null;
	        var a = [], ops = el.options;
	        var one = (t == 'select-one');
	        var max = (one ? index+1 : ops.length);
	        for(var i=(one ? index : 0); i < max; i++) {
	            var op = ops[i];
	            if (op.selected) {
	                // extra pain for IE...
	                var v = $.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value;
	                if (one) return v;
	                a.push(v);
	            }
	        }
	        return a;
	    }
	    return el.value;
	};

	/**
	 * Clears the form data.  Takes the following actions on the form's input fields:
	 *  - input text fields will have their 'value' property set to the empty string
	 *  - select elements will have their 'selectedIndex' property set to -1
	 *  - checkbox and radio inputs will have their 'checked' property set to false
	 *  - inputs of type submit, button, reset, and hidden will *not* be effected
	 *  - button elements will *not* be effected
	 */
	$.fn.clearForm = function() {
	    return this.each(function() {
	        $('input,select,textarea', this).clearFields();
	    });
	};

	/**
	 * Clears the selected form elements.
	 */
	$.fn.clearFields = $.fn.clearInputs = function() {
	    return this.each(function() {
	        var t = this.type, tag = this.tagName.toLowerCase();
	        if (t == 'text' || t == 'password' || tag == 'textarea')
	            this.value = '';
	        else if (t == 'checkbox' || t == 'radio')
	            this.checked = false;
	        else if (tag == 'select')
	            this.selectedIndex = -1;
	    });
	};

	/**
	 * Resets the form data.  Causes all form elements to be reset to their original value.
	 */
	$.fn.resetForm = function() {
	    return this.each(function() {
	        // guard against an input with the name of 'reset'
	        // note that IE reports the reset function as an 'object'
	        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
	            this.reset();
	    });
	};

	/**
	 * Enables or disables any matching elements.
	 */
	$.fn.enable = function(b) { 
	    if (b == undefined) b = true;
	    return this.each(function() { 
	        this.disabled = !b 
	    });
	};

	/**
	 * Checks/unchecks any matching checkboxes or radio buttons and
	 * selects/deselects and matching option elements.
	 */
	$.fn.select = function(select) {
	    if (select == undefined) select = true;
	    return this.each(function() { 
	        var t = this.type;
	        if (t == 'checkbox' || t == 'radio')
	            this.checked = select;
	        else if (this.tagName.toLowerCase() == 'option') {
	            var $sel = $(this).parent('select');
	            if (select && $sel[0] && $sel[0].type == 'select-one') {
	                // deselect all other options
	                $sel.find('option').select(false);
	            }
	            this.selected = select;
	        }
	    });
	};

	// helper fn for console logging
	// set $.fn.ajaxSubmit.debug to true to enable debug logging
	function log() {
	    if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
	        window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
	};

	})(jQuery);
	/**
	 * jQuery Lightbox
	 * Version 0.5 - 11/29/2007
	 * @author Warren Krewenki
	 *
	 * Changes by:
	 * @author Krzysztof Kotowicz <koto at webworkers dot pl>:
	 *  - bugfix: multiple instances of Lightbox galleries allowed
	 *    (using opts variable instead of $.fn.lightbox.defaults)
	 *  - bugfix: use var for local variables in a few functions
	 *  - added support for navbarOnTop setting
	 *  - added support for displayTitle setting
	 *  - added support for slideNavBar setting (with slideNavBarSpeed)
	 *  - added support for displayHelp setting
	 *  - added support for fitToScreen setting (ported Lightbox VinDSL hack)
	 *    (see http://www.huddletogether.com/forum/comments.php?DiscussionID=307)
	 *  - plugin now uses jQuery.width() and jQuery.height()
	 *  - removed eval() calls
	 *  - removed destroyElement - uses jQuery.remove()
	 *  - use of prevLinkText, nextLinkText and help
	 *  - all strings are now placed in opts.strings to allow for customization/translation
	 *
	 * Based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
	 * Originally written to make use of the Prototype framework, and Script.acalo.us, now altered to use jQuery.
	 *
	 **/

	(function($){
		var opts;

		$.fn.lightbox = function(options){
			// build main options
			opts = $.extend({}, $.fn.lightbox.defaults, options);

			// initalize the lightbox
			$.fn.lightbox.initialize();
			return this.each(function(){
				$(this).click(function(){
					$(this).lightbox.start(this);
					return false;
				});
			});
		};

		// lightbox functions
		$.fn.lightbox.initialize = function(){
			$('#overlay').remove();
			$('#lightbox').remove();
			opts.inprogress = false;
			var outerImage = '<div id="outerImageContainer"><div id="imageContainer"><img id="lightboxImage"><div id="hoverNav"><a href="javascript://" title="' + opts.strings.prevLinkTitle + '" id="prevLink"></a><a href="javascript://" id="nextLink" title="' + opts.strings.nextLinkTitle + '"></a></div><div id="loading"><a href="javascript://" id="loadingLink"><img src="'+opts.fileLoadingImage+'"></a></div></div></div>';
			var imageData = '<div id="imageDataContainer" class="clearfix"><div id="imageData"><div id="imageDetails"><span id="caption"></span><span id="numberDisplay"></span></div><div id="bottomNav">'

			if (opts.displayHelp)
				imageData += '<span id="helpDisplay">' + opts.strings.help + '</span>';

			imageData += '<a href="javascript://" id="bottomNavClose" title="' + opts.strings.closeTitle + '"><img src="'+opts.fileBottomNavCloseImage+'"></a></div></div></div>';

			var string;

			if (opts.navbarOnTop) {
			  string = '<div id="overlay"></div><div id="lightbox">' + imageData + outerImage + '</div>';
			  $("body").append(string);
			  $("#imageDataContainer").addClass('ontop');
			} else {
			  string = '<div id="overlay"></div><div id="lightbox">' + outerImage + imageData + '</div>';
			  $("body").append(string);
			}

			$("#overlay").click(function(){ $.fn.lightbox.end(); }).hide();
			$("#lightbox").click(function(){ $.fn.lightbox.end();}).hide();
			$("#loadingLink").click(function(){ $.fn.lightbox.end(); return false;});
			$("#bottomNavClose").click(function(){ $.fn.lightbox.end(); return false; });
			$('#outerImageContainer').width(opts.widthCurrent).height(opts.heightCurrent);
			$('#imageDataContainer').width(opts.widthCurrent);
		};

		$.fn.lightbox.getPageSize = function(){
			var xScroll, yScroll;

			if (window.innerHeight && window.scrollMaxY) {
				xScroll = window.innerWidth + window.scrollMaxX;
				yScroll = window.innerHeight + window.scrollMaxY;
			} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
				xScroll = document.body.scrollWidth;
				yScroll = document.body.scrollHeight;
			} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
				xScroll = document.body.offsetWidth;
				yScroll = document.body.offsetHeight;
			}

			var windowWidth, windowHeight;

			if (self.innerHeight) { // all except Explorer
				if(document.documentElement.clientWidth){
					windowWidth = document.documentElement.clientWidth;
				} else {
					windowWidth = self.innerWidth;
				}
				windowHeight = self.innerHeight;
			} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
				windowWidth = document.documentElement.clientWidth;
				windowHeight = document.documentElement.clientHeight;
			} else if (document.body) { // other Explorers
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
			}

			// for small pages with total height less then height of the viewport
			if(yScroll < windowHeight){
				pageHeight = windowHeight;
			} else {
				pageHeight = yScroll;
			}


			// for small pages with total width less then width of the viewport
			if(xScroll < windowWidth){
				pageWidth = xScroll;
			} else {
				pageWidth = windowWidth;
			}

			var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
			return arrayPageSize;
		};


		$.fn.lightbox.getPageScroll = function(){
			var xScroll, yScroll;

			if (self.pageYOffset) {
				yScroll = self.pageYOffset;
				xScroll = self.pageXOffset;
			} else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict
				yScroll = document.documentElement.scrollTop;
				xScroll = document.documentElement.scrollLeft;
			} else if (document.body) {// all other Explorers
				yScroll = document.body.scrollTop;
				xScroll = document.body.scrollLeft;
			}

			var arrayPageScroll = new Array(xScroll,yScroll);
			return arrayPageScroll;
		};

		$.fn.lightbox.pause = function(ms){
			var date = new Date();
			var curDate = null;
			do{curDate = new Date();}
			while( curDate - date < ms);
		};

		$.fn.lightbox.start = function(imageLink){

			$("select, embed, object").hide();
			var arrayPageSize = $.fn.lightbox.getPageSize();
			$("#overlay").hide().css({width: '100%', height: arrayPageSize[1]+'px', opacity : opts.overlayOpacity}).fadeIn();
			opts.imageArray = [];
			imageNum = 0;

			var anchors = document.getElementsByTagName( imageLink.tagName);

			// if image is NOT part of a set..
			if(!imageLink.rel || (imageLink.rel == '')){
				// add single image to Lightbox.imageArray
				opts.imageArray.push(new Array(imageLink.href, opts.displayTitle ? imageLink.title : ''));
			} else {
			// if image is part of a set..
				$("a").each(function(){
					if(this.href && (this.rel == imageLink.rel)){
						opts.imageArray.push(new Array(this.href, opts.displayTitle ? this.title : ''));
					}
				})


				for(i = 0; i < opts.imageArray.length; i++){
					for(j = opts.imageArray.length-1; j>i; j--){
						if(opts.imageArray[i][0] == opts.imageArray[j][0]){
							opts.imageArray.splice(j,1);
						}
					}
				}
				while(opts.imageArray[imageNum][0] != imageLink.href) { imageNum++;}
			}

			// calculate top and left offset for the lightbox
			var arrayPageScroll = $.fn.lightbox.getPageScroll();
			var lightboxTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
			var lightboxLeft = arrayPageScroll[0];
			$('#lightbox').css({top: lightboxTop+'px', left: lightboxLeft+'px'}).show();


			if (!opts.slideNavBar)
				$('#imageData').hide();

			$.fn.lightbox.changeImage(imageNum);

		};

		$.fn.lightbox.changeImage = function(imageNum){
			if(opts.inprogress == false){
				opts.inprogress = true;
				opts.activeImage = imageNum;	// update global var

				// hide elements during transition
				$('#loading').show();
				$('#lightboxImage').hide();
				$('#hoverNav').hide();
				$('#prevLink').hide();
				$('#nextLink').hide();

				if (opts.slideNavBar) { // delay preloading image until navbar will slide up
					// $('#imageDataContainer').slideUp(opts.navBarSlideSpeed, $.fn.doChangeImage);
					$('#imageDataContainer').hide();
					$('#imageData').hide();
					$.fn.doChangeImage();
				} else {
				    $.fn.doChangeImage();
				}
			}
		};

		$.fn.doChangeImage = function(){

			imgPreloader = new Image();

			// once image is preloaded, resize image container
			imgPreloader.onload=function(){
			    var newWidth = imgPreloader.width;
			    var newHeight = imgPreloader.height;


				if (opts.fitToScreen) {
			        var arrayPageSize = $.fn.lightbox.getPageSize();
					var ratio;
					var initialPageWidth = arrayPageSize[2] - 2 * opts.borderSize;
					var initialPageHeight = arrayPageSize[3] - 200;

					if (imgPreloader.height > initialPageHeight)
					{
						newWidth = parseInt((initialPageHeight/imgPreloader.height) * imgPreloader.width);
						newHeight = initialPageHeight;
					}
					else if (imgPreloader.width > initialPageWidth)
					{
						newHeight = parseInt((initialPageWidth/imgPreloader.width) * imgPreloader.height);
						newWidth = initialPageWidth;
					}
				}

				$('#lightboxImage').attr('src', opts.imageArray[opts.activeImage][0])
								   .width(newWidth).height(newHeight);
				$.fn.lightbox.resizeImageContainer(newWidth, newHeight);
			}

			imgPreloader.src = opts.imageArray[opts.activeImage][0];
		}
		
		$.fn.lightbox.end = function(){
			$.fn.lightbox.disableKeyboardNav();
			$('#lightbox').hide();
			$('#overlay').fadeOut();
			$('select, object, embed').show();
		};

		$.fn.lightbox.preloadNeighborImages = function(){
			if((opts.imageArray.length - 1) > opts.activeImage){
				preloadNextImage = new Image();
				preloadNextImage.src = opts.imageArray[opts.activeImage + 1][0];
			}
			if(opts.activeImage > 0){
				preloadPrevImage = new Image();
				preloadPrevImage.src = opts.imageArray[opts.activeImage - 1][0];
			}
		};

		$.fn.lightbox.keyboardAction = function(e){
			if (e == null) { // ie
				var keycode = event.keyCode;
				var escapeKey = 27;
			} else { // mozilla
				var keycode = e.keyCode;
				var escapeKey = e.DOM_VK_ESCAPE;
			}

			var key = String.fromCharCode(keycode).toLowerCase();

			if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){ // close lightbox
				$.fn.lightbox.end();
			} else if((key == 'p') || (keycode == 37)){ // display previous image
				if(opts.activeImage != 0){
					$.fn.lightbox.disableKeyboardNav();
					$.fn.lightbox.changeImage(opts.activeImage - 1);
				}
			} else if((key == 'n') || (keycode == 39)){ // display next image
				if(opts.activeImage != (opts.imageArray.length - 1)){
					$.fn.lightbox.disableKeyboardNav();
					$.fn.lightbox.changeImage(opts.activeImage + 1);
				}
			}
		};

		$.fn.lightbox.resizeImageContainer = function(imgWidth, imgHeight){
			// get current width and height
			opts.widthCurrent = document.getElementById('outerImageContainer').offsetWidth;
			opts.heightCurrent = document.getElementById('outerImageContainer').offsetHeight;

			// get new width and height
			var widthNew = (imgWidth  + (opts.borderSize * 2));
			var heightNew = (imgHeight  + (opts.borderSize * 2));

			// scalars based on change from old to new
			opts.xScale = ( widthNew / opts.widthCurrent) * 100;
			opts.yScale = ( heightNew / opts.heightCurrent) * 100;

			// calculate size difference between new and old image, and resize if necessary
			wDiff = opts.widthCurrent - widthNew;
			hDiff = opts.heightCurrent - heightNew;

			$('#imageDataContainer').animate({width: widthNew},opts.resizeSpeed,'linear');
			$('#outerImageContainer').animate({width: widthNew},opts.resizeSpeed,'linear',function(){
				$('#outerImageContainer').animate({height: heightNew},opts.resizeSpeed,'linear',function(){
					$.fn.lightbox.showImage();
				});
			});


			// if new and old image are same size and no scaling transition is necessary,
			// do a quick pause to prevent image flicker.
			if((hDiff == 0) && (wDiff == 0)){
				if (jQuery.browser.msie){ $.fn.lightbox.pause(250); } else { $.fn.lightbox.pause(100);}
			}

			$('#prevLink').height(imgHeight);
			$('#nextLink').height(imgHeight);
		};

		$.fn.lightbox.showImage = function(){
			$('#loading').hide();
			$('#lightboxImage').fadeIn("fast");
			$.fn.lightbox.updateDetails();
			$.fn.lightbox.preloadNeighborImages();

			opts.inprogress = false;
		};

		$.fn.lightbox.updateDetails = function(){

			if(opts.imageArray[opts.activeImage][1]){
				$('#caption').html(opts.imageArray[opts.activeImage][1]).show();
			}

			// if image is part of set display 'Image x of x'
			if(opts.imageArray.length > 1){
				var nav_html;

				nav_html = opts.strings.image + (opts.activeImage + 1) + opts.strings.of + opts.imageArray.length;

				// display previous / next text links
				if ((opts.activeImage) > 0) {
					nav_html = '<a title="' + opts.strings.prevLinkTitle + '" href="#" id="prevLinkText">' + opts.strings.prevLinkText + "</a>" + nav_html;
				}

				if ((opts.activeImage + 1) < opts.imageArray.length) {
					nav_html += '<a title="' + opts.strings.nextLinkTitle + '" href="#" id="nextLinkText">' + opts.strings.nextLinkText + "</a>";
				}

				$('#numberDisplay').html(nav_html).show();
			}

			if (opts.slideNavBar) {
			    $("#imageData").slideDown(opts.navBarSlideSpeed);
			} else {
				$("#imageData").show();
			}

			var arrayPageSize = $.fn.lightbox.getPageSize();
			$('#overlay').height(arrayPageSize[1]);
			$.fn.lightbox.updateNav();
		};

		$.fn.lightbox.updateNav = function(){
			$('#hoverNav').show();

			// if not first image in set, display prev image button
			if(opts.activeImage != 0){
				$('#prevLink,#prevLinkText').show().click(function(){
					$.fn.lightbox.changeImage(opts.activeImage - 1); return false;
				});
			}

			// if not last image in set, display next image button
			if(opts.activeImage != (opts.imageArray.length - 1)){
				$('#nextLink,#nextLinkText').show().click(function(){

					$.fn.lightbox.changeImage(opts.activeImage +1); return false;
				});
			}

			$.fn.lightbox.enableKeyboardNav();
		};


		$.fn.lightbox.enableKeyboardNav = function(){
			document.onkeydown = $.fn.lightbox.keyboardAction;
		};

		$.fn.lightbox.disableKeyboardNav = function(){
			document.onkeydown = '';
		};

		$.fn.lightbox.defaults = {
			fileLoadingImage : '../../../images/loading_.gif',
			fileBottomNavCloseImage : '../../../images/closelabel.gif',
			overlayOpacity : 0.8,
			borderSize : 10,
			imageArray : new Array,
			activeImage : null,
			inprogress : false,
			resizeSpeed : 350,
			widthCurrent: 250,
			heightCurrent: 250,
			xScale : 1,
			yScale : 1,
			displayTitle: true,
			navbarOnTop: false,
			slideNavBar: false, // slide nav bar up/down between image resizing transitions
			navBarSlideSpeed: 350,
			displayHelp: false,
			strings : {
				help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery',
				prevLinkTitle: 'previous image',
				nextLinkTitle: 'next image',
				prevLinkText:  '&laquo; Previous',
				nextLinkText:  'Next &raquo;',
				closeTitle: 'close image gallery',
				image: 'Image ',
				of: ' of '
			},
			fitToScreen: false		// resize images if they are bigger than window
		};
	})(jQuery);
	 /*
  	Author:		Robert Hashemian (http://www.hashemian.com/)
  	Modified by:	Munsifali Rashid (http://www.munit.co.uk/)
  	Modified by:	Tilesh Khatri
  */
  
  function StartCountDown(myDiv,myTargetDate)
  {
    ddiff		= myTargetDate;
    gsecs		= Math.floor(ddiff.valueOf());
    CountBack(myDiv,gsecs);
  }
  
  function Calcage(secs, num1, num2)
  {
    s = ((Math.floor(secs/num1))%num2).toString();
    if (s.length < 2) 
    {	
      s = "0" + s;
    }
    return (s);
  }
  
  function CountBack(myDiv, secs)
  {
    var DisplayStr;
    var DisplayFormat = "%%H%%:%%M%%:%%S%%";
    DisplayStr = DisplayFormat.replace(/%%H%%/g,		Calcage(secs,3600,24));
    DisplayStr = DisplayStr.replace(/%%M%%/g,		Calcage(secs,60,60));
    DisplayStr = DisplayStr.replace(/%%S%%/g,		Calcage(secs,1,60));
    if(secs > 0)
    {	
      document.getElementById(myDiv).innerHTML = DisplayStr;
      setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 990);
    }
    else
    {
      document.getElementById(myDiv).innerHTML = "Auction Over";
    }
  }
  /* http://keith-wood.name/bookmark.html
  Sharing bookmarks for jQuery v1.0.2.
  Written by Keith Wood (kbwood@virginbroadband.com.au) March 2008.
  Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
  MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
  Please attribute the author if you use it. */

/* Allow your page to be shared with various bookmarking sites.
  Attach the functionality with options like:
  $('div selector').bookmark({sites: ['delicious', 'digg']});
*/

(function($) { // Hide scope, no $ conflict

/* Bookmark sharing manager. */
function Bookmark() {
	this._defaults = {
		sites: [],  // List of site IDs to use, empty for all
		icons: 'http://www.4love.ro/images/bookmarks.png', // Horizontal amalgamation of all site icons
		iconSize: 16,  // The size of the individual icons
		target: '_blank',  // The name of the target window for the bookmarking links
		compact: false,  // True if a compact presentation should be used, false for full
		addFavorite: false,  // True to add a 'add to favourites' link, false for none
		favoriteText: 'Favorite',  // Display name for the favourites link
		favoriteIcon: 0,  // Icon for the favourites link
		addEmail: false,  // True to add a 'e-mail a friend' link, false for none
		emailText: 'E-mail',  // Display name for the e-mail link
		emailIcon: 1,  // Icon for the e-mail link
		emailSubject: 'Interesting page',  // The subject for the e-mail
		emailBody: 'I thought you might find this page interesting:\n{t} ({u})', // The body of the e-mail
			// Use '{t}' for the position of the page title, '{u}' for the page URL, and '\n' for new lines
		manualBookmark: 'Please close this dialog and\npress Ctrl-D to bookmark this page.'
			// Instructions for manually bookmarking the page
	};
	this._sites = {  // The definitions of the available bookmarking sites
		'aol': {display: 'myAOL', icon: 2,
			url: 'http://favorites.my.aol.com/ffclient/webroot/0.4.1/src/html/addBookmarkDialog.html?url={u}&amp;title={t}&amp;favelet=true'},
		'ask': {display: 'Ask', icon: 3,
			url: 'http://myjeeves.ask.com/mysearch/BookmarkIt?v=1.2&amp;t=webpages&amp;url={u}&amp;title={t}'},
		'blinklist': {display: 'BlinkList', icon: 4,
			url: 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url={u}&amp;Title={t}'},
		'blogmarks': {display: 'Blogmarks', icon: 5,
			url: 'http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url={u}&amp;title={t}'},
		'care2': {display: 'Care2', icon: 6,
			url: 'http://www.care2.com/news/news_post.html?url={u}&amp;title={t}'},
		'delicious': {display: 'del.icio.us', icon: 7,
			url: 'http://del.icio.us/post?url={u}&amp;title={t}'},
		'digg': {display: 'Digg', icon: 8,
			url: 'http://digg.com/submit?phase=2&amp;url={u}&amp;title={t}'},
		'diigo': {display: 'Diigo', icon: 9,
			url: 'http://www.diigo.com/post?url={u}&amp;title={t}'},
		'dzone': {display: 'DZone', icon: 10,
			url: 'http://www.dzone.com/links/add.html?url={u}&amp;title={t}'},
		'facebook': {display: 'Facebook', icon: 11,
			url: 'http://www.facebook.com/sharer.php?u={u}&amp;t={t}'},
		'fark': {display: 'Fark', icon: 12,
			url: 'http://cgi.fark.com/cgi/fark/submit.pl?new_url={u}&amp;new_comment={t}'},
		'faves': {display: 'Faves', icon: 13,
			url: 'http://faves.com/Authoring.aspx?u={u}&amp;t={t}'},
		'feedmelinks': {display: 'Feed Me Links', icon: 14,
			url: 'http://feedmelinks.com/categorize?from=toolbar&amp;op=submit&amp;url={u}&amp;name={t}'},
		'furl': {display: 'Furl', icon: 15,
			url: 'http://www.furl.net/storeIt.jsp?t={t}&amp;u={u}'},
		'google': {display: 'Google', icon: 16,
			url: 'http://www.google.com/bookmarks/mark?op=edit&amp;bkmk={u}&amp;title={t}'},
		'hugg': {display: 'Hugg', icon: 17,
			url: 'http://www.hugg.com/submit?url={u}'},
		'kool': {display: 'Koolontheweb', icon: 43,
			url: 'http://www.koolontheweb.com/post?url={u}&title={t}'},
		'linkagogo': {display: 'LinkaGoGo', icon: 18,
			url: 'http://www.linkagogo.com/go/AddNoPopup?url={u}&amp;title={t}'},
		'livejournal': {display: 'LiveJournal', icon: 19,
			url: 'http://www.livejournal.com/update.bml?subject={u}'},
		'magnolia': {display: 'ma.gnolia', icon: 20,
			url: 'http://ma.gnolia.com/bookmarklet/add?url={u}&amp;title={t}'},
		'mindbody': {display: 'MindBodyGreen', icon: 21,
			url: 'http://www.mindbodygreen.com/passvote.action?u={u}'},
		'misterwong': {display: 'Mister Wong', icon: 22,
			url: 'http://www.mister-wong.com/index.php?action=addurl&amp;bm_url={u}&amp;bm_description={t}'},
		'mixx': {display: 'Mixx', icon: 23,
			url: 'http://www.mixx.com/submit/story?page_url={u}&amp;title={t}'},
		'multiply': {display: 'Multiply', icon: 24,
			url: 'http://multiply.com/gus/journal/compose/addthis?body=&amp;url={u}&amp;subject={t}'},
		'myspace': {display: 'MySpace', icon: 25,
			url: 'http://www.myspace.com/Modules/PostTo/Pages/?c={u}&amp;t={t}'},
		'netscape': {display: 'Netscape', icon: 26,
			url: 'http://www.netscape.com/submit/?U={u}&amp;T={t}'},
		'netvouz': {display: 'Netvouz', icon: 27,
			url: 'http://netvouz.com/action/submitBookmark?url={u}&amp;title={t}&amp;popup=no'},
		'newsvine': {display: 'Newsvine', icon: 28,
			url: 'http://www.newsvine.com/_wine/save?u={u}&amp;h={t}'},
		'nowpublic': {display: 'NowPublic', icon: 29,
			url: 'http://view.nowpublic.com/?src={u}&amp;t={t}'},
		'reddit': {display: 'reddit', icon: 30,
			url: 'http://reddit.com/submit?url={u}&amp;title={t}'},
		'segnalo': {display: 'Segnalo', icon: 31,
			url: 'http://segnalo.alice.it/post.html.php?url={u}&amp;title={t}'},
		'simpy': {display: 'Simpy', icon: 32,
			url: 'http://www.simpy.com/simpy/LinkAdd.do?href={u}&amp;title={t}'},
		'slashdot': {display: 'Slashdot', icon: 33,
			url: 'http://slashdot.org/bookmark.pl?url={u}&amp;title={t}'},
		'smarking': {display: 'Smarking', icon: 34,
			url: 'http://smarking.com/editbookmark/?url={u}&amp;title={t}'},
		'spurl': {display: 'Spurl', icon: 35,
			url: 'http://www.spurl.net/spurl.php?url={u}&amp;title={t}'},
		'squidoo': {display: 'Squidoo', icon: 42,
			url: 'http://www.squidoo.com/lensmaster/bookmark?{u}&title={t}'},
		'stumbleupon': {display: 'StumbleUpon', icon: 36,
			url: 'http://www.stumbleupon.com/submit?url={u}&amp;title={t}'},
		'tailrank': {display: 'Tailrank', icon: 37,
			url: 'http://tailrank.com/share/?title={t}&amp;link_href={u}'},
		'technorati': {display: 'Technorati', icon: 38,
			url: 'http://www.technorati.com/faves?add={u}'},
		'thisnext': {display: 'ThisNext', icon: 39,
			url: 'http://www.thisnext.com/pick/new/submit/sociable/?url={u}&amp;name={t}'},
		'windows': {display: 'Windows Live', icon: 40,
			url: 'https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url={u}&amp;title={t}'},
		'yahoo': {display: 'Yahoo MyWeb', icon: 41,
			url: 'http://myweb2.search.yahoo.com/myresults/bookmarklet?t={t}&amp;u={u}'}
	};
}

$.extend(Bookmark.prototype, {
	/* Class name added to elements to indicate already configured with bookmarking. */
	markerClassName: 'hasBookmark',

	/* Override the default settings for all bookmarking instances.
	   @param  settings  object - the new settings to use as defaults
	   @return void */
	setDefaults: function(settings) {
		extendRemove(this._defaults, settings || {});
		return this;
	},

	/* Add a new bookmarking site to the list.
	   @param  id  string - the ID of the new site
	   @param  display  string - the display name for this site
	   @param  icon     url - the location of an icon for this site (16x16), or
	                    number - the index of the icon within the combined image
	   @param  url      url - the submission URL for this site,
	                    with {u} marking where the current page's URL should be inserted,
	                    and {t} indicating the title insertion point
	   @return void */
	addSite: function(id, display, icon, url) {
		this._sites[id] = {display: display, icon: icon, url: url};
		return this;
	},

	/* Return the list of defined sites.
	   @return  object[] - indexed by site id (string), each object contains
	            display (string) - the display name,
	            icon    (string) - the location of the icon,, or
	                    (number) the icon's index in the combined image
	            url (string) - the submission URL for the site */
	getSites: function() {
		return this._sites;
	},

	/* Attach the bookmarking widget to a div. */
	_attachBookmark: function(target, settings) {
		target = $(target);
		if (target.hasClass(this.markerClassName)) {
			return;
		}
		target.addClass(this.markerClassName);
		this._updateBookmark(target, settings);
	},

	/* Reconfigure the settings for a bookmarking div. */
	_changeBookmark: function(target, settings) {
		target = $(target);
		if (!target.hasClass(this.markerClassName)) {
			return;
		}
		this._updateBookmark(target, settings);
	},

	/* Construct the requested bookmarking links. */
	_updateBookmark: function(target, settings) {
		settings = extendRemove(extendRemove({}, this._defaults), settings);
		var sites = settings.sites;
		if (sites.length == 0) {
			$.each(this._sites, function(id) {
				sites[sites.length] = id;
			});
		}
		var html = '<ul class="bookmark_list' + (settings.compact ? ' bookmark_compact' : '') + '">';
		var addSite = function(display, icon, url, onclick) {
			var html = '<li><a href="' + url + '"' + (onclick ? ' onclick="' + onclick + '"' :
				(settings.target ? ' target="' + settings.target + '"' : '')) + '>';
			if (icon != null) {
				if (typeof icon == 'number') {
					html += '<span title="' + display + '" style="background: ' +
						'transparent url(' + settings.icons + ') no-repeat -' +
						(icon * settings.iconSize) + 'px 0px;' +
						($.browser.mozilla && $.browser.version.substr(0, 3) != '1.9' ?
						' padding-left: ' + settings.iconSize +
						'px; padding-bottom: 3px;' : '') + '"></span>';
				}
				else {
					html += '<img src="' + icon + '" alt="' + display + '" title="' +
						display + '"' + ($.browser.mozilla || $.browser.opera ?
						' style="vertical-align: baseline;"' : '') + '/>';
				}
				html +=	(settings.compact ? '' : '&#xa0;');
			}
			html +=	(settings.compact ? '' : display) + '</a></li>';
			return html;
		};
		if (settings.addFavorite) {
			html += addSite(settings.favoriteText, settings.favoriteIcon,
				'#', 'jQuery.bookmark._addFavourite()');
		}
		if (settings.addEmail) {
			html += addSite(settings.emailText, settings.emailIcon,
				'mailto:?subject=' + escape(settings.emailSubject) + '&amp;body=' +
				escape(settings.emailBody.replace(/{u}/, window.location.href).
				replace(/{t}/, document.title)));
		}
		var allSites = this._sites;
		$.each(sites, function(index, id) {
			var site = allSites[id];
			html += addSite(site.display, site.icon, site.url.
				replace(/{u}/, escape(window.location.href)).replace(/{t}/, escape(document.title)));
		});
		html += '</ul>';
		target.html(html);
	},

	/* Remove the bookmarking widget from a div. */
	_destroyBookmark: function(target) {
		target = $(target);
		if (!target.hasClass(this.markerClassName)) {
			return;
		}
		target.removeClass(this.markerClassName);
		target.empty();
	},

	/* Add the current page as a favourite in the browser. */
	_addFavourite: function() {
		if ($.browser.msie) {
			window.external.addFavorite(window.location.href, document.title);
		}
		else {
			alert(this._defaults.manualBookmark);
		}
	}
});

/* jQuery extend now ignores nulls! */
function extendRemove(target, props) {
	$.extend(target, props);
	for (var name in props) {
		if (props[name] == null) {
			target[name] = null;
		}
	}
	return target;
}

/* Attach the bookmarking functionality to a jQuery selection.
  @param  command  string - the command to run (optional, default 'attach')
  @param  options  object - the new settings to use for these bookmarking instances
  @return  jQuery object - for chaining further calls */
$.fn.bookmark = function(options) {
	var otherArgs = Array.prototype.slice.call(arguments, 1);
	return this.each(function() {
		if (typeof options == 'string') {
			$.bookmark['_' + options + 'Bookmark'].
				apply($.bookmark, [this].concat(otherArgs));
		}
		else {
			$.bookmark._attachBookmark(this, options || {});
		}
	});
};

/* Initialise the bookmarking functionality. */
$.bookmark = new Bookmark(); // singleton instance

})(jQuery);

	function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/***************************/
//@Author: Adrian "yEnS" Mato Gondelle
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
/***************************/

//SETTING UP OUR POPUP
//0 means disabled; 1 means enabled;
var popupStatus = 0;

//loading popup with jQuery magic!
function loadPopup(){
	//loads popup only if it is disabled
	if(popupStatus==0){
		$("#backgroundPopup").css({
			"opacity": "0.7"
		});
		$("#backgroundPopup").fadeIn("slow");
		$("#popupContact").fadeIn("slow");
		popupStatus = 1;
	}
}

//disabling popup with jQuery magic!
function disablePopup(){
	//disables popup only if it is enabled
	if(popupStatus==1){
		$("#backgroundPopup").fadeOut("slow");
		$("#popupContact").fadeOut("slow");
		popupStatus = 0;
	}
}

//centering popup
function centerPopup(){
	//request data for centering
	var windowWidth = document.documentElement.clientWidth;
	var windowHeight = document.documentElement.clientHeight;
	var popupHeight = $("#popupContact").height();
	var popupWidth = $("#popupContact").width();
	//centering
	$("#popupContact").css({
		"position": "absolute",
		"top": 150,
		"left": windowWidth/2-popupWidth/2
	});
	//only need force for IE6
	
	$("#backgroundPopup").css({
		"height": windowHeight
	});
	
}


//CONTROLLING EVENTS IN jQuery
$(document).ready(function(){
	
	//LOADING POPUP
	//Click the button event!
	$("#button").click(function(){
		//centering with css
		centerPopup();
		//load popup
		loadPopup();
	});
				
	//CLOSING POPUP
	//Click the x event!
	$("#popupContactClose").click(function(){
		disablePopup();
	});
	//Click out event!
	$("#backgroundPopup").click(function(){
		disablePopup();
	});
	//Press Escape event!
	$(document).keypress(function(e){
		if(e.keyCode==27 && popupStatus==1){
			disablePopup();
		}
	});

});
/**
 * Interface Elements for jQuery
 * utility function
 *
 * http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 *
 */

jQuery.iUtil = {
	getPosition : function(e)
	{
		var x = 0;
		var y = 0;
		var es = e.style;
		var restoreStyles = false;
		if (jQuery(e).css('display') == 'none') {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			restoreStyles = true;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
		}
		var el = e;
		while (el){
			x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderLeftWidth)||0:0);
			y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ?parseInt(el.currentStyle.borderTopWidth)||0:0);
			el = el.offsetParent;
		}
		el = e;
		while (el && el.tagName  && el.tagName.toLowerCase() != 'body')
		{
			x -= el.scrollLeft||0;
			y -= el.scrollTop||0;
			el = el.parentNode;
		}
		if (restoreStyles == true) {
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {x:x, y:y};
	},
	getPositionLite : function(el)
	{
		var x = 0, y = 0;
		while(el) {
			x += el.offsetLeft || 0;
			y += el.offsetTop || 0;
			el = el.offsetParent;
		}
		return {x:x, y:y};
	},
	getSize : function(e)
	{
		var w = jQuery.css(e,'width');
		var h = jQuery.css(e,'height');
		var wb = 0;
		var hb = 0;
		var es = e.style;
		if (jQuery(e).css('display') != 'none') {
			wb = e.offsetWidth;
			hb = e.offsetHeight;
		} else {
			var oldVisibility = es.visibility;
			var oldPosition = es.position;
			es.visibility = 'hidden';
			es.display = 'block';
			es.position = 'absolute';
			wb = e.offsetWidth;
			hb = e.offsetHeight;
			es.display = 'none';
			es.position = oldPosition;
			es.visibility = oldVisibility;
		}
		return {w:w, h:h, wb:wb, hb:hb};
	},
	getSizeLite : function(el)
	{
		return {
			wb:el.offsetWidth||0,
			hb:el.offsetHeight||0
		};
	},
	getClient : function(e)
	{
		var h, w, de;
		if (e) {
			w = e.clientWidth;
			h = e.clientHeight;
		} else {
			de = document.documentElement;
			w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
			h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		}
		return {w:w,h:h};
	},
	getScroll : function (e)
	{
		var t=0, l=0, w=0, h=0, iw=0, ih=0;
		if (e && e.nodeName.toLowerCase() != 'body') {
			t = e.scrollTop;
			l = e.scrollLeft;
			w = e.scrollWidth;
			h = e.scrollHeight;
			iw = 0;
			ih = 0;
		} else  {
			if (document.documentElement) {
				t = document.documentElement.scrollTop;
				l = document.documentElement.scrollLeft;
				w = document.documentElement.scrollWidth;
				h = document.documentElement.scrollHeight;
			} else if (document.body) {
				t = document.body.scrollTop;
				l = document.body.scrollLeft;
				w = document.body.scrollWidth;
				h = document.body.scrollHeight;
			}
			iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
			ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
		}
		return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
	},
	getMargins : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('marginTop') || '';
		var r = el.css('marginRight') || '';
		var b = el.css('marginBottom') || '';
		var l = el.css('marginLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPadding : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('paddingTop') || '';
		var r = el.css('paddingRight') || '';
		var b = el.css('paddingBottom') || '';
		var l = el.css('paddingLeft') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getBorder : function(e, toInteger)
	{
		var el = jQuery(e);
		var t = el.css('borderTopWidth') || '';
		var r = el.css('borderRightWidth') || '';
		var b = el.css('borderBottomWidth') || '';
		var l = el.css('borderLeftWidth') || '';
		if (toInteger)
			return {
				t: parseInt(t)||0,
				r: parseInt(r)||0,
				b: parseInt(b)||0,
				l: parseInt(l)||0
			};
		else
			return {t: t, r: r,	b: b, l: l};
	},
	getPointer : function(event)
	{
		var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
		var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
		return {x:x, y:y};
	},
	traverseDOM : function(nodeEl, func)
	{
		func(nodeEl);
		nodeEl = nodeEl.firstChild;
		while(nodeEl){
			jQuery.iUtil.traverseDOM(nodeEl, func);
			nodeEl = nodeEl.nextSibling;
		}
	},
	purgeEvents : function(nodeEl)
	{
		jQuery.iUtil.traverseDOM(
			nodeEl,
			function(el)
			{
				for(var attr in el){
					if(typeof el[attr] === 'function') {
						el[attr] = null;
					}
				}
			}
		);
	},
	centerEl : function(el, axis)
	{
		var clientScroll = jQuery.iUtil.getScroll();
		var windowSize = jQuery.iUtil.getSize(el);
		if (!axis || axis == 'vertically')
			jQuery(el).css(
				{
					top: clientScroll.t + ((Math.max(clientScroll.h,clientScroll.ih) - clientScroll.t - windowSize.hb)/2) + 'px'
				}
			);
		if (!axis || axis == 'horizontally')
			jQuery(el).css(
				{
					left:	clientScroll.l + ((Math.max(clientScroll.w,clientScroll.iw) - clientScroll.l - windowSize.wb)/2) + 'px'
				}
			);
	},
	fixPNG : function (el, emptyGIF) {
		var images = jQuery('img[@src*="png"]', el||document), png;
		images.each( function() {
			png = this.src;				
			this.src = emptyGIF;
			this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')";
		});
	}
};

// Helper function to support older browsers!
[].indexOf || (Array.prototype.indexOf = function(v, n){
	n = (n == null) ? 0 : n;
	var m = this.length;
	for (var i=n; i<m; i++)
		if (this[i] == v)
			return i;
	return -1;
});
/**
 * Interface Elements for jQuery
 * 3D Carousel
 * 
 * http://interface.eyecon.ro
 * 
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 */
/**
 * Created a 3D Carousel from a list of images, with reflections and animated by mouse position
 * 
 * @example window.onload = 
 *			function()
 *			{
 *				$('#carousel').Carousel(
 *					{
 *						itemWidth: 110,
 *						itemHeight: 62,
 *						itemMinWidth: 50,
 *						items: 'a',
 *						reflections: .5,
 *						rotationSpeed: 1.8
 *					}
 *				);
 *			}
 * HTML
 *			<div id="carousel">
 *				<a href="" title=""><img src="" width="100%" /></a>
 *				<a href="" title=""><img src="" width="100%" /></a>
 *				<a href="" title=""><img src="" width="100%" /></a>
 *				<a href="" title=""><img src="" width="100%" /></a>
 *				<a href="" title=""><img src="" width="100%" /></a>
 *			</div>
 * CSS
 *			#carousel
 *			{
 *				width: 700px;
 *				height: 150px;
 *				background-color: #111;
 *				position: absolute;
 *				top: 200px;
 *				left: 100px;
 *			}
 *			#carousel a
 *			{
 *				position: absolute;
 *				width: 110px;
 *			}
 *
 * @desc Creates a 3D carousel from all images inside div tag with id 'carousel'
 *
 *
 * @name 3D Carousel
 * @description Created a 3D Carousel from a list of images, with reflections and animated by mouse position
 * @param Hash hash A hash of parameters
 * @option String items items selection
 * @option Integer itemWidth the max width for each item
 * @option Integer itemHeight the max height for each item
 * @option Integer itemMinWidth the minimum width for each item, the height is automaticaly calculated to keep proportions
 * @option Float rotationSpeed the speed for rotation animation
 * @option Float reflectionSize the reflection size a fraction from items' height
 *
 * @type jQuery
 * @cat Plugins/Interface
 * @author Stefan Petre
 */
jQuery.iCarousel = {
	
	build : function(options)
	{
		return this.each(
			function()
			{
				var el = this;
				var increment = 2*Math.PI/360;
				var maxRotation = 2*Math.PI;
				if(jQuery(el).css('position') != 'relative' && jQuery(el).css('position') != 'absolute') {
					jQuery(el).css('position', 'relative');
				}
				el.carouselCfg = {
					items : jQuery(options.items, this),
					itemWidth : options.itemWidth,
					itemHeight : options.itemHeight,
					itemMinWidth : options.itemMinWidth,
					maxRotation : maxRotation,
					size : jQuery.iUtil.getSize(this),
					position : jQuery.iUtil.getPosition(this),
					start : Math.PI/2,
					rotationSpeed : options.rotationSpeed,
					reflectionSize : options.reflections,
					reflections : [],
					protectRotation : false,
					increment: 2*Math.PI/360
				};
				el.carouselCfg.radiusX = (el.carouselCfg.size.w - el.carouselCfg.itemWidth)/2;
				el.carouselCfg.radiusY =  (el.carouselCfg.size.h - el.carouselCfg.itemHeight - el.carouselCfg.itemHeight * el.carouselCfg.reflectionSize)/2;
				el.carouselCfg.step =  2*Math.PI/el.carouselCfg.items.size();
				el.carouselCfg.paddingX = el.carouselCfg.size.w/2;
				el.carouselCfg.paddingY = el.carouselCfg.size.h/2 - el.carouselCfg.itemHeight * el.carouselCfg.reflectionSize;
				var reflexions = document.createElement('div');
				jQuery(reflexions)
					.css(
						{
							position: 'absolute',
							zIndex: 1,
							top: 0,
							left: 0
						}
					);
				jQuery(el).append(reflexions);
				el.carouselCfg.items
					.each(
						function(nr)
						{
							image = jQuery('img', this).get(0);
							height = parseInt(el.carouselCfg.itemHeight*el.carouselCfg.reflectionSize);
							if (jQuery.browser.msie) {
								canvas = document.createElement('img');
								jQuery(canvas).css('position', 'absolute');
								canvas.src = image.src;				
								canvas.style.filter = 'flipv progid:DXImageTransform.Microsoft.Alpha(opacity=60, style=1, finishOpacity=0, startx=0, starty=0, finishx=0)';
					
							} else {
								canvas = document.createElement('canvas');
								if (canvas.getContext) {
									context = canvas.getContext("2d");
									canvas.style.position = 'absolute';
									canvas.style.height = height +'px';
									canvas.style.width = el.carouselCfg.itemWidth+'px';
									canvas.height = height;
									canvas.width = el.carouselCfg.itemWidth;
									context.save();
						
									context.translate(0,height);
									context.scale(1,-1);
									
									context.drawImage(
										image, 
										0, 
										0, 
										el.carouselCfg.itemWidth, 
										height
									);
					
									context.restore();
									
									context.globalCompositeOperation = "destination-out";
									var gradient = context.createLinearGradient(
										0, 
										0, 
										0, 
										height
									);
									
									gradient.addColorStop(1, "rgba(255, 255, 255, 1)");
									gradient.addColorStop(0, "rgba(255, 255, 255, 0.6)");
						
									context.fillStyle = gradient;
									if (navigator.appVersion.indexOf('WebKit') != -1) {
										context.fill();
									} else {
										context.fillRect(
											0, 
											0, 
											el.carouselCfg.itemWidth, 
											height
										);
									}
								}
							}
							
							el.carouselCfg.reflections[nr] = canvas;
							jQuery(reflexions).append(canvas);
						}
					)
					.bind(
						'mouseover',
						function(e)
						{
							el.carouselCfg.protectRotation = true;
							el.carouselCfg.speed = el.carouselCfg.increment*0.1 * el.carouselCfg.speed / Math.abs(el.carouselCfg.speed);
							return false;
						}
					)
					.bind(
						'mouseout',
						function(e)
						{
							el.carouselCfg.protectRotation = false;
							return false;
						}
					);
				jQuery.iCarousel.positionItems(el);
				el.carouselCfg.speed = el.carouselCfg.increment*0.2;
				el.carouselCfg.rotationTimer = window.setInterval(
					function()
					{
						el.carouselCfg.start += el.carouselCfg.speed;
						if (el.carouselCfg.start > maxRotation)
							el.carouselCfg.start = 0;
						jQuery.iCarousel.positionItems(el);
					},
					20
				);
				jQuery(el)
					.bind(
						'mouseout',
						function()
						{
							el.carouselCfg.speed = el.carouselCfg.increment*0.2 * el.carouselCfg.speed / Math.abs(el.carouselCfg.speed);
						}
					)
					.bind(
						'mousemove',
						function(e)
						{
							if (el.carouselCfg.protectRotation == false) {
								pointer = jQuery.iUtil.getPointer(e);
								mousex =  el.carouselCfg.size.w - pointer.x + el.carouselCfg.position.x;
								el.carouselCfg.speed = el.carouselCfg.rotationSpeed * el.carouselCfg.increment * (el.carouselCfg.size.w/2 - mousex) / (el.carouselCfg.size.w/2);
							}
						}
					);
			}
		);
	},

	positionItems : function(el)
	{
		el.carouselCfg.items.each(
			function (nr)
			{
				angle = el.carouselCfg.start+nr*el.carouselCfg.step;
				x = el.carouselCfg.radiusX*Math.cos(angle);
				y = el.carouselCfg.radiusY*Math.sin(angle) ;
				itemZIndex = parseInt(100*(el.carouselCfg.radiusY+y)/(2*el.carouselCfg.radiusY));
				parte = (el.carouselCfg.radiusY+y)/(2*el.carouselCfg.radiusY);
				
				width = parseInt((el.carouselCfg.itemWidth - el.carouselCfg.itemMinWidth) * parte + el.carouselCfg.itemMinWidth);
				height = parseInt(width * el.carouselCfg.itemHeight / el.carouselCfg.itemWidth);
				this.style.top = el.carouselCfg.paddingY + y - height/2 + "px";
	     		this.style.left = el.carouselCfg.paddingX + x - width/2 + "px";
	     		this.style.width = width + "px";
	     		this.style.height = height + "px";
	     		this.style.zIndex = itemZIndex;
				el.carouselCfg.reflections[nr].style.top = parseInt(el.carouselCfg.paddingY + y + height - 1 - height/2) + "px";
				el.carouselCfg.reflections[nr].style.left = parseInt(el.carouselCfg.paddingX + x - width/2) + "px";
				el.carouselCfg.reflections[nr].style.width = width + "px";
				el.carouselCfg.reflections[nr].style.height = parseInt(height * el.carouselCfg.reflectionSize) + "px";
			}
		);
	}
};
jQuery.fn.Carousel = jQuery.iCarousel.build;

