/**
 * @module    lbi
 * @version   1.00.091211
 * @requires  jQuery 1.3+
 * @author    LBi Lost Boys
 */
var LBi=(function($){var j='function';var k='string';var m=function(a){switch(typeof a){case j:return a.call(m,$);case k:m.log(a);break}};$.extend(m,{subscribe:function(a,b){m.Dispatcher.subscribe(a,b)},unsubscribe:function(a,b){m.Dispatcher.unsubscribe(a,b)},setCookie:function(a,b,c){var d=c||{};var e=new Date();e.setTime(e.getTime()+((d.expires||14)*86400000));var f='; expires='+e.toUTCString();var g='; path='+(d.path||'/');var h=d.domain?('; domain='+d.domain):'';var i=d.secure?'; secure':'';document.cookie=a+"="+encodeURIComponent(b)+f+g+h+i},getCookie:function(a){var b=new RegExp(a+'=([^;$]+)','i');var c=b.exec(document.cookie);return(c&&c[1])?decodeURIComponent(c[1]):''},namespace:function(a,b){var c=a.split('.');var l=c.length;var d=this;for(var i=0;i<l;i++){var e=c[i];var f=i===(l-1);if(f){if(d[e]){throw Error('Namespace "'+e+'" is already defined');}else{d[e]=b}}else if(!d[e]){throw Error('Namespace "'+e+'" in "'+a+'" is not defined');}d=d[e]}},AbstractMethod:function(){throw new Error('Method not implemented');},log:function(){try{console.log.apply(console,arguments)}catch(fail){}}});var n={extend:function(a,constructor,b){var c=function(){a.apply(this,arguments);if(constructor){constructor.apply(this,arguments)}};this.implement(c,a.prototype);if(b){this.implement(c,b)}c.prototype.constructor=c;return c},implement:function(a,b){for(var i in b){if(typeof i===k){a.prototype[i]=b[i]}}}};m.namespace('Class',n);Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}};var o=Array.prototype;if(!o.map){o.map=function(a,b){var c=[];var l=this.length;for(var i=0;i<l;i++){if(i in this){c[i]=a.call(b,this[i],i,this)}}return c}}if(!o.forEach){o.forEach=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this){a.call(b,this[i],i,this)}}}}if(!o.filter){o.filter=function(a,b){var c=[];var l=this.length;for(var i=0;i<l;i++){if(i in this){var d=this[i];if(a.call(b,d,i,this)){c.push(d)}}}return c}}if(!o.some){o.some=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this&&a.call(b,this[i],i,this)){return true}}return false}}if(!o.every){o.every=function(a,b){var l=this.length;for(var i=0;i<l;i++){if(i in this&&!a.call(b,this[i],i,this)){return false}}return true}}if(!o.indexOf){o.indexOf=function(a,b){var l=this.length;var c=b||0;if(b<0){c=l-b}for(var i=c;i<l;i++){if(i in this&&this[i]===a){return i}}return-1}}if(!o.lastIndexOf){o.lastIndexOf=function(a,b){var l=this.length-1;var c=b||l;if(b<0){c=l-b}for(var i=c;i>=0;i--){if(i in this&&this[i]===a){return i}}return-1}}var p=function(){this.stack={}};p.prototype={constructor:p,put:function(a,b){this.stack[a]=b},get:function(a){return this.stack[a]},getKeys:function(){var a=[];for(var i in this.stack){if(typeof i===k){a.push(i)}}return a},remove:function(a){delete this.stack[a]},clone:function(){var a=new p();for(var i in this.stack){if(typeof i===k){a.add(i,this.get(i))}}return a},clear:function(){this.stack={}},size:function(){var a=0;for(var i in this.stack){if(typeof i===k){a++}}return a},containsKey:function(a){return this.stack[a]?true:false},containsValue:function(a){for(var i in this.stack){if(typeof i===k&&this.stack[i]===a){return true}}return false}};m.namespace('HashMap',p);var q={select:function(a,b){try{if(b.evaluate){return b.evaluate(a,b,null,0,null)}else if(document.evaluate){return document.evaluate(a,b,null,0,null)}else{return new q.Result(b.selectNodes(a))}}catch(e){return null}},Result:function(a){var b=0;this.iterateNext=function(){return a[b++]}}};m.namespace('XPath',q);var r=function(a){this.set(a)};r.prototype={constructor:r,parse:function(a){if(!a){throw Error('No data provided');}var b=this.template;if(!b){throw Error('The template is not specified');}var c='$';for(var d in a){if(typeof d===k){b=b.replace(c+d,a[d])}}return b},set:function(a){this.template=a},get:function(){return this.template}};m.namespace('Template',r);$.extend($,{registerPlugin:function(b,c){var d={};var e=[];d[b]=function(a){for(var i=0;i<this.length;i++){e.push(new c(this[i],a))}return this};$.extend($.fn,d);return e}});var s=function(a,b,c,e){this.type=a;this.target=b;this.data=c||{};this.event=e;this.returnValue=true;if(e){var d=s.Whitelist;for(var f in d){if(d[f]){(this[f]=e[f])}}}};s.prototype={constructor:s,preventDefault:function(){this.returnValue=false;if(this.event){this.event.preventDefault()}},isDefaultPrevented:function(){return this.event?this.event.isDefaultPrevented():!this.returnValue},stopPropagation:function(){if(this.event){this.event.stopPropagation()}}};s.CLICK='click';s.MOUSEOVER='mouseover';s.MOUSEOUT='mouseout';s.FOCUS='focus';s.BLUR='blur';s.CHANGE='change';s.SUBMIT='submit';s.RESET='reset';s.AJAX_SUBMIT='ajaxsubmit';s.NODE_INSERTED='DOMNodeInserted';s.NODE_REMOVED='DOMNodeRemoved';s.LAYOUT_CHANGED='layoutchanged';s.Whitelist={relatedTarget:1,button:1,keyCode:1,ctrlKey:1,shiftKey:1,altKey:1,pageX:1,pageY:1,clientX:1,clientY:1,screenX:1,screenY:1};m.namespace('Event',s);var t=function(){this.observers={}};t.prototype={constructor:t,subscribe:function(a,b){var c=this.observers;if(!c[a]){c[a]=[]}c[a].push(b)},unsubscribe:function(a,b){var c=this.observers[a];var l=c.length;for(var i=0;i<l;i++){if(c[i]===b){c.splice(i,1);break}}},notify:function(a,b){var c=this.observers[a];if(c){var l=c.length;for(var i=0;i<l;i++){c[i](b)}}}};m.namespace('Observable',t);var u=new(n.extend(t,null,{capture:function(b,c){var d=this;$(c||document).bind(b,function(e,a){return d.fire(b,e.target,a,e)})},createEvent:function(b,c){var d=this;var f=/(.*):[a-z0-9]+$/i.exec(b)[1];this.subscribe(f,function(e){var a=c(e);if(a&&a.nodeType){return d.fire(b,a,e.data,e)}})},fire:function(a,b,c,d){var e=new s(a,b,c,d);this.notify(a,e);return e.returnValue}}))();m.namespace('Dispatcher',u);var v=function(){this.relations=[];u.subscribe('click:link',this.handleClick.bind(this))};v.prototype={constructor:v,subscribe:function(a,b){var c={expression:a,handler:b};this.relations.push(c)},unsubscribe:function(a){for(var i=0;i<this.relations.length;i++){if(this.relations[i]===a){this.relations.splice(i,1);break}}},handleClick:function(e){var a=e.target;var b=a.rel;if(b){for(var i=0;i<this.relations.length;i++){var c=this.relations[i];if(c.expression.test(b)){c.handler(e)}}}}};m.namespace('LinkRelations',v);var w={write:function(a,b){$(a).html(b);u.fire(s.NODE_INSERTED,a)},append:function(a,b){$(a).append(b);u.fire(s.NODE_INSERTED,b)},insertBefore:function(a,b){$(b).before(a);u.fire(s.NODE_INSERTED,a)},insertAfter:function(a,b){$(b).after(a);u.fire(s.NODE_INSERTED,a)},replace:function(a,b){u.fire(s.NODE_REMOVED,b);$(b).replaceWith(a);u.fire(s.NODE_INSERTED,a)},remove:function(a){u.fire(s.NODE_REMOVED,a);$(a).remove()}};m.namespace('DOM',w);var x=function(){u.subscribe(s.NODE_INSERTED,this.nodeInserted.bind(this));u.subscribe(s.NODE_REMOVED,this.nodeRemoved.bind(this))};x.prototype={constructor:x,nodeInserted:m.AbstractMethod,nodeRemoved:m.AbstractMethod};m.namespace('DOMListener',x);u.capture(s.CLICK);u.createEvent('click:link',function(e){var a=$(e.target).closest('a');return a[0]||null});return m})(jQuery);

/**
 * @module form
 * @version   1.01.100118
 * @requires  jQuery, LBi
 * @author    LBi Lost Boys
 */
LBi.Forms=(function($){var q=LBi.Class;var r=LBi.Event;var s=LBi.Dispatcher;var t=q.extend(LBi.DOMListener,function(a){this.settings=$.extend({},t.Defaults,a);this.parseNode(document)},{parseNode:function(a){var b=this.settings;var c=$(b.formSelector,a);if(c.length>0){if(b.captureSubmit){s.capture(r.SUBMIT,c)}if(b.captureChange){var d=$('input,select,textarea',c);s.capture(r.CHANGE,d)}if(b.replaceInputs){this.replaceInputs(c)}if(b.hintValues){this.hintValues(c)}}},nodeInserted:function(e){if(this.settings.ajaxEnabled){this.parseNode(e.target)}},nodeRemoved:function(e){var a=this.settings;if(a.captureSubmit){var b=$(a.formSelector,e.target);b.unbind()}if(a.captureChange){var c=$('input,select,textarea',e.target);c.unbind()}},hintValues:function(b){var c=/text|pass/i;var d=$(this.settings.hintSelector,b);var e=this.focusInput.bind(this);var f=this.blurInput.bind(this);d.each(function(){if(!c.test(this.type)){return}var a=$(this);a.bind(r.FOCUS,e);a.bind(r.BLUR,f)});d.trigger(r.BLUR)},focusInput:function(e){var a=e.target;if(a.value===a.title){a.value='';$(a).removeClass(this.settings.hintClass)}},blurInput:function(e){var a=e.target;if(a.value===a.title||a.value===''){a.value=a.title;$(a).addClass(this.settings.hintClass)}},replaceInputs:function(i){var j=/submit|reset/i;var k=/submit/i;var l=this.settings;var m=l.buttonTemplate;var n=l.replacedClass;var o=l.simulateClick;var p=$(l.buttonSelector,i);p.each(function(){if(!j.test(this.type)){return}var c=this;var d=c.form;var f=$(c);var g=$(m.replace(/\$([a-z]+)/mig,function(a,b){return c[b]||''}));f.addClass(n);f.after(g);if(o){var h=k.test(c.type)?r.SUBMIT:r.RESET;g.bind(r.CLICK,function(e){e.preventDefault();if($(d).triggerHandler(h,{explicitTarget:c})!==false){f.trigger(r.CLICK)}})}})}});t.submit=function(a,b){var c=b.handler;var d=b.url;var e=b.type;if(!c){if(s.fire(r.SUBMIT,a)){if(d){a.setAttribute('action',d)}a.submit()}}else{if(s.fire(r.AJAX_SUBMIT,a)){var f=t.serialize(a);var g=d||a.getAttribute('action');var h=a.getAttribute('method');if(h&&/post/i.test(h)){$.post(g,f,c,e)}else{$.get(g,f,c,e)}}}};t.serialize=function(a){var b=[];var c=/(text|select|hidden|pass)/i;var d=/select/i;var e=a.elements||$('input,select,textarea',a);for(var i=0;i<e.length;i++){var f=e[i];var g=f.type;if(c.test(g)||f.checked){if(d.test(f.nodeName)){var h=f.selectedIndex;if(h>=0&&f[h]){var j=f[h];b.push(f.name,'=',encodeURIComponent(j.value||j.text),'&')}}else{b.push(f.name,'=',encodeURIComponent(f.value),'&')}}}return b.join('')};t.Defaults={captureSubmit:true,captureChange:false,ajaxEnabled:true,formSelector:'form',hintValues:true,hintSelector:'input[title]',hintClass:'blurred',replaceInputs:true,buttonSelector:'input',buttonTemplate:'<a href="#" class="$className"><span>$value</span></a>',replacedClass:'replaced',simulateClick:true};return t})(jQuery);

/**
 * @module    simplemenu
 * @version   1.10.100210
 * @requires  LBi, jQuery
 * @author    LBi Lost Boys
 */
LBi.SimpleMenu=(function($){var j=1;var k=2;var l=1;var m=2;var n=3;var o=37;var p=38;var q=39;var r=40;var s=function(a,b){$.extend(this,s.Defaults,b);this.root=a;this.state=j;this.stateChange=null;this.defaultItem=$('.'+this.activeClass,this.root)[0];$(this.root).bind('mouseover',this.mouseover.bind(this));$(this.root).bind('mouseout',this.mouseout.bind(this));if(this.keyEnabled){var c=$('a',this.root);c.bind('focus',this.mouseover.bind(this));c.bind('blur',this.mouseout.bind(this));c.bind('keyup',this.keyup.bind(this))}if(/msie\s?6/i.test(navigator.userAgent)){this.ieFrame=$('.gh-coverframe');if(!this.ieFrame.length){this.ieFrame=$('<iframe src="about:blank" frameborder="0" class="gh-coverframe"></iframe>');this.ieFrame.css({position:'absolute',opacity:0});$('body').append(this.ieFrame)}}};s.prototype={constructor:s,toggleMenu:function(a,b){$(a)[b?'addClass':'removeClass'](this.activeClass)},toggleItem:function(a,b){$(a)[b?'addClass':'removeClass'](this.hoverClass)},mouseover:function(e){var a=$(e.target).closest(this.itemSelector)[0];if(a&&(a!=this.item)){this.setCurrent(a);clearTimeout(this.stateChange);var b=this;var c=function(){b.toggle(a)};switch(this.state){case j:this.stateChange=setTimeout(c,this.openDelay);break;case k:this.stateChange=setTimeout(c,this.switchDelay);break}}},mouseout:function(e){var a=e.relatedTarget;while(a){if(a==this.root){return}try{a=a.parentNode}catch(ex){return}}this.setCurrent(null);clearTimeout(this.stateChange);var b=this;switch(this.state){case j:break;case k:this.stateChange=setTimeout(function(){b.toggle(false)},this.closeDelay);break}},keyup:function(e){var a=e.keyCode;if(a<37||a>40){return}var b;var c=this.itemSelector;var d=$(e.target).closest(c);var f=d.siblings(c);var g=this.getOrientation(f);switch(a){case o:b=(g==l)?d.prev(c):d.parent().closest(c);break;case p:b=(g==m)?d.prev(c):d.parent().closest(c);break;case q:b=(g==l)?d.next(c):d.find(c).eq(0);break;case r:b=(g==m)?d.next(c):d.find(c).eq(0);break}var h=b?b.find(' > a'):null;if(h&&h.length){h.trigger('focus');e.preventDefault()}},getOrientation:function(a){if(a.length<1){return n}else{return(a[0].offsetTop==a[1].offsetTop)?l:m}},toggle:function(a){var b=a?a.parentNode:this.root;var c;var d=$(b).find(this.menuSelector);for(var i=0;i<d.length;i++){c=d[i];if(c.parentNode!=a){this.toggleMenu(c.parentNode,false)}}if(a){c=$(a).find(this.menuSelector)[0];if(c){this.toggleMenu(c.parentNode,true)}}else if(this.defaultItem){this.setCurrent(this.defaultItem);this.toggleMenu(this.defaultItem,true)}this.state=a?k:j},toggleIEFrame:function(a,b){if(this.ieFrame){if(a){var c=b.offset();this.ieFrame.css({left:c.left+'px',top:c.top+'px',width:b[0].offsetWidth+'px',height:b[0].offsetHeight+'px'})}else{this.ieFrame.css({left:-9999+'px',top:-9999+'px'})}}},setCurrent:function(a){if(this.item){this.toggleItem(this.item,false)}this.item=a;if(a){this.toggleItem(this.item,true)}}};s.Defaults={openDelay:500,switchDelay:200,closeDelay:1000,hoverClass:'hover',activeClass:'active',itemSelector:'li',menuSelector:'ul',keyEnabled:true};s.instances=$.registerPlugin('simpleMenu',s);return s})(jQuery);

/**
 * init on document ready
 * 
 */
$(document).ready(function(){
	
	if(!jQuery.fn.closest){ jQuery.fn.closest = function (selector) { return jQuery.map(this, function(node){ while(node) { if($(node).is(selector)) { return node; } node = node.parentNode; } return null; }); }; }
	if(!jQuery.fn.hasClass) { jQuery.fn.hasClass = function(name) { var reg = new RegExp('(\\s|^)' + name + '(\\s|$)'); if(this[0] && reg.test(this[0].className)) { return true; } return false; }; }
	if(!jQuery.fn.offset) { jQuery.fn.offset = function(a) { var node = this[0]; var left = 0; var top = 0; while(node) { left += node.offsetLeft; top += node.offsetTop; node = node.offsetParent; } return { left:left, top:top }; }; }

	var forms = new LBi.Forms({
		formSelector: '#generic-header',
		hintClass: 'blurred',
		buttonSelector: 'input.gh-button',
		replaceInputs: true
	});
	
	$('fieldset.gh-rememberme input:submit').addClass("hidden");

	var minVersion = /^1.(3|4)/.test(jQuery.fn.jquery)? true : false;

	$('#gh-metanavigation,#gh-functionalnavigation,#gh-navigation').simpleMenu({
		activeClass: "gh-active",
		hoverClass: "gh-hover",
		menuSelector: ".gh-fold",
		switchDelay: 100,
		openDelay: 100,
		closeDelay: 200,
		toggleMenu: function(ele, toggle) {
			var item       = $(ele);
			var expandable = item.find('.gh-fold');
			var aniTarget  = expandable.find('.gh-middle');
			var self = this;

			if(toggle) {
				if (item.hasClass("gh-active")) {
					return;
				}
				
				var curPaddingTop = parseInt(aniTarget.css("padding-top"), 10);
				item.addClass("gh-active");
				aniTarget.hide();
				
				if(minVersion) {
					aniTarget.css("padding-top", curPaddingTop-10+"px");
					aniTarget.fadeIn({queue:false, duration:100}).animate({ "padding-top": curPaddingTop+"px"}, 100, function() {
						self.toggleIEFrame(toggle, expandable);			
					});	
				} else {
					aniTarget.fadeIn(100, function() {
						self.toggleIEFrame(toggle, expandable);
					});
				}

			} else {
				item.removeClass("gh-active");
				this.toggleIEFrame(toggle, ele);
			}
		}
	});

});
