/*!
 * jQuery each2 - v0.2 - 8/02/2010
 * http://benalman.com/projects/jquery-misc-plugins/
 * 
 * Inspired by James Padolsey's quickEach
 * http://gist.github.com/500145
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */

(function(b){var a=b([1]);b.fn.each2=function(d){for(var c=-1;(a.context=a[0]=this[++c])&&d.call(a[0],c,a)!==false;);return this}})(jQuery);

//jquery quicksearch
jQuery(function($){$.fn.quicksearch=function(target,opt){var timeout,cache,rowcache,jq_results,val='',e=this,options=$.extend({delay:100,selector:null,stripeRows:null,loader:null,noResults:'',bind:'keyup',onBefore:function(){return;},onAfter:function(){return;},show:function(){this.style.display="";},hide:function(){this.style.display="none";}},opt);this.go=function(){var i=0,noresults=true,vals=val.toLowerCase().split(' ');var rowcache_length=rowcache.length;for(i=0;i<rowcache_length;i++)
{if(this.test(vals,cache[i])||val==""){options.show.apply(rowcache[i]);noresults=false;}else{options.hide.apply(rowcache[i]);}}
if(noresults){this.results(false);}else{this.results(true);this.stripe();}
this.loader(false);options.onAfter();return this;};this.stripe=function(){if(typeof options.stripeRows==="object"&&options.stripeRows!==null)
{var joined=options.stripeRows.join(' ');var stripeRows_length=options.stripeRows.length;jq_results.not(':hidden').each(function(i){$(this).removeClass(joined).addClass(options.stripeRows[i%stripeRows_length]);});}
return this;};this.strip_html=function(input){var output=input.replace(new RegExp('<[^<]+\>','g'),"");output=$.trim(output.toLowerCase());return output;};this.results=function(bool){if(typeof options.noResults==="string"&&options.noResults!==""){if(bool){$(options.noResults).hide();}else{$(options.noResults).show();}}
return this;};this.loader=function(bool){if(typeof options.loader==="string"&&options.loader!==""){(bool)?$(options.loader).show():$(options.loader).hide();}
return this;};this.test=function(vals,t){for(var i=0;i<vals.length;i+=1){if(t.indexOf(vals[i])===-1){return false;}}
return true;};this.cache=function(){jq_results=$(target);if(typeof options.noResults==="string"&&options.noResults!==""){jq_results=jq_results.not(options.noResults);}
var t=(typeof options.selector==="string")?jq_results.find(options.selector):$(target).not(options.noResults);cache=t.map(function(){return e.strip_html(this.innerHTML);});rowcache=jq_results.map(function(){return this;});return this.go();};this.trigger=function(){this.loader(true);options.onBefore();window.clearTimeout(timeout);timeout=window.setTimeout(function(){e.go();},options.delay);return this;};this.cache();this.results(true);this.stripe();this.loader(false);return this.each(function(){$(this).bind(options.bind,function(){val=$(this).val();e.trigger();});});};});
/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/*
 * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
 * http://benalman.com/projects/jquery-bbq-plugin/
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
/*
 * jQuery hashchange event - v1.2 - 2/11/2010
 * http://benalman.com/projects/jquery-hashchange-plugin/
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
/*
 * jQuery Nivo Slider v2.0
 * http://nivo.dev7studios.com
 *
 * Copyright 2010, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
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}('(9($){$.1f.1q=9(1X){b 3=$.2i({},$.1f.1q.2c,1X);I g.E(9(){b 4={f:0,t:\'\',U:0,o:\'\',N:m,1k:m,1N:m};b 5=$(g);5.1S(\'7:4\',4);5.e(\'2h\',\'2g\');5.1n(\'1q\');b d=5.2j();d.E(9(){b j=$(g);b 1p=\'\';6(!j.K(\'B\')){6(j.K(\'a\')){j.1n(\'7-2k\');1p=j}j=j.1g(\'B:1s\')}b 1c=j.w();6(1c==0)1c=j.s(\'w\');b 1d=j.x();6(1d==0)1d=j.s(\'x\');6(1c>5.w()){5.w(1c)}6(1d>5.x()){5.x(1d)}6(1p!=\'\'){1p.e(\'P\',\'1h\')}j.e(\'P\',\'1h\');4.U++});6(3.1a>0){6(3.1a>=4.U)3.1a=4.U-1;4.f=3.1a}6($(d[4.f]).K(\'B\')){4.t=$(d[4.f])}n{4.t=$(d[4.f]).1g(\'B:1s\')}6($(d[4.f]).K(\'a\')){$(d[4.f]).e(\'P\',\'1w\')}5.e(\'W\',\'V(\'+4.t.s(\'D\')+\') R-Y\');2b(b i=0;i<3.h;i++){b G=X.27(5.w()/3.h);6(i==3.h-1){5.J($(\'<C z="7-c"></C>\').e({21:(G*i)+\'13\',w:(5.w()-(G*i))+\'13\'}))}n{5.J($(\'<C z="7-c"></C>\').e({21:(G*i)+\'13\',w:G+\'13\'}))}}5.J($(\'<C z="7-H"><p></p></C>\').e({P:\'1h\',y:3.1Y}));6(4.t.s(\'16\')!=\'\'){$(\'.7-H p\',5).1y(4.t.s(\'16\'));$(\'.7-H\',5).1x(3.q)}b l=0;6(!3.1i&&d.1j>1){l=1v(9(){F(5,d,3,m)},3.1m)}6(3.T){5.J(\'<C z="7-T"><a z="7-2a">2f</a><a z="7-29">2m</a></C>\');6(3.2d){$(\'.7-T\',5).24();5.25(9(){$(\'.7-T\',5).2l()},9(){$(\'.7-T\',5).24()})}$(\'a.7-2a\',5).1J(\'1I\',9(){6(4.N)I m;S(l);l=\'\';4.f-=2;F(5,d,3,\'1C\')});$(\'a.7-29\',5).1J(\'1I\',9(){6(4.N)I m;S(l);l=\'\';F(5,d,3,\'1A\')})}6(3.M){b 1b=$(\'<C z="7-M"></C>\');5.J(1b);2b(b i=0;i<d.1j;i++){6(3.20){b j=d.1B(i);6(!j.K(\'B\')){j=j.1g(\'B:1s\')}6(3.1Q){1b.J(\'<a z="7-1l" 11="\'+i+\'"><B D="\'+j.s(\'11\')+\'" 28="" /></a>\')}n{1b.J(\'<a z="7-1l" 11="\'+i+\'"><B D="\'+j.s(\'D\').2n(3.1R,3.1P)+\'" 28="" /></a>\')}}n{1b.J(\'<a z="7-1l" 11="\'+i+\'">\'+i+\'</a>\')}}$(\'.7-M a:1B(\'+4.f+\')\',5).1n(\'1o\');$(\'.7-M a\',5).1J(\'1I\',9(){6(4.N)I m;6($(g).2e(\'1o\'))I m;S(l);l=\'\';5.e(\'W\',\'V(\'+4.t.s(\'D\')+\') R-Y\');4.f=$(g).s(\'11\')-1;F(5,d,3,\'1l\')})}6(3.1M){$(2q).2A(9(1L){6(1L.1Z==\'2C\'){6(4.N)I m;S(l);l=\'\';4.f-=2;F(5,d,3,\'1C\')}6(1L.1Z==\'2D\'){6(4.N)I m;S(l);l=\'\';F(5,d,3,\'1A\')}})}6(3.1T){5.25(9(){4.1k=Q;S(l);l=\'\'},9(){4.1k=m;6(l==\'\'&&!3.1i){l=1v(9(){F(5,d,3,m)},3.1m)}})}5.2E(\'7:Z\',9(){4.N=m;$(d).E(9(){6($(g).K(\'a\')){$(g).e(\'P\',\'1h\')}});6($(d[4.f]).K(\'a\')){$(d[4.f]).e(\'P\',\'1w\')}6(l==\'\'&&!4.1k&&!3.1i){l=1v(9(){F(5,d,3,m)},3.1m)}3.1U.1z(g)})});9 F(5,d,3,19){b 4=5.1S(\'7:4\');6((!4||4.1N)&&!19)I m;3.1W.1z(g);6(!19){5.e(\'W\',\'V(\'+4.t.s(\'D\')+\') R-Y\')}n{6(19==\'1C\'){5.e(\'W\',\'V(\'+4.t.s(\'D\')+\') R-Y\')}6(19==\'1A\'){5.e(\'W\',\'V(\'+4.t.s(\'D\')+\') R-Y\')}}4.f++;6(4.f==4.U){4.f=0;3.1V.1z(g)}6(4.f<0)4.f=(4.U-1);6($(d[4.f]).K(\'B\')){4.t=$(d[4.f])}n{4.t=$(d[4.f]).1g(\'B:1s\')}6(3.M){$(\'.7-M a\',5).2F(\'1o\');$(\'.7-M a:1B(\'+4.f+\')\',5).1n(\'1o\')}6(4.t.s(\'16\')!=\'\'){6($(\'.7-H\',5).e(\'P\')==\'1w\'){$(\'.7-H p\',5).22(3.q,9(){$(g).1y(4.t.s(\'16\'));$(g).1x(3.q)})}n{$(\'.7-H p\',5).1y(4.t.s(\'16\'))}$(\'.7-H\',5).1x(3.q)}n{$(\'.7-H\',5).22(3.q)}b i=0;$(\'.7-c\',5).E(9(){b G=X.27(5.w()/3.h);$(g).e({x:\'O\',y:\'0\',W:\'V(\'+4.t.s(\'D\')+\') R-Y -\'+((G+(i*G))-G)+\'13 0%\'});i++});6(3.k==\'1t\'){b 10=2G 2B("1K","14","1F","17","1E","12","1D","1r");4.o=10[X.26(X.1t()*(10.1j+1))];6(4.o==2y)4.o=\'1r\'}6(3.k.2o(\',\')!=-1){b 10=3.k.2r(\',\');4.o=$.2z(10[X.26(X.1t()*10.1j)])}4.N=Q;6(3.k==\'2p\'||3.k==\'1K\'||4.o==\'1K\'||3.k==\'14\'||4.o==\'14\'){b u=0;b i=0;b h=$(\'.7-c\',5);6(3.k==\'14\'||4.o==\'14\')h=$(\'.7-c\',5).1e();h.E(9(){b c=$(g);c.e(\'1G\',\'O\');6(i==3.h-1){L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q,\'\',9(){5.18(\'7:Z\')})},(r+u))}n{L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q)},(r+u))}u+=1u;i++})}n 6(3.k==\'2t\'||3.k==\'1F\'||4.o==\'1F\'||3.k==\'17\'||4.o==\'17\'){b u=0;b i=0;b h=$(\'.7-c\',5);6(3.k==\'17\'||4.o==\'17\')h=$(\'.7-c\',5).1e();h.E(9(){b c=$(g);c.e(\'23\',\'O\');6(i==3.h-1){L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q,\'\',9(){5.18(\'7:Z\')})},(r+u))}n{L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q)},(r+u))}u+=1u;i++})}n 6(3.k==\'1E\'||3.k==\'2u\'||4.o==\'1E\'||3.k==\'12\'||4.o==\'12\'){b u=0;b i=0;b v=0;b h=$(\'.7-c\',5);6(3.k==\'12\'||4.o==\'12\')h=$(\'.7-c\',5).1e();h.E(9(){b c=$(g);6(i==0){c.e(\'1G\',\'O\');i++}n{c.e(\'23\',\'O\');i=0}6(v==3.h-1){L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q,\'\',9(){5.18(\'7:Z\')})},(r+u))}n{L(9(){c.A({x:\'r%\',y:\'1.0\'},3.q)},(r+u))}u+=1u;v++})}n 6(3.k==\'1D\'||4.o==\'1D\'){b u=0;b i=0;$(\'.7-c\',5).E(9(){b c=$(g);b 1H=c.w();c.e({1G:\'O\',x:\'r%\',w:\'O\'});6(i==3.h-1){L(9(){c.A({w:1H,y:\'1.0\'},3.q,\'\',9(){5.18(\'7:Z\')})},(r+u))}n{L(9(){c.A({w:1H,y:\'1.0\'},3.q)},(r+u))}u+=1u;i++})}n 6(3.k==\'1r\'||4.o==\'1r\'){b i=0;$(\'.7-c\',5).E(9(){$(g).e(\'x\',\'r%\');6(i==3.h-1){$(g).A({y:\'1.0\'},(3.q*2),\'\',9(){5.18(\'7:Z\')})}n{$(g).A({y:\'1.0\'},(3.q*2))}i++})}}};$.1f.1q.2c={k:\'1t\',h:15,q:2x,1m:2w,1a:0,T:Q,2d:Q,M:Q,20:m,1Q:m,1R:\'.1O\',1P:\'2v.1O\',1M:Q,1T:Q,1i:m,1Y:0.8,1W:9(){},1U:9(){},1V:9(){}};$.1f.1e=[].1e})(2s);',62,167,'|||settings|vars|slider|if|nivo||function||var|slice|kids|css|currentSlide|this|slices||child|effect|timer|false|else|randAnim||animSpeed|100|attr|currentImage|timeBuff||width|height|opacity|class|animate|img|div|src|each|nivoRun|sliceWidth|caption|return|append|is|setTimeout|controlNav|running|0px|display|true|no|clearInterval|directionNav|totalSlides|url|background|Math|repeat|animFinished|anims|rel|sliceUpDownLeft|px|sliceDownLeft||title|sliceUpLeft|trigger|nudge|startSlide|nivoControl|childWidth|childHeight|reverse|fn|find|none|manualAdvance|length|paused|control|pauseTime|addClass|active|link|nivoSlider|fade|first|random|50|setInterval|block|fadeIn|html|call|next|eq|prev|fold|sliceUpDown|sliceUpRight|top|origWidth|click|live|sliceDownRight|event|keyboardNav|stop|jpg|controlNavThumbsReplace|controlNavThumbsFromRel|controlNavThumbsSearch|data|pauseOnHover|afterChange|slideshowEnd|beforeChange|options|captionOpacity|keyCode|controlNavThumbs|left|fadeOut|bottom|hide|hover|floor|round|alt|nextNav|prevNav|for|defaults|directionNavHide|hasClass|Prev|relative|position|extend|children|imageLink|show|Next|replace|indexOf|sliceDown|window|split|jQuery|sliceUp|sliceUpDownRight|_thumb|3000|500|undefined|trim|keypress|Array|37|39|bind|removeClass|new'.split('|'),0,{}));

// MASTER JS
// SWFobject for IPS by sveinung@idium.no Feb 2010
(function f(b){var d=window.ips=window.ips||{},c=b||{loading:false},e;if(d.queue===undefined)d.queue=[];if(typeof window.swfobject!=="undefined"&&typeof window.swfobject.embedSWF!=="undefined")c.loading=false;else if(d.queue.length>0){if(c.loading===false){b=document.createElement("script");b.type="text/javascript";b.async=true;b.src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js";(document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]).appendChild(b); c.loading=true}e=setTimeout(function(){f(c)},50)}if(c.loading===false&&d.queue.length>0)for(b=0;b<d.queue.length;b++){var a=d.queue[b];if(!a.loaded){a.loaded="true";swfobject.embedSWF(a.url,a.element,a.width,a.height,a.version,a.expressInstall,a.flashvars,a.params,a.attributes)}}if(c.loading===false&&typeof window.jQuery!=="undefined")e=setTimeout(function(){jQuery(document).one("ajaxStart",function(){e=setTimeout(function(){f(c)},100)})},2E3)})();

/*
 * jQuery Idium PageLinks by Sveinung Røsaker (c) 29.06.2010
 * Use: jQuery("ul.nav_media,.summary_group").pageLinks();
 * Use: jQuery("ul.nav_media,.summary_group").pageLinks({items:10});
 *
 * Should output same markup as ips:pagelinks. Work in progress
 *
 * Todo:
 * 1 ) Add super links 
 * 2 ) Add positioning/insert
 * 3 ) Custom Link URLS / Actions
 * 4 ) Overridable functions
 * 5 ) Add sorting
*/
/*jQuery.easyTemplate = function(text) {
  
};*/

jQuery.fn.pageLinks = function(opt){
  var defaults = {
    selector         : "> div, > li", // default child, 
    sow_items        : true, //todo
    items            : 10,             // ítems per page
    pages            : 5,             // links before and after current, range
    wrap             : "",            // elem, e.g. "<div />" or "<li />"
    //insert         : "after",       // after, before, selector TODO
    //overview_pages :   2,           // super links
    overview         : true, // todo
    OVERVIEW_TEXT    : 'Viser #{index} av totalt #{total} artikler', // todo
    show_prev        : true,
    show_next        : true,
    show_prev_always : true,
    show_next_always : true,
    prev_text        : "Forrige",
    next_text        : "Neste",
    //elipse_text    : "...",
    CURRENT_CLASS    : 'active',
    PAGINATOR_CLASS  : 'paginator'     // must be single class
    //onBeforeLoad   :  function(){},  // before loading next page
    //onLoad         :  function(){},  // after loading page
    //callback       :  function(){}   // ?
  };
 
  var settings = jQuery.extend({}, defaults, opt);

  // Generates pagelinks and inserts into or replaces dom
  function paginate(state){
    var $paginator = state.$container.find("." + settings.PAGINATOR_CLASS),
        result = '<ul class="clearfix">',
        i = state.startPage(),
        stop = state.endPage(); 

     // Output previous link
     if (settings.show_prev && (state.currentPage - 1 > 0 || settings.show_prev_always)) {
        result += '<li class="prev"><a href="#' + (state.currentPage - 1 <= 0 ? 1 : state.currentPage - 1);
        result += '">'+settings.prev_text+'</a></li>';
     }

     // Output links
     for(i; i < stop +1; i++){
       if ( state.currentPage === i ){
         result += '<li><a href="#' + i + '" class="' + settings.CURRENT_CLASS + '">';
         result += i + '</a></li>';
       } else {
         result += '<li><a href="#' + i + '">' + i + '</a></li>';
       }
     }

     // Output next link
     if (settings.show_next && (state.currentPage < stop || settings.show_next_always)) {
        result += '<li class="next""><a href="#' + (state.currentPage + 1 > stop ? stop : state.currentPage + 1);
        result += '">'+settings.next_text+'</a></li>';
     }
     result += "</ul>";

     // Make a selector var, so we can wrap and add outer class
     var $result = $(result);

     // Wrap ul in wrap element
     if (settings.wrap !== "") {
	   $result = $(settings.wrap).append($result);
     }
     // Add class to outer element
     $result.addClass(settings.PAGINATOR_CLASS);

     // Insert or output into DOM
     if ( $paginator.size() ) {
        $paginator.replaceWith( $result );
     } else {
        state.$container.append( $result );
     }
     return state;
  }
  // Updates visible items
  function render(state){
	// make local vars to check against arrays, therefore -1 for index
    var from = state.startItem() - 1,
        to = state.stopItem() - 1;
    state.$children.hide().filter(function(index){
      return index >= from ? !(index > to) ? true : false : false;
    }).show();
    return state;
  }
  // iterate each selector
  this.each(function(){
     // Stateobject
     var $elem = $(this), $children = $elem.find(settings.selector).filter(":not(.paginator)");
     var state = {
	     $container  : $elem,
	     $children   : $children,
       currentPage : 1,
       pagesBefore : Math.floor( (settings.pages - 1) / 2 ),
       pagesAfter  : Math.ceil( (settings.pages - 1) / 2 ),
       totalItems  : $children.length,
       totalPages  : Math.ceil($children.length / settings.items),
       startItem   : function(){ 
         return (this.currentPage * settings.items) - settings.items + 1; 
       },
       stopItem    : function(){ 
         return this.startItem() - 1 + settings.items; 
       },
       // Returns unused pages in range of "pages" before active/current
       bufferBefore: function(){
         var sum = -(this.currentPage - this.pagesBefore - 1);
         return sum > 0 ? sum : 0;
       },
       // Returns unused pages in range of "pages" after active/current
       bufferAfter : function(){
         var sum = (this.currentPage + this.pagesAfter) - this.totalPages;
         return sum > 0 ? sum : 0;
       },
       startPage   : function(){
         var sum = this.currentPage - this.pagesBefore - this.bufferAfter();
         return sum <= 0 ? 1 : sum;
       }, 
       // returns end page within scope/range of total pages
       endPage     : function(){ 
         var sum = this.totalPages   - this.currentPage <= 0 ? this.totalPages : 
                (this.currentPage + this.pagesAfter) >= this.totalPages ? this.totalPages : 
                this.currentPage  + this.pagesAfter  +  this.bufferBefore(); 
         return sum >= this.totalPages ? this.totalPages : sum;
       }    
     };

     // Check if total items is less than items per page
     if (state.totalItems > settings.items) {
         // init
         paginate(state); 
         render(state); 

         // click handler
         state.$container.delegate("." + settings.PAGINATOR_CLASS + " a","click", function(e){
	       e.preventDefault();
           var next = $(this).attr("href").substring(1) *1;
           if (next !== state.currentPage) {
               state.currentPage = next;
               paginate(state); 
	           render(state);
           }
         });
     }
  });
};




//master.js
jQuery(document).ready(function($) {

  // UTILITY
  var base = ips.system.base; //cache as local variable
  var strings = ips.strings;

  // EVENT DELEGATION - Not touching dom until click
  $(".externalLink").live("click", function() {
    $(this).attr("target", "_blank");
  });
  var $searchForm = $("#employee_search");
  $searchForm.submit(function() {
    var $this = $(this);
    window.location = $this.attr("action") + "#" + $searchForm.find("input[value!=''], select[value!='']").serialize();
    return false;
  });

  /*
    Frontpage
  */
  if ( $("body.view_frontpage").size() ) {

    var EMPTY_LI   = '<li class="placeholder"><a href="#">&#160;</a></li>',
        more_string = '<li class="dropdown_fields"><a class="dropdown_fields" href="#">' + strings.morefields  + '</a></li>';
    $(".subfolders").each2(function(i, $this){
      var $childrenToHide = $this.find("li.folder:gt(4)"), 
          csize     = $childrenToHide.size(),
          size      = $this.find("li.folder").size();
      // if to meny list, make a fake dropdowns
      if ( csize > 0) {
        var str = "";
        if (csize > 5) {
          str += "<div class='dp_wrap clearfix big' style='display:none;'>";
          str += "<div class='up'></div><div class='down'></div>";
        } else {
          str += "<div class='dp_wrap clearfix' style='display:none;'>";
        }
        str += "<ul class='clearfix'></ul>";
        str += "</div>";
        // 
        var mouseleavetimer, mouseentertimer;
        $(more_string)
          .insertAfter( $this.find("li.folder:last") )
          .find("a.dropdown_fields").click(function(e){
            e.preventDefault();
            var $elem = $(this).parent().find(".dp_wrap");
            if ($elem.is(":visible")) {
              $elem.slideUp();
            } else {
              $elem.slideDown();
            }
            //console.log("clicked");
        }).parent().mouseenter(function(e){
            e.preventDefault();
            var $elem = $(this).find(".dp_wrap");
            clearInterval(mouseleavetimer);
            mouseentertimer = setTimeout(function(){
              $elem.slideDown();
            }, 500)
        }).mouseleave(function(e){
            e.preventDefault();
            clearInterval(mouseentertimer);
            var $elem = $(this).find(".dp_wrap");
            mouseleavetimer = setTimeout(function(){
              $elem.slideUp();
            }, 1000)
        }).end().parent().append( str );
        $childrenToHide.clone().appendTo($this.find("ul"));
        $childrenToHide.hide();
        if (csize > 5) {

          $this.find(".up").bind("mouseenter", function(){
            var $ul = $(this).parent().find("ul"),
                top = parseInt($ul.css("top"));  
            if ( top < 0 ) $ul.animate({"top": 15 }, 1000);              

          }).bind("mouseleave", function(){
            $(this).parent().find("ul").stop();
          });

          $this.find(".down").bind("mouseenter", function(){
            var $ul = $(this).parent().find("ul"),
                top = parseInt($ul.css("top"));
            if ( -(top) < ($ul.height() - 175) ) {
                $ul.animate({"top": -($ul.height() - 175) }, 1000);  
            }

          }).bind("mouseleave", function(){
            $(this).parent().find("ul").stop();
          });

        }
      } else {
        var list = "";
        for (var i = size ; i < 6; i ++) {
          list += EMPTY_LI;
        }
        $(list).insertBefore( $this.find("li:last") ).parent().find(".placeholder:last").addClass("last");
      }
    });
    
  }

  /*
    Meneskene / People
  */
  if ($("body").hasClass("view_people")) {
    var $content = $("#content"),
      $empoyeeLi = $content.find("li:not(.index)"),
      $index = $content.find("li.index"),
      scollToResult = true,
      $result = $empoyeeLi,
      $searchField = $searchForm.find("input.query"),
      $query_summary = $(".query_summary");
    //
    $("#aside").delegate("input", "click", function() {
      if ($(this).val() != "") {
        var state = {};
        state[$(this).attr("name")] = $(this).val();
        jQuery.bbq.pushState(state);
      } else {
        jQuery.bbq.removeState($(this).attr("name"));
      }
    });
    // TODO: add onchange event to dropdowns
    $("#employee_search").delegate("select", "change", function() {
      scollToResult = false;
      if ($(this).val() != "") {
        var state = {};
        state[$(this).attr("name")] = $(this).val();
        jQuery.bbq.pushState(state);
      } else {
        jQuery.bbq.removeState($(this).attr("name"));
      }
    });
    var updateShowing = function(count, query) {
      //console.log('count',count,' query:', query);
      if (query) {
        var str = ips.system.lang == 'no' ? "Filtrert basert p\u00E5 " : "Filtered based on ";
        $query_summary.addClass('active').text(str + query + ". ");
      } else if (count != 0){
        // Reset text
        $query_summary.removeClass('active').text('');
      }
      $(".showing").text(count);
      if (count == 0) {
        $query_summary.addClass('active').text('Ingen treff').fadeOut().fadeIn();
        $(window).scrollTo(111, 700);
      }
    }
    // Live search
    $searchField.quicksearch('#content li:not(.index)', {
      'delay': 10,
      'bind': 'keyup',
      'onBefore': function(){
        $index.hide();
        $("#content2").hide();
        $content.show();
      },
      'onAfter': function() {
        updateShowing($result.filter(".visible.query_hit").size(), $searchField.val());
      },
      'show': function() {
        if ($(this).hasClass("visible")) {
          //console.log("showing", $(this));
          $(this).addClass('query_hit').removeClass('non_query_hit');
        }
      },
      'hide': function() {
        if ($(this).hasClass("visible")) {
          $(this).addClass('non_query_hit').removeClass('query_hit');
        }
      }
    });
    // posible to remove
    $query_summary.bind("click", function(e) {
      $result.removeClass('query_hit').removeClass('non_query_hit');
      // Reset text
      $query_summary.removeClass('active').text("");
      $searchField.val("");
      // Remove query state if it is present
      $.bbq.removeState("query");
      $("#employee_search .query").keyup();
      updateShowing($result.filter(".visible").size());
      return false;
    });
    //
    var eventsLoaded = false;
    var lastState;
    $(window).bind("hashchange", function(e) {
      e.preventDefault();
      var state = e.getState();
      /*
        state.user must be removed when more filtering
        state.* must activate when fresh url
  
        Sorting: competence, office, position
        Filtreringen skjuler alle som ikke treffer, "all" gjør ingenting.
      */
      var lastState_IsNotEqualTo_NewState = !!(lastState) && (lastState.competence != state.competence 
                    || lastState.department != state.department 
                    || lastState.position != state.position 
                    || lastState.user != state.user)
      var noStates = !((state.competence) || (state.department) || (state.position))
      //console.log('Last state is not equal to new state if false:', lastState_IsNotEqualTo_NewState)
      if (!state.user && (!lastState || lastState_IsNotEqualTo_NewState || noStates)) {
        var showElementsWithClass = "",
            cVal = (state.competence || 'competence_all'),
            dVal = (state.department || 'department_all'),
            pVal = (state.position   || 'position_all');
        showElementsWithClass += '.' + cVal;
        showElementsWithClass += '.' + dVal;
        showElementsWithClass += '.' + pVal;
        $("#content2").hide();
        $content.hide();
        if (noStates) {
          $result = $empoyeeLi.addClass("visible");
          $index.show()
        } else {
          $index.hide()
          $result = $empoyeeLi.removeClass("visible").filter(showElementsWithClass).addClass("visible");
        }
        $content.show();
        // Show result
        //console.log($result.size(), $result.filter(".visible:visible").size())
        updateShowing($result.filter(".visible:visible").size())
        // Scroll window to result, change event on dropdown dont want scrolling
        if (scollToResult) {
          $(window).scrollTo(111, 700);
        } else {
          // Reset
          skipScroll = true;
        }
        
        // set correct checkboxes/selects for competence
        if(cVal.indexOf('_all') != -1) cVal = '';
        $("input[name=competence][value=" + cVal + "]").attr("checked", "checked");
        $("select[name=competence] option[value='" + cVal + "']").attr("selected", "selected").change();

        // set correct checkboxes/selects for department
        if(dVal.indexOf('_all') != -1) dVal = '';
        $("input[name=department][value=" + dVal + "]").attr("checked", "checked");
        $("select[name=department] option[value='" + dVal + "']").attr("selected", "selected").change();

        // position, only checkboxes in layout
        if (state.position || ips.system.parameters.position) {
          $("input[name=position][value=" + pVal + "]").attr("checked", "checked");
        }
      }
      // query the dom another time, timeconsuming?
      if (state.query) {
        $searchField.val(state.query);
        $.bbq.removeState("query");
      }
      // Do not trigger keyup if in userview
      if (!state.user && $searchField.val().substring(1) != "") {
        // Todo, why doesnt this work if we dont wait?
        setTimeout(function() {
          $("#employee_search .query").keyup();
        },
        1000);
      }

      // If user is already present, remove it. New states removes user view.
      if (lastState_IsNotEqualTo_NewState && (lastState && lastState.user === state.user)) {
        // Removing user...
        $.bbq.removeState("user");
        // Show user view
      } else if (state.user) {
        if (!$("#content2").size()) {
          $("<div id='content2' class='content clearfix'></div>").insertAfter("#content");
        }
        if ( !(eventsLoaded) ) {
          eventsLoaded = true;
          $(document).keydown(function(e){
            if ( $("#content2:visible").size() ) {
              if (e.keyCode == 37) {
                $("a.prev").click();
              } else if (e.keyCode == 39) {
                $("a.next").click();
              }
            }
          });
        }
        var $userLi = $("." + state.user);
        $.get($userLi.find("a").attr("href") + "?get=content", function(data) {
          $content.hide();
          var prev = $userLi.prevAll(".visible").eq(0).find("a").attr("rel");
          var next = $userLi.nextAll(".visible").eq(0).find("a").attr("rel");
          var pager = "<ul class='search_helper'>";
          pager += "<li><a href='#back' class='back_to_search'>" + strings.backtosearch + "</a></li>";
          if (prev) {
            pager += "<li class='prev'><a href='#" + prev + "' class='prev'>" + strings.previous + "</a></li>";
          } else {  
            pager += "<li class='prev'>" + strings.previous + "</li>";
          }
          if (next) {
            pager += "<li class='next'><a href='#" + next + "' class='next'>" + strings.next + "</a></li></ul>";
          } else {  
            pager += "<li class='next'>" + strings.next + "</li></ul>";
          }
          $("#content2").html(data).prepend(pager).show("fast");
          $(window).scrollTo(111, 300);
          // Reposition paginator when images are ready
          setTimeout(function(){
            //console.log($(".editorelement").position().top)
            $('.search_helper').animate({
                'top': $(".editorelement").position().top
            });
          },200);
        });
      }
      // Save last state
      lastState = state;
      
      // Update classes
      // remove selected on li in sort_section
      $(".sort_section li").removeClass("active");
      
      $(".sort_section input:checked").each2(function(i, jq){
        jq.parent().addClass('active');
      });
    });
    if (ips.system.parameters.action == "User.publicOpen") {
      // Navigated user, on init hide content.
      $content.hide();
    } else {
      $(window).trigger("hashchange"); // init  
    }

    // Load full user on click, and make prev and next links, and back to overview
    $(".people_result").delegate("li a", "click", function(e) {
      e.preventDefault();
      $.bbq.pushState({
        user: $(this).attr("rel")
      });
    });
    $(".content_container").delegate("#content2 a.back_to_search", "click", function(e) {
      e.preventDefault();
      $("#content2").hide()
      $content.show()
      $.bbq.removeState("user");
      $(window).scrollTo(111, 700);
    }).delegate("a.prev,a.next", "click", function(e) {
      e.preventDefault();
      var href = $(this).attr("href");
      $.bbq.pushState({
        user: href.substring(href.indexOf("#") + 1, href.length)
      });
    });

  } //end if

  //Fancy Selectboxes
  (function($) {
    $.fn.bSelect = function(options) {
      options = $.extend({}, $.fn.bSelect.defaults, options);

      return this.each(function(){
        var $select = $(this).hide(),
            $opts = $select.find("option"),
            selopt = 0,
            timer;
            
        // Generate markup
        var code = "<ul class='bselect' rel=" + $select.attr("id") + ">";
        $opts.each(function(i) {
          var $cur = $(this).attr("id","opt" + i );
          if(i == 0) {
            code += "<li class='selected' rel='opt"+i+"'>" + $cur.text() + "<span></span></li>";
          } else {
            code += "<li rel='opt"+i+"'>" + $cur.text() + "<span></span></li>";
          }
        });
        code += "</ul>";

        // Insertmarkup
        var $list = $(code).insertAfter($select)
        // Bind handlers
        .bind("click", function(e) {
          if ($list.hasClass("expanded")) {
            $list.removeClass("expanded");
            // Add attribute to original select
            $(this).prev().find("option[id=" + $(e.target).attr('rel') + "]").attr("selected", "selected").change();

            // Animate container back to original size
            $list.animate({
              "height": options.minheight
            }, options.speed);
            $("ul.bselect").scrollTop(0);

          } else {
            $list.addClass("expanded");
            $list.animate({
              "height": options.maxheight
            }, options.speed);
          }
        // End clickhandler
        // Bind event for leacing
        }).mouseleave(function() {
          timer = setTimeout(function(){
            if ($list.hasClass("expanded")) {
              $list.removeClass("expanded");
              $list.animate({
                "height": options.minheight
              }, options.speed);
            }
          }, options.timer);
        }).mouseenter(function(){
          clearInterval(timer);
        });
        //$select.hide(); // Hides original select

        $list.prev().bind('change', function() {
          var selectId = $select.find("option:selected").attr("id");
          var $li = $(this).next("ul")
            .find("li[rel=" + selectId + "]")
            .addClass("selected");
          var $parent = $li.parent();
          $li.siblings().removeClass("selected");
          $li.detach().prependTo($parent);
        });
      });
    };
    $.fn.bSelect.defaults = {};
  })(jQuery);

  var bSetup = { "minheight" : "19", "maxheight" : "91", "speed" : "fast", "timer" : 2000 }
  $("select[name='competence']").bSelect(bSetup);
  $("select[name='department']").bSelect(bSetup);


  // IPS FORM validation by sveinung@idium.no March 2010
  $("body").delegate("form", "submit", function(e) {
    var $this = $(this),
      formid = $this.attr("id") + "",
      errors = [];
    // Start validation object
    //fix broken objects
    
    var ips = window.ips = window.ips || {};
    ips.validate = ips.validate || {};
    ips.validate[formid] = ips.validate[formid] || {};
    //end fix broken objects
    // Reset, and FIND/QUERY viable <li> tags. Must be typical <li> with input. If different, change next find().
    $this.find("span.error").remove().end().find("li:not(.submit,.form_labelfield)").removeClass("error")
    // START each - > iterate li`s
    .each(function(i) {
      // Needed vars and Cache selectors for convenience and "speed"
      var $li = $(this),
        $nextLi = $li.next(),
        $prevLi = $li.prev(),
        $field = $li.find("input,textarea,select").eq(0),
        fid = $field.attr("id"),
        fieldval = $field.val(),
        errorObj = {
        "id": fid,
        "$elem": $li,
        "message": ""
      };
      // Utilty function for checking regex values
      var checkFunc = function(regexObj, thisval, message, errorObj) {
        if (!regexObj.test(thisval)) {
          errorObj.message = message;
        } else {
          errorObj.valid = true; // used to make this rule more important than classes
        }
        return errorObj;
      };
      // Iterating and validation all regexes in the general object
      $.each(ips.validate.general, function(property) {
        if ($li.hasClass(property) && this.regex !== undefined) {
          errorObj = checkFunc(this.regex, fieldval, this.message, errorObj);
        }
      });
      // Check for validation object
      if (ips.validate[formid][fid] !== undefined && ips.validate[formid][fid].regex !== undefined) {
        var fieldvalObj = ips.validate[formid][fid],
          errorMgs = fieldvalObj.message !== undefined ? fieldvalObj.message : ips.strings.notvalid;
        errorObj = checkFunc(new RegExp(fieldvalObj.regex), fieldval, errorMgs, errorObj);
      } else {
        //fix missing objects
        ips.validate[formid][fid] = {};
      }
      if ($li.hasClass("form_password") && errorObj.message === '') {
        errorObj = checkFunc(ips.validate.general.password.regex, fieldval, ips.validate.general.password.message, errorObj);
        if (errorObj.message === "" && fieldval !== $li.find(".confirm").val()) {
          errorObj.id = $li.find(".confirm").attr("id");
          errorObj.message = ips.validate.general.password.message;
        }
      }
      // Check username if form has class .loggedout -> Forms get resubmitted if error from server
      if ($this.hasClass("loggedout") && $li.hasClass("username") && !(errorObj.valid)) {
        var searchedUsername = $.data($field[0], "username"),
          // get "cacge"
        availFromPrevSubmit = $.data($field[0], "avail"); // get "cache"
        $.data($field[0], "username", fieldval); // write "cache"
        // Check if new desired username isnt equal to previous ones or if no username has been checked
        if ((fieldval !== searchedUsername) || (availFromPrevSubmit === null)) {
          // Async - check param, then set value on elem and resubmit form
          $.get(ips.system.base + "?module=Users&amp;action=Ajax.isUsernameAvailable&amp;username=" + fieldval, function(data) {
            $.data($field[0], "avail", data);
            // 'false' is serverresponse in plain text
            if (data == 'false') {
              setTimeout(function() {
                $this.submit();
              },
              100);
            }
          });
        } else {
          // check if this is checked and username is not avail === false
          if (availFromPrevSubmit == "false") {
            errorObj.message = ips.strings.usernamenotavail;
          }
        }
      }
      // Check custom class, and recheck _class
      var testCustom = /required_if_not_([a-zA-Z0-9]+)/.exec($li.attr("class"));
      if (testCustom && testCustom[1] && testCustom[1] !== '') {
        if ($("." + testCustom[1]).find("input,textarea,select").eq(0).val() == '') {
          // if other field has no value, this field is required
          $li.addClass("required");
        } else {
          // if other field has value, this field isnt required
          $li.removeClass("required");
        }
        // check if .required and 
      } else if (fieldval === '' && $li.hasClass("required")) {
        // If not already a error - add a error message
        if (errorObj.message === '') {
          errorObj.message = ips.strings.cannotbeempty;
        }
      } else if ($li.hasClass("required") && errorObj.message === '') {
        // if checkbox is required
        if ($field.is("input[type=checkbox]") && $field.attr("checked") === false) {
          errorObj.message = ips.validate[formid][fid].message || ips.strings.mustbechecked;
        }
      }
      // Todo, ADD : requiredIf - (e.g. email, checkbox )
      // Check for customclasses 'isequaltonext' and 'isequaltoprev' - > is in lowercase bacause of ips:classify
      if ($li.hasClass('isequaltonext') || $nextLi.hasClass('isequaltoprev')) {
        if (fieldval !== $nextLi.find("input").val()) {
          errorObj.message = $li.find("label").text() + ips.strings.mustbeequalto + $nextLi.find("label").text();
        }
      } else if ($li.hasClass('isequaltoprev') || $prevLi.hasClass('isequaltonext')) {
        if (fieldval !== $prevLi.find("input").val()) {
          errorObj.message = $li.find("label").text() + ips.strings.mustbeequalto + $prevLi.find("label").text();
        }
      }
      // Field is not required, NO error-msg should be generated
      if (fieldval === '' && !($li.hasClass("required"))) {
        errorObj.message = '';
      }
      // Push this errorObj if there is a message defined
      if (errorObj.message !== undefined && errorObj.message !== '') {
        errors.push(errorObj);
      }
    }); //END each li`s
    if (ips.system.parameters.debug) {
      console.log(errors);
    } // Process errors if there is any
    if (errors.length > 0) {
      $(errors).each(function(i) {
        var $errorField = this.$elem.addClass("error").find("input,textarea,select").eq(0);
        if (i === 0) {;
          $errorField.focus();
        }
        $("<span class='error'>" + this.message + "</span>").insertAfter($errorField);
      });
      return false;
    }
  });
  // Possible to click the errors away
  $("span.error").live("click", function() {
    $(this).fadeOut();
  });
  //FORM END
  
  jQuery(".archive_list").pageLinks({wrap:"<li class='pagelinks' />"});
});

$(window).load(function(){
  $('.slideshow').nivoSlider({pauseTime:5000, controlNav:true});
});
