/* BEGIN jquery-1.2.6.min.js */
/* jQuery 1.2.6 - New Wave Javascript
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
 * $Rev: 5685 $
 */
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},

nodeName:function(elem,name){
	return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();
},

cache:{},

data:function(elem,name,data){
	elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;
},
	
removeData:function(elem,name){
	elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}
},

each:function(object,callback,args){
	if (object == null) {
		return null;
	}
	var name,i=0,length=object.length;
	
	if(args){
		if(length==undefined){
			for(name in object)if(callback.apply(object[name],args)===false)break;
		}else
			for(;i<length;)if(callback.apply(object[i++],args)===false)break;
	} else {
		if(length==undefined){
			for(name in object)if(callback.call(object[name],name,object[name])===false)break;
		} else
			for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}
	}
	
	return object;
},

prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},

attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}

	if(msie&&name=="opacity"){
		if(set){
			//elem.zoom=1;
			elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},

trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},

trigger:function(type,data,elem,donative,extra){
	data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},

handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},

trigger:function(type,data,fn){
	return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});
},

triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},

animate:function(prop,speed,easing,callback){
	var optall=jQuery.speed(speed,easing,callback);
	
	return this[optall.queue===false?"each":"queue"](function(){
		if(this.nodeType!=1)return false;
		
		var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;
		
		for(p in prop){
			if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);
			if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},

step:function(gotoEnd){
	var t=now();
	
	if(gotoEnd||t>this.options.duration+this.startTime){
		this.now=this.end;
		this.pos=this.state=1;
		this.update();
		this.options.curAnim[this.prop]=true;
		var done=true;
		
		for(var i in this.options.curAnim)
			if(this.options.curAnim[i]!==true)
				done=false;
				
		if(done){
			if(this.options.display!=null){
				this.elem.style.overflow=this.options.overflow;
				this.elem.style.display=this.options.display;
				
				if(jQuery.css(this.elem,"display")=="none")
					this.elem.style.display="block";
			}
			
			if(this.options.hide)
				this.elem.style.display="none";
				
			if(this.options.hide||this.options.show)
				for(var p in this.options.curAnim)
					jQuery.attr(this.elem.style,p,this.options.orig[p]);
		}
			
		if(done)
			this.options.complete.call(this.elem);
		
		return false;
	}else{
		var n=t-this.startTime;
		this.state=n/this.options.duration;
		this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);
		this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
/* END jquery-1.2.6.min.js */

/* BEGIN hoverIntent.js */
(function($){
	/* hoverIntent by Brian Cherne */
	$.fn.hoverIntent = function(f,g) {
		// default configuration options
		var cfg = {
			sensitivity: 7,
			interval: 100,
			timeout: 0
		};
		// override configuration options with user supplied object
		cfg = $.extend(cfg, g ? { over: f, out: g } : f );

		// instantiate variables
		// cX, cY = current X and Y position of mouse, updated by mousemove event
		// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
		var cX, cY, pX, pY;

		// A private function for getting mouse position
		var track = function(ev) {
			cX = ev.pageX;
			cY = ev.pageY;
		};

		// A private function for comparing current and previous mouse position
		var compare = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			// compare mouse positions to see if they've crossed the threshold
			if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
				$(ob).unbind("mousemove",track);
				// set hoverIntent state to true (so mouseOut can be called)
				ob.hoverIntent_s = 1;
				return cfg.over.apply(ob,[ev]);
			} else {
				// set previous coordinates for next time
				pX = cX; pY = cY;
				// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
				ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
			}
		};

		// A private function for delaying the mouseOut function
		var delay = function(ev,ob) {
			ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s = 0;
			return cfg.out.apply(ob,[ev]);
		};

		// A private function for handling mouse 'hovering'
		var handleHover = function(e) {
			// next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
			var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
			while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
			if ( p == this ) { return false; }

			// copy objects to be passed into t (required for event object to be passed in IE)
			var ev = jQuery.extend({},e);
			var ob = this;

			// cancel hoverIntent timer if it exists
			if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }

			// else e.type == "onmouseover"
			if (e.type == "mouseover") {
				// set "previous" X and Y position based on initial entry point
				pX = ev.pageX; pY = ev.pageY;
				// update "current" X and Y position based on mousemove
				$(ob).bind("mousemove",track);
				// start polling interval (self-calling timeout) to compare mouse coordinates over time
				if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}

			// else e.type == "onmouseout"
			} else {
				// unbind expensive mousemove event
				$(ob).unbind("mousemove",track);
				// if hoverIntent state is true, then call the mouseOut function after the specified delay
				if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
			}
		};

		// bind the function to the two event listeners
		return this.mouseover(handleHover).mouseout(handleHover);
	};
	
})(jQuery);
/* END hoverIntent.js */

/* Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
	$.fn.superfish = function(op){

		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')),
			over = function(){
				var $$ = $(this), menu = getMenu($$);
				clearTimeout(menu.sfTimer);
				$$.showSuperfishUl().siblings().hideSuperfishUl();
				jQuery('.always').css('display', 'block');
			},
			out = function(){
				var $$ = $(this), menu = getMenu($$), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray($$[0],o.$path)>-1);
					$$.hideSuperfishUl();
					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){
						over.call(o.$path);
								
					}
					//check to see if sticky variables are set
					if( typeof(ldm_nav_section) != 'undefined' ) {
						lightup(ldm_nav_section, ldm_nav_pos);			
					}
					else{
						jQuery('.always').css('display', 'none');
					}
				
				},o.delay);	
				

				
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
			
		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(ul)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;
			
			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();
			
			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);
			
			
			
			
		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 800,			 // the delay in milliseconds that the mouse can remain outside a submenu without it closing 
		animation	: {opacity:'show'},
		speed		: '1000',
		autoArrows	: false,
		dropShadows : false,
		disableHI	: false,		// true disables hoverIntent detection
		onInit		: function(){possubs();}, 				// callback function fires once Superfish is initialised ? 'this' is the containing ul
		onBeforeShow: function(){showbug(this);},	// callback function fires just before reveal animation begins  'this' is the ul about to open 
		onShow		: function(){},// callback function fires once reveal animation completed  'this' is the opened ul 
		onHide		: function(){hidebug(this);}	// callback function fires after a sub-menu has closed  'this' is the ul that just closed 
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>ul').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>ul:hidden').css('visibility','visible');
			sf.IE7fix.call($ul);
			o.onBeforeShow.call($ul);
			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
			return this;
		}
	});

})(jQuery);
/* END superfish.js */

/*ESSENTIAL EASING : * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});
/*END: easing */

/*
 * BEGIN
 * jCarousel - Riding carousels with jQuery
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 */
(function($) {
    $.fn.jcarousel = function(o) {
        return this.each(function() {
            new $jc(this, o);
        });
    };

    // Default configuration properties.
    var defaults = {
        vertical: false,
        start: 1,
        offset: 1,
        size: null,
        scroll: 3,
        visible: null,
        animation: 'normal',
        easing: 'swing',
        auto: 0,
        wrap: null,
        initCallback: null,
        reloadCallback: null,
        itemLoadCallback: null,
        itemFirstInCallback: null,
        itemFirstOutCallback: null,
        itemLastInCallback: null,
        itemLastOutCallback: null,
        itemVisibleInCallback: null,
        itemVisibleOutCallback: null,
        buttonNextHTML: '<div></div>',
        buttonPrevHTML: '<div></div>',
        buttonNextEvent: 'click',
        buttonPrevEvent: 'click',
        buttonNextCallback: null,
        buttonPrevCallback: null
    };

    /**
     * The jCarousel object.
     *
     * @constructor
     * @name $.jcarousel
     * @param Object e The element to create the carousel for.
     * @param Hash o A set of key/value pairs to set as configuration properties.
     * @cat Plugins/jCarousel
     */
    $.jcarousel = function(e, o) {
        this.options    = $.extend({}, defaults, o || {});

        this.locked     = false;

        this.container  = null;
        this.clip       = null;
        this.list       = null;
        this.buttonNext = null;
        this.buttonPrev = null;

        this.wh = !this.options.vertical ? 'width' : 'height';
        this.lt = !this.options.vertical ? 'left' : 'top';

        // Extract skin class
        var skin = '', split = e.className.split(' ');

        for (var i = 0; i < split.length; i++) {
            if (split[i].indexOf('jcarousel-skin') != -1) {
                $(e).removeClass(split[i]);
                var skin = split[i];
                break;
            }
        }

        if (e.nodeName == 'UL' || e.nodeName == 'OL') {
            this.list = $(e);
            this.container = this.list.parent();

            if (this.container.hasClass('jcarousel-clip')) {
                if (!this.container.parent().hasClass('jcarousel-container'))
                    this.container = this.container.wrap('<div></div>');

                this.container = this.container.parent();
            } else if (!this.container.hasClass('jcarousel-container'))
                this.container = this.list.wrap('<div></div>').parent();
        } else {
            this.container = $(e);
            this.list = $(e).find('>ul,>ol,div>ul,div>ol');
        }

        if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
        	this.container.wrap('<div class=" '+ skin + '"></div>');

        this.clip = this.list.parent();

        if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
            this.clip = this.list.wrap('<div></div>').parent();

        this.buttonPrev = $('.jcarousel-prev', this.container);

        if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
            this.buttonPrev = this.clip.before(this.options.buttonPrevHTML).prev();

        this.buttonPrev.addClass(this.className('jcarousel-prev'));

        this.buttonNext = $('.jcarousel-next', this.container);

        if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
            this.buttonNext = this.clip.before(this.options.buttonNextHTML).prev();

        this.buttonNext.addClass(this.className('jcarousel-next'));

        this.clip.addClass(this.className('jcarousel-clip'));
        this.list.addClass(this.className('jcarousel-list'));
        this.container.addClass(this.className('jcarousel-container'));

        var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
        var li = this.list.children('li');

        var self = this;

        if (li.size() > 0) {
            var wh = 0, i = this.options.offset;
            li.each(function() {
                self.format(this, i++);
                wh += self.dimension(this, di);
            });

            this.list.css(this.wh, wh + 'px');

            // Only set if not explicitly passed as option
            if (!o || o.size === undefined)
                this.options.size = li.size();
        }

        // For whatever reason, .show() does not work in Safari...
        this.container.css('display', 'block');
        this.buttonNext.css('display', 'block');
        this.buttonPrev.css('display', 'block');

        this.funcNext   = function() { self.next(); };
        this.funcPrev   = function() { self.prev(); };
        this.funcResize = function() { self.reload(); };

        if (this.options.initCallback != null)
            this.options.initCallback(this, 'init');

        if ($.browser.safari) {
            this.buttons(false, false);
            $(window).bind('load', function() { self.setup(); });
        } else
            this.setup();
    };

    // Create shortcut for internal use
    var $jc = $.jcarousel;

    $jc.fn = $jc.prototype = {
        jcarousel: '0.2.3'
    };

    $jc.fn.extend = $jc.extend = $.extend;

    $jc.fn.extend({
        /**
         * Setups the carousel.
         *
         * @name setup
         * @type undefined
         * @cat Plugins/jCarousel
         */
        setup: function() {
            this.first     = null;
            this.last      = null;
            this.prevFirst = null;
            this.prevLast  = null;
            this.animating = false;
            this.timer     = null;
            this.tail      = null;
            this.inTail    = false;

            if (this.locked)
                return;

            this.list.css(this.lt, this.pos(this.options.offset) + 'px');
            var p = this.pos(this.options.start);
            this.prevFirst = this.prevLast = null;
            this.animate(p, false);

            $(window).unbind('resize', this.funcResize).bind('resize', this.funcResize);
        },

        /**
         * Clears the list and resets the carousel.
         *
         * @name reset
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reset: function() {
            this.list.empty();

            this.list.css(this.lt, '0px');
            this.list.css(this.wh, '10px');

            if (this.options.initCallback != null)
                this.options.initCallback(this, 'reset');

            this.setup();
        },

        /**
         * Reloads the carousel and adjusts positions.
         *
         * @name reload
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reload: function() {
            if (this.tail != null && this.inTail)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);

            this.tail   = null;
            this.inTail = false;

            if (this.options.reloadCallback != null)
                this.options.reloadCallback(this);

            if (this.options.visible != null) {
                var self = this;
                var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
                $('li', this.list).each(function(i) {
                    wh += self.dimension(this, di);
                    if (i + 1 < self.first)
                        lt = wh;
                });

                this.list.css(this.wh, wh + 'px');
                this.list.css(this.lt, -lt + 'px');
            }

            this.scroll(this.first, false);
        },

        /**
         * Locks the carousel.
         *
         * @name lock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        lock: function() {
            this.locked = true;
            this.buttons();
        },

        /**
         * Unlocks the carousel.
         *
         * @name unlock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        unlock: function() {
            this.locked = false;
            this.buttons();
        },

        /**
         * Sets the size of the carousel.
         *
         * @name size
         * @type undefined
         * @param Number s The size of the carousel.
         * @cat Plugins/jCarousel
         */
        size: function(s) {
            if (s != undefined) {
                this.options.size = s;
                if (!this.locked)
                    this.buttons();
            }

            return this.options.size;
        },

        /**
         * Checks whether a list element exists for the given index (or index range).
         *
         * @name get
         * @type bool
         * @param Number i The index of the (first) element.
         * @param Number i2 The index of the last element.
         * @cat Plugins/jCarousel
         */
        has: function(i, i2) {
            if (i2 == undefined || !i2)
                i2 = i;

            if (this.options.size !== null && i2 > this.options.size)
            	i2 = this.options.size;

            for (var j = i; j <= i2; j++) {
                var e = this.get(j);
                if (!e.length || e.hasClass('jcarousel-item-placeholder'))
                    return false;
            }

            return true;
        },

        /**
         * Returns a jQuery object with list element for the given index.
         *
         * @name get
         * @type jQuery
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        get: function(i) {
            return $('.jcarousel-item-' + i, this.list);
        },

        /**
         * Adds an element for the given index to the list.
         * If the element already exists, it updates the inner html.
         * Returns the created element as jQuery object.
         *
         * @name add
         * @type jQuery
         * @param Number i The index of the element.
         * @param String s The innerHTML of the element.
         * @cat Plugins/jCarousel
         */
        add: function(i, s) {
            var e = this.get(i), old = 0, add = 0;

            if (e.length == 0) {
                var c, e = this.create(i), j = $jc.intval(i);
                while (c = this.get(--j)) {
                    if (j <= 0 || c.length) {
                        j <= 0 ? this.list.prepend(e) : c.after(e);
                        break;
                    }
                }
            } else
                old = this.dimension(e);

            e.removeClass(this.className('jcarousel-item-placeholder'));
            typeof s == 'string' ? e.html(s) : e.empty().append(s);

            var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
            var wh = this.dimension(e, di) - old;

            if (i > 0 && i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');

            return e;
        },

        /**
         * Removes an element for the given index from the list.
         *
         * @name remove
         * @type undefined
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        remove: function(i) {
            var e = this.get(i);

            // Check if item exists and is not currently visible
            if (!e.length || (i >= this.first && i <= this.last))
                return;

            var d = this.dimension(e);

            if (i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');

            e.remove();

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
        },

        /**
         * Moves the carousel forwards.
         *
         * @name next
         * @type undefined
         * @cat Plugins/jCarousel
         */
        next: function() {
            this.stopAuto();

            if (this.tail != null && !this.inTail)
                this.scrollTail(false);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
        },

        /**
         * Moves the carousel backwards.
         *
         * @name prev
         * @type undefined
         * @cat Plugins/jCarousel
         */
        prev: function() {
            this.stopAuto();

            if (this.tail != null && this.inTail)
                this.scrollTail(true);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
        },

        /**
         * Scrolls the tail of the carousel.
         *
         * @name scrollTail
         * @type undefined
         * @param Bool b Whether scroll the tail back or forward.
         * @cat Plugins/jCarousel
         */
        scrollTail: function(b) {
            if (this.locked || this.animating || !this.tail)
                return;

            var pos  = $jc.intval(this.list.css(this.lt));

            !b ? pos -= this.tail : pos += this.tail;
            this.inTail = !b;

            // Save for callbacks
            this.prevFirst = this.first;
            this.prevLast  = this.last;

            this.animate(pos);
        },

        /**
         * Scrolls the carousel to a certain position.
         *
         * @name scroll
         * @type undefined
         * @param Number i The index of the element to scoll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        scroll: function(i, a) {
            if (this.locked || this.animating)
                return;

            this.animate(this.pos(i), a);
        },

        /**
         * Prepares the carousel and return the position for a certian index.
         *
         * @name pos
         * @type Number
         * @param Number i The index of the element to scoll to.
         * @cat Plugins/jCarousel
         */
        pos: function(i) {
            if (this.locked || this.animating)
                return;

            if (this.options.wrap != 'circular')
                i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);

            var back = this.first > i;
            var pos  = $jc.intval(this.list.css(this.lt));

            // Create placeholders, new list width/height
            // and new list position
            var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
            var c = back ? this.get(f) : this.get(this.last);
            var j = back ? f : f - 1;
            var e = null, l = 0, p = false, d = 0;

            while (back ? --j >= i : ++j < i) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    c[back ? 'before' : 'after' ](e);
                }

                c = e;
                d = this.dimension(e);

                if (p)
                    l += d;

                if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
                    pos = back ? pos + d : pos - d;
            }

            // Calculate visible items
            var clipping = this.clipping();
            var cache = [];
            var visible = 0, j = i, v = 0;
            var c = this.get(i - 1);

            while (++visible) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    // This should only happen on a next scroll
                    c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
                }

                c = e;
                var d = this.dimension(e);
                if (d == 0) {
                    alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
                    return 0;
                }

                if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
                    cache.push(e);
                else if (p)
                    l += d;

                v += d;

                if (v >= clipping)
                    break;

                j++;
            }

             // Remove out-of-range placeholders
            for (var x = 0; x < cache.length; x++)
                cache[x].remove();

            // Resize list
            if (l > 0) {
                this.list.css(this.wh, this.dimension(this.list) + l + 'px');

                if (back) {
                    pos -= l;
                    this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
                }
            }

            // Calculate first and last item
            var last = i + visible - 1;
            if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
                last = this.options.size;

            if (j > last) {
                visible = 0, j = last, v = 0;
                while (++visible) {
                    var e = this.get(j--);
                    if (!e.length)
                        break;
                    v += this.dimension(e);
                    if (v >= clipping)
                        break;
                }
            }

            var first = last - visible + 1;
            if (this.options.wrap != 'circular' && first < 1)
                first = 1;

            if (this.inTail && back) {
                pos += this.tail;
                this.inTail = false;
            }

            this.tail = null;
            if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
                var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
                if ((v - m) > clipping)
                    this.tail = v - clipping - m;
            }

            // Adjust position
            while (i-- > first)
                pos += this.dimension(this.get(i));

            // Save visible item range
            this.prevFirst = this.first;
            this.prevLast  = this.last;
            this.first     = first;
            this.last      = last;

            return pos;
        },

        /**
         * Animates the carousel to a certain position.
         *
         * @name animate
         * @type undefined
         * @param mixed p Position to scroll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        animate: function(p, a) {
            if (this.locked || this.animating)
                return;

            this.animating = true;

            var self = this;
            var scrolled = function() {
                self.animating = false;

                if (p == 0)
                    self.list.css(self.lt,  0);

                if (self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
                    self.startAuto();

                self.buttons();
                self.notify('onAfterAnimation');
            };

            this.notify('onBeforeAnimation');

            // Animate
            if (!this.options.animation || a == false) {
                this.list.css(this.lt, p + 'px');
                scrolled();
            } else {
                var o = !this.options.vertical ? {'left': p} : {'top': p};
                this.list.animate(o, this.options.animation, this.options.easing, scrolled);
            }
        },

        /**
         * Starts autoscrolling.
         *
         * @name auto
         * @type undefined
         * @param Number s Seconds to periodically autoscroll the content.
         * @cat Plugins/jCarousel
         */
        startAuto: function(s) {
            if (s != undefined)
                this.options.auto = s;

            if (this.options.auto == 0)
                return this.stopAuto();

            if (this.timer != null)
                return;

            var self = this;
            this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
        },

        /**
         * Stops autoscrolling.
         *
         * @name stopAuto
         * @type undefined
         * @cat Plugins/jCarousel
         */
        stopAuto: function() {
            if (this.timer == null)
                return;

            clearTimeout(this.timer);
            this.timer = null;
        },

        /**
         * Sets the states of the prev/next buttons.
         *
         * @name buttons
         * @type undefined
         * @cat Plugins/jCarousel
         */
        buttons: function(n, p) {
            if (n == undefined || n == null) {
                var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
                    n = this.tail != null && !this.inTail;
            }

            if (p == undefined || p == null) {
                var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
                    p = this.tail != null && this.inTail;
            }

            var self = this;

            this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent, this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
            this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent, this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);

            if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
                this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
                this.buttonNext[0].jcarouselstate = n;
            }

            if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
                this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
                this.buttonPrev[0].jcarouselstate = p;
            }
        },

        notify: function(evt) {
            var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');

            // Load items
            this.callback('itemLoadCallback', evt, state);

            if (this.prevFirst !== this.first) {
                this.callback('itemFirstInCallback', evt, state, this.first);
                this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
            }

            if (this.prevLast !== this.last) {
                this.callback('itemLastInCallback', evt, state, this.last);
                this.callback('itemLastOutCallback', evt, state, this.prevLast);
            }

            this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
            this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
        },

        callback: function(cb, evt, state, i1, i2, i3, i4) {
            if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
                return;

            var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];

            if (!$.isFunction(callback))
                return;

            var self = this;

            if (i1 === undefined)
                callback(self, state, evt);
            else if (i2 === undefined)
                this.get(i1).each(function() { callback(self, this, i1, state, evt); });
            else {
                for (var i = i1; i <= i2; i++)
                    if (i !== null && !(i >= i3 && i <= i4))
                        this.get(i).each(function() { callback(self, this, i, state, evt); });
            }
        },

        create: function(i) {
            return this.format('<li></li>', i);
        },

        format: function(e, i) {
            var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i));
            $e.attr('jcarouselindex', i);
            return $e;
        },

        className: function(c) {
            return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
        },

        dimension: function(e, d) {
            var el = e.jquery != undefined ? e[0] : e;

            var old = !this.options.vertical ?
                el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
                el.offsetHeight + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');

            if (d == undefined || old == d)
                return old;

            var w = !this.options.vertical ?
                d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
                d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');

            $(el).css(this.wh, w + 'px');

            return this.dimension(el);
        },

        clipping: function() {
            return !this.options.vertical ?
                this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
                this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
        },

        index: function(i, s) {
            if (s == undefined)
                s = this.options.size;

            return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
        }
    });

    $jc.extend({
        /**
         * Gets/Sets the global default configuration properties.
         *
         * @name defaults
         * @descr Gets/Sets the global default configuration properties.
         * @type Hash
         * @param Hash d A set of key/value pairs to set as configuration properties.
         * @cat Plugins/jCarousel
         */
        defaults: function(d) {
            return $.extend(defaults, d || {});
        },

        margin: function(e, p) {
            if (!e)
                return 0;

            var el = e.jquery != undefined ? e[0] : e;

            if (p == 'marginRight' && $.browser.safari) {
                var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

                $.swap(el, old, function() { oWidth = el.offsetWidth; });

                old['marginRight'] = 0;
                $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

                return oWidth2 - oWidth;
            }

            return $jc.intval($.css(el, p));
        },

        intval: function(v) {
            v = parseInt(v);
            return isNaN(v) ? 0 : v;
        }
    });

})(jQuery);
/* END jCarousel */


/* BEGIN fancybox - lightbox */
/*
 * FancyBox - simple jQuery plugin for fancy image zooming
 * Examples and documentation at: http://fancy.klade.lv/
 * Version: 1.0.0 (29/04/2008)
 * Copyright (c) 2008 Janis Skarnelis
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * Requires: jQuery v1.2.1 or later
*/
(function($) {
	var opts = {}, 
		imgPreloader = new Image, imgTypes = ['png', 'jpg', 'jpeg', 'gif'], 
		loadingTimer, loadingFrame = 1;

   $.fn.fancybox = function(settings) {
		opts.settings = $.extend({}, $.fn.fancybox.defaults, settings);

		$.fn.fancybox.init();

		return this.each(function() {
			var $this = $(this);
			var o = $.metadata ? $.extend({}, opts.settings, $this.metadata()) : opts.settings;

			$this.unbind('click').click(function() {
				$.fn.fancybox.start(this, o); return false;
			});
		});
	};

	$.fn.fancybox.start = function(el, o) {
		if (opts.animating) return false;

		if (o.overlayShow) {
			$("#fancy_wrap").prepend('<div id="fancy_overlay"></div>');
			$("#fancy_overlay").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': o.overlayOpacity});

			if ($.browser.msie) {
				$("#fancy_wrap").prepend('<iframe id="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
				$("#fancy_bigIframe").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': 0});
			}

			$("#fancy_overlay").click($.fn.fancybox.close);
		}

		opts.itemArray	= [];
		opts.itemNum	= 0;

		if (jQuery.isFunction(o.itemLoadCallback)) {
		   o.itemLoadCallback.apply(this, [opts]);

			var c	= $(el).children("img:first").length ? $(el).children("img:first") : $(el);
			var tmp	= {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}

		   for (var i = 0; i < opts.itemArray.length; i++) {
				opts.itemArray[i].o = $.extend({}, o, opts.itemArray[i].o);
				
				if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
					opts.itemArray[i].orig = tmp;
				}
		   }

		} else {
			if (!el.rel || el.rel == '') {
				var item = {url: el.href, title: el.title, o: o};

				if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
					var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
					item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
				}

				opts.itemArray.push(item);

			} else {
				var arr	= $("a[@rel=" + el.rel + "]").get();

				for (var i = 0; i < arr.length; i++) {
					var tmp		= $.metadata ? $.extend({}, o, $(arr[i]).metadata()) : o;
   					var item	= {url: arr[i].href, title: arr[i].title, o: tmp};

   					if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
						var c = $(arr[i]).children("img:first").length ? $(arr[i]).children("img:first") : $(el);

						item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
					}

					if (arr[i].href == el.href) opts.itemNum = i;

					opts.itemArray.push(item);
				}
			}
		}

		$.fn.fancybox.changeItem(opts.itemNum);
	};

	$.fn.fancybox.changeItem = function(n) {
		$.fn.fancybox.showLoading();

		opts.itemNum = n;

		$("#fancy_nav").empty();
		$("#fancy_outer").stop();
		$("#fancy_title").hide();
		$(document).unbind("keydown");

		imgRegExp = imgTypes.join('|');
    	imgRegExp = new RegExp('\.' + imgRegExp + '$', 'i');

		var url = opts.itemArray[n].url;

		if (url.match(/#/)) {
			var target = window.location.href.split('#')[0]; target = url.replace(target,'');

	        $.fn.fancybox.showItem('<div id="fancy_div">' + $(target).html() + '</div>');

	        $("#fancy_loading").hide();

		} else if (url.match(imgRegExp)) {
			$(imgPreloader).unbind('load').bind('load', function() {
				$("#fancy_loading").hide();

				opts.itemArray[n].o.frameWidth	= imgPreloader.width;
				opts.itemArray[n].o.frameHeight	= imgPreloader.height;

				$.fn.fancybox.showItem('<img id="fancy_img" src="' + imgPreloader.src + '" />');

			}).attr('src', url + '?rand=' + Math.floor(Math.random() * 999999999) );

		} else {
			$.fn.fancybox.showItem('<iframe scrolling="no" id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + url + '"></iframe>');
		}
	};

	$.fn.fancybox.showIframe = function() {
		$("#fancy_loading").hide();
		$("#fancy_frame").show();
	};

	$.fn.fancybox.showItem = function(val) {
		$.fn.fancybox.preloadNeighborImages();

		var viewportPos	= $.fn.fancybox.getViewport();
		//SRF 20090225 var itemSize	= $.fn.fancybox.getMaxSize(viewportPos[0] - 50, viewportPos[1] - 100, opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight);
		var itemSize = [opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight];		

		var itemLeft	= viewportPos[2] + Math.round((viewportPos[0] - itemSize[0]) / 2) - 20;
		var itemTop	= viewportPos[3] + Math.round((viewportPos[1] - itemSize[1]) / 2) - 40;

		if (itemTop < 0)
		{
			itemTop = 0;
		}

		var itemOpts = {
			'left':		itemLeft, 
			'top':		itemTop, 
			'width':	itemSize[0] + 'px', 
			'height':	itemSize[1] + 'px'				
		}				

		if (opts.active) {
			$('#fancy_content').fadeOut("normal", function() {
				$("#fancy_content").empty();
				
				$("#fancy_outer").animate(itemOpts, "normal", function() {
					$("#fancy_content").append($(val)).fadeIn("normal");
					$.fn.fancybox.updateDetails();
				});
			});

		} else {
			opts.active = true;

			$("#fancy_content").empty();

			if ($("#fancy_content").is(":animated")) {
				console.info('animated!');
			}

			if (opts.itemArray[opts.itemNum].o.zoomSpeedIn > 0) {
				opts.animating		= true;
				itemOpts.opacity	= "show";

				$("#fancy_outer").css({
					'top':		opts.itemArray[opts.itemNum].orig.pos.top - 18,
					'left':		opts.itemArray[opts.itemNum].orig.pos.left - 18,
					'height':	opts.itemArray[opts.itemNum].orig.height,
					'width':	opts.itemArray[opts.itemNum].orig.width
				});

				
				
				// BEGIN new code SRF 20090225
				if (opts.itemArray[opts.itemNum].o.arrowShow) {
				
					$('#bigarrow_left').css({
						'top': itemOpts.top + 180,
						'left': itemOpts.left - 85,
						'display': 'block'
					});
					
					$('#bigarrow_right').css({
						'top': itemOpts.top + 180,
						'left': (itemOpts.left + 62 + itemSize[0]) + 'px',
						'display': 'block'
					});
				}
				// END new code SRF 20090225

				$("#fancy_content").append($(val)).show();

				$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedIn, function() {
					opts.animating = false;
					$.fn.fancybox.updateDetails();
				});

			} else {
				$("#fancy_content").append($(val)).show();
				$("#fancy_outer").css(itemOpts).show();
				$.fn.fancybox.updateDetails();
			}
		 }
	};

	$.fn.fancybox.updateDetails = function() {
		$("#fancy_bg,#fancy_close_lightbox").show();

		if (opts.itemArray[opts.itemNum].title !== undefined && opts.itemArray[opts.itemNum].title !== '') {
			$('#fancy_title div').html(opts.itemArray[opts.itemNum].title);
			$('#fancy_title').show();
		}

		if (opts.itemArray[opts.itemNum].o.hideOnContentClick) {
			$("#fancy_content").click($.fn.fancybox.close);
		} else {
			$("#fancy_content").unbind('click');
		}

		if (opts.itemNum != 0) {
			$("#fancy_nav").append('<a id="fancy_left" href="javascript:;"></a>');

			$('#fancy_left').click(function() {
				$.fn.fancybox.changeItem(opts.itemNum - 1); return false;
			});
		}

		if (opts.itemNum != (opts.itemArray.length - 1)) {
			$("#fancy_nav").append('<a id="fancy_right" href="javascript:;"></a>');
			
			$('#fancy_right').click(function(){
				$.fn.fancybox.changeItem(opts.itemNum + 1); return false;
			});
		}

		$(document).keydown(function(event) {
			if (event.keyCode == 27) {
            	$.fn.fancybox.close();

			} else if(event.keyCode == 37 && opts.itemNum != 0) {
            	$.fn.fancybox.changeItem(opts.itemNum - 1);

			} else if(event.keyCode == 39 && opts.itemNum != (opts.itemArray.length - 1)) {
            	$.fn.fancybox.changeItem(opts.itemNum + 1);
			}
		});
	};

	$.fn.fancybox.preloadNeighborImages = function() {
		if ((opts.itemArray.length - 1) > opts.itemNum) {
			preloadNextImage = new Image();
			preloadNextImage.src = opts.itemArray[opts.itemNum + 1].url;
		}

		if (opts.itemNum > 0) {
			preloadPrevImage = new Image();
			preloadPrevImage.src = opts.itemArray[opts.itemNum - 1].url;
		}
	};

	$.fn.fancybox.close = function() {
		if (opts.animating) return false;

		$(imgPreloader).unbind('load');
		$(document).unbind("keydown");

		$("#fancy_loading,#fancy_title,#fancy_close_lightbox,#fancy_bg").hide();

		$("#fancy_nav").empty();

		opts.active	= false;

		if (opts.itemArray[opts.itemNum].o.zoomSpeedOut > 0) {
			var itemOpts = {
				'top':		opts.itemArray[opts.itemNum].orig.pos.top - 18,
				'left':		opts.itemArray[opts.itemNum].orig.pos.left - 18,
				'height':	opts.itemArray[opts.itemNum].orig.height,
				'width':	opts.itemArray[opts.itemNum].orig.width,
				'opacity':	'hide'
			};

			opts.animating = true;

			$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedOut, function() {
				$("#fancy_content").hide().empty();
				$("#fancy_overlay,#fancy_bigIframe").remove();
				opts.animating = false;
			});

		} else {
			$("#fancy_outer").hide();
			$("#fancy_content").hide().empty();
			$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
		}
		// hide arrows SRF 2009025
		jQuery("#bigarrow_left, #bigarrow_right").css('display','none');
	};

	$.fn.fancybox.showLoading = function() {
		clearInterval(loadingTimer);

		var pos = $.fn.fancybox.getViewport();

		$("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
		$("#fancy_loading").bind('click', $.fn.fancybox.close);
		
		loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
	};

	$.fn.fancybox.animateLoading = function(el, o) {
		if (!$("#fancy_loading").is(':visible')){
			clearInterval(loadingTimer);
			return;
		}

		$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');

		loadingFrame = (loadingFrame + 1) % 12;
	};

	$.fn.fancybox.init = function() {
		if (!$('#fancy_wrap').length) {
			// SRF 20090225 $('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_close"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
			$('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="bigarrow_left"><a href="###">&nbsp;</a></div><div id="bigarrow_right"><a href="###">&nbsp;</a></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
			$('<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div id="fancy_close_lightbox"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>').prependTo("#fancy_inner");
			
			$('<table cellspacing="0" cellpadding="0" border="0"><tr><td id="fancy_title_left"></td><td id="fancy_title_main"><div></div></td><td id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');
		}

		if ($.browser.msie) {
			$("#fancy_inner").prepend('<iframe id="fancy_freeIframe" scrolling="no" frameborder="0"></iframe>');
		}

		if (jQuery.fn.pngFix) $(document).pngFix();

    	$("#fancy_close,#fancy_close_lightbox").click($.fn.fancybox.close);
	};

	$.fn.fancybox.getPosition = function(el) {
		var pos = el.offset();

		pos.top	+= $.fn.fancybox.num(el, 'paddingTop');
		pos.top	+= $.fn.fancybox.num(el, 'borderTopWidth');

 		pos.left += $.fn.fancybox.num(el, 'paddingLeft');
		pos.left += $.fn.fancybox.num(el, 'borderLeftWidth');

		return pos;
	};

	$.fn.fancybox.num = function (el, prop) {
		return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
	};

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

		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
			xScroll = self.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			yScroll = document.documentElement.scrollTop;
			xScroll = document.documentElement.scrollLeft;
		} else if (document.body) {
			yScroll = document.body.scrollTop;
			xScroll = document.body.scrollLeft;	
		}

		return [xScroll, yScroll]; 
	};

	$.fn.fancybox.getViewport = function() {
		var scroll = $.fn.fancybox.getPageScroll();

		return [$(window).width(), $(window).height(), scroll[0], scroll[1]];
	};

	$.fn.fancybox.getMaxSize = function(maxWidth, maxHeight, imageWidth, imageHeight) {
		var r = Math.min(Math.min(maxWidth, imageWidth) / imageWidth, Math.min(maxHeight, imageHeight) / imageHeight);

		return [Math.round(r * imageWidth), Math.round(r * imageHeight)];
	};

	$.fn.fancybox.defaults = {
		arrowShow:			false,
		hideOnContentClick:	false,
		zoomSpeedIn:		200,
		zoomSpeedOut:		200,
		frameWidth:			600,
		frameHeight:		400,
		overlayShow:		false,
		overlayOpacity:		0.4,
		itemLoadCallback:	null
		// SRF 20090225 added parameter arrowShow
	};
})(jQuery);
/* END fancybox - lightbox */

/**
 * A simple querystring parser.
 * Example usage: var q = $.parseQuery(); q.fooreturns  "bar" if query contains "?foo=bar"; multiple values are added to an array. 
 * Values are unescaped by default and plus signs replaced with spaces, or an alternate processing function can be passed in the params object .
 * http://actingthemaggot.com/jquery
 *
 * Copyright (c) 2008 Michael Manning (http://actingthemaggot.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 **/
jQuery.parseQuery = function(qs,options) {
	var q = (typeof qs === 'string'?qs:window.location.search), o = {'f':function(v){return unescape(v).replace(/\+/g,' ');}}, options = (typeof qs === 'object' && typeof options === 'undefined')?qs:options, o = jQuery.extend({}, o, options), params = {};
	jQuery.each(q.match(/^\??(.*)$/)[1].split('&'),function(i,p){
		p = p.split('=');
		p[1] = o.f(p[1]);
		params[p[0]] = params[p[0]]?((params[p[0]] instanceof Array)?(params[p[0]].push(p[1]),params[p[0]]):[params[p[0]],p[1]]):p[1];
	});
	return params;
}
/* END querystring parser */

var SFDC = {
	rolebasedIconWidths: [0, 1, 2, 3, 167, 129, 105, 89],
	
	setElementValue : function (elementName, value) {
		document.getElementById(elementName).value = value;		
	}
}

// code to execute when document loads
jQuery(document).ready(function(){

		// initialise plugins
		jQuery(function(){
			jQuery('ul.sf-menu').supersubs({
			minWidth:    8,   // minimum width of sub-menus in em units
			maxWidth:    25,   // maximum width of sub-menus in em units
			extraWidth:  1     // extra width can ensure lines don't sometimes turn over
                               // due to slight rounding differences and font-family
		}).superfish({
		/*pathClass:     'current',*/
		onBeforeShow: function(){
						
						if ($(this ).hasClass("show_left")) {
						$(this).css("left", "-8em");
						}
						}
						});
		
		
		});
          	
	// END initializnavigate()avigate()mary nav
	
	
	var lightEligible = ['crm', 'community', 'events', 'company', 'services'];
	if (null != lightwho)
	{
		jQuery('ul.sf-menu li.primaryli a.' + lightwho).addClass('active');
	}
	

// BEGIN Code to move menu from top of page to footer
	jQuery('#footer').prepend(jQuery('#main')); // move tab menu, which is currently display:none, from head to foot
	jQuery('#main').css('display', 'block'); // display tab menu
	
	// END Code to move menu from top of page to footer

	// BEGIN Footer Tab Menu		
	// set tab1 to current tab
	jQuery(jQuery('#footer .tabmenu .links a')[0]).addClass('selected');
	jQuery('#footer .tabmenu .tab1').addClass('currentTab');
		
	/* BEGIN for ie6 center indicator arrows below text */
	if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
		jQuery.each(jQuery('#footer .tabmenu .links a'), function(i, obj){
			jQuery(obj).find('.indicator').css('left', jQuery(obj).width() / 2 - 8);
		});
	}
	/* END for ie6 center indicator arrows below text */
	
	jQuery('#footer .tabmenu .links a').click(function(e) {
		jQuery('#footer .tabmenu .links a').removeClass('selected');
		jQuery(this).blur().addClass('selected');
		// read href value (e.g. #main_tab9) and trim first 6 characters		
		var tabclass = jQuery(this).attr('href').substring(6);	

		
		jQuery('#footer .tabmenu .currentTab').css('display','none').removeClass('currentTab');
		jQuery('#footer .tabmenu .'+tabclass).addClass('currentTab').css('display','block');
						
		e.preventDefault();  // prevent following link
				
	}); // jQuery('#footer .tabmenu .links a').click(
	
	// BEGIN footer readmore/collapse links
	jQuery('#footer .tab .readmore').click(function(e) {
		var $target = jQuery(e.target).hide();
		jQuery('.remainder_of_long_version', $target.parents('.tab')).show().end().find('a.collapse').css('display','block'); 
	});
	jQuery('#footer .tab .collapse').click(function(e) {
		var $target = jQuery(e.target).hide();
		jQuery('.remainder_of_long_version', $target.parents('.tab')).hide().end().find('a.readmore').css('display','block'); 
	});
	// END footer readmore/collapse links
	// END Footer Tab Menu

	//initialize navigation
	//jQuery('ul.sf-menu').superfish();
	
	//If the User resizes the window, reposition bugs
	jQuery(window).bind("resize", reposs);
		
	// BEGIN learn, try, buy area	

	jQuery('#learn_try_buy #learn').click(function(e){
		jQuery('#learn_try_buy #learn_try_buy_menu').css('position','absolute').fadeOut('slow');
		jQuery('#learn_try_buy .learn_content').css('position','absolute').fadeIn('slow');
		e.preventDefault();
	});
		
	jQuery('#learn_try_buy #try').click(function(e){
		jQuery('#learn_try_buy  #learn_try_buy_menu').css('position','absolute').fadeOut('slow');
		jQuery('#learn_try_buy .try_content').css('position','absolute').fadeIn('slow');
		e.preventDefault();
	});

	jQuery('#learn_try_buy #buy').click(function(e){
		jQuery('#learn_try_buy #learn_try_buy_menu').css('position','absolute').fadeOut('slow');
		jQuery('#learn_try_buy .buy_content').css('position','absolute').fadeIn('slow');
		e.preventDefault();
	});
	
	jQuery('#learn_try_buy #readytobuy').click(function(e){
		jQuery('#learn_try_buy #learn_try_buy_menu').css('position','absolute').fadeOut('slow');
		jQuery('#learn_try_buy .readytobuy_content').css('position','absolute').fadeIn('slow');
		e.preventDefault();
	});


	jQuery("#learn_try_buy .ltbreset").click(function(e){
		jQuery('#learn_try_buy .content').css('position','absolute').fadeOut('slow');
		jQuery('#learn_try_buy #learn_try_buy_menu').css('position','absolute').fadeIn('slow');
		e.preventDefault();		
	});
	
	// END learn, try, buy area

	// BEGIN clouds
	jQuery('#bodycontent .clouds .cloud').hover(
		function() {
			// hover over
			jQuery(this).animate({height:'105px'});
		},
		function() {
			// hover out
			jQuery(this).animate({height:'95px'},'slow','easeOutBounce');			
		}
	);
	// END clouds
	
	// BEGIN tying head shots to link below them
	jQuery('#bodycontent .headshotlinks li').hover(
		function(){
			jQuery(this).find('a.headshot')
				.css('background-position','0 -111px').end()
			.find('a.text')
				.css('color','#FF0000');
		},
		function() {
			jQuery(this).find('a.headshot')
				.css('background-position','0 0').end()
			.find('a.text')
				.css('color','#999999');				
		}
	);	
	// END tying head shots to link below them
	
	// BEGIN login page - login button hover
	jQuery('.login_form_box #login_form input.button').hover(
		function() {
			jQuery(this).attr('src', '/common/assets/css/images/login/login_button-ro.png');
		},
		function() {
			jQuery(this).attr('src', '/common/assets/css/images/login/login_button.png');
		}
	);
	// END login page - login button hover
		










	
	// END TEMP wrapper page javascript
	
	// BEGIN TEMP rolebased page - connect links to functions for testing
	// Functions will actually be called by a flash element
	// calls are of the form 
	// rolebased_tab_reveal('tab1')
	// rolebased_tab_reveal('tab2')
	// etc.	
	jQuery('#gradientwrap .tabmenu .links a')
		.click(function(e) {
			var tabclass = jQuery(this).attr('name');
			rolebased_tab_reveal(tabclass);	
			e.preventDefault();  // prevent following link				
	}); // jQuery('#gradientwrap .tabmenu .links a').click(
	// END TEMP rolebased page - connect links to functions for testing
	
	// BEGIN login page - video scroller
	
	// BEGIN auto-pilot rotate images
	var ldm_auto_rotate_image_current = 0;
	
	
	var ldm_auto_rotate_image_interval_obj = setInterval(function(){
		ldm_auto_rotate_image_current += 1;
		var list_of_links = jQuery('#loginpage .graphic_scroller ul li a')
		if (ldm_auto_rotate_image_current >= list_of_links.length) { ldm_auto_rotate_image_current = 0; }
		jQuery('img.primary').attr('src', jQuery(list_of_links[ldm_auto_rotate_image_current]).attr('href'));		
	}, 2000);
	
	// END auto-pilot rotate images

	// initialize carousel (scroller)	
	jQuery('#loginpage .graphic_scroller ul').jcarousel({ scroll: 1 });
	
	// setup float up/down on hover for video images
	jQuery('#loginpage .graphic_scroller ul li').hover(
		function() {
			jQuery(this).animate({
					'top': '-10px'
				}, 'slow');
		},
		function() {
			jQuery(this).animate({
					'top': '0px'
				}, 'fast');						
		}
	); // jQuery('#loginpage .graphic_scroller ul li').hover(
	jQuery('#loginpage .graphic_scroller ul li a').click(function(e) {
		jQuery('img.primary').attr('src', jQuery(this).attr('href'));
		clearInterval(ldm_auto_rotate_image_interval_obj); // terminate auto rotate
		e.preventDefault();				
	}); // jQuery('#loginpage .graphic_scroller ul li').click(function() {
	
	// END login page - video scroller	
	
	// BEGIN lightbox bind
		// modify href of lightbox links to include parameter display_type=lb 
		// to communicate to the page to display ONLY the lightbox content
		if (jQuery("a[class*='lb_']").length) {
			jQuery.each($("a[class*='lb_']"), function(index, item) {
				
			  	jQuery(item).attr('href', jQuery(item).attr('href')+
					// determine whether or not this is the first parameter and then 
					// use ? or &amp; accordingly
					(jQuery(item).attr('href').match("\\?") ? '&amp;' : '?') +
					"display_type=lb" +
					(jQuery(item).attr('class').indexOf('billboard') != -1 ? '_bb' : '')); 
					
					var className = jQuery(item).attr('class')
					var classValues = className.substr(className.indexOf('lb_')).split('_');
					
					jQuery(item).fancybox({
						overlayShow:true, 
						overlayOpacity:0.8, 
						frameWidth:classValues[1], 
						frameHeight:classValues[2],
						arrowShow: (jQuery(item).attr('class').indexOf('arrow') != -1)
					});
			});
		}
	// END lightbox bind
	
	// BEGIN casestudy lightbox specific code
	// only execute this code if the following selector is present
	if (jQuery('#lb_casestudypage').length) {
		jQuery('.social_bar').empty();
		//jQuery('.tab_title').appendTo('.social_bar');
		
		jQuery('.social_bar').append('<a id="lb_link_tab1" class="indicator" href="#tab1"><span></span>&nbsp;</a><a id="lb_link_tab2" class="tab1" href="#tab2"><span></span>&nbsp;</a><a id="lb_link_tab3" href="#tab3"><span></span>&nbsp;</a>');
		jQuery('.social_bar a').click(function(e) { 
			jQuery('.social_bar a.indicator').removeClass('indicator');
			jQuery(this).addClass('indicator').blur();
			var selector = '#lb_casestudypage .summary .' + jQuery(this).attr('id').substring(8);
			
			jQuery('#lb_casestudypage .summary .tab').hide();
			jQuery(selector).show();
			
			e.preventDefault();			
		});
		
	} // if ($('#lb_casestudypage').length) {
	// END casestudy lightbox specific code	
	
	// BEGIN country selector page - submit button hover
	jQuery('#lb_content .language_form .submit_button').hover(
		function() {
			jQuery(this).attr('src', '/common/assets/css/images/submit_buttons/submit_gray.png');
		},
		function() {
			jQuery(this).attr('src', '/common/assets/css/images/submit_buttons/submit_red.png');
		}
	);
	// END country selector page - submit button hover
	
	
	
	
	
	
	// BEGIN SFA right side javascript menu 
	jQuery('#sfa_js_menu>ul>li>a').click(function(e) { 
		if (jQuery(this).parent().hasClass('selected')) {
			jQuery(this).parent().removeClass('selected');
		} else {
			jQuery('#sfa_js_menu>ul>li').removeClass('selected');
			jQuery(this).parent().addClass('selected');			
		}
		jQuery(this).blur();
		e.preventDefault();
	});
	// END SFA right side javascript menu 	
	
	// BEGIN SFA left side javascript menu 
	jQuery('#sidenavigation>li>div>a').click(function(e) {
		jQuery('#sidenavigation_bottom span').removeClass('active');		 
		if (jQuery(this).parent().hasClass('selected')) {
			jQuery(this).parent().removeClass('selected');
		} else {
			jQuery('#sidenavigation>li>div').removeClass('selected');
			jQuery(this).parent().addClass('selected');						
			if ( jQuery(this).parent().parent().hasClass('last') ) {
				jQuery('#sidenavigation_bottom span').addClass('active');
			}
		}
		jQuery(this).blur();
		//e.preventDefault();
	});
	// END SFA left side javascript menu 	
	
	// BEGIN SFA widget/tab behavior
	jQuery('#sfapage .crm-module li a').click(function(e) {
		var $this 		= jQuery(this).blur()
			,$module	= $this.parents('div.module');

		//radio 'active' class to current link container
		jQuery('li', $module).removeClass('active');
		$this.parents('li').addClass('active');
		
		//radio 'active' class to current content
		jQuery('.module-content', $module).removeClass('active');
		jQuery($this.attr('href').replace('#', '.'), $module).addClass('active');
		e.preventDefault();
	}); 
	//TODO: the part below should be removed once all the content has been migrated to a new template (mv, 09/23/09)
	jQuery('#sfapage #featurelinks li a').click(function(e) {
		var tabclass = jQuery(this).blur().attr('href');
		jQuery('#tabs .currentTab').fadeOut('normal', function() {
			jQuery(this).removeClass('currentTab');
			jQuery(tabclass).addClass('currentTab').fadeIn('slow');					
		});				
		var index = tabclass.substring(10);	
		jQuery('#snapshot img').hide();
		jQuery('#snapshot img.feature'+index).show();
		jQuery('#sfapage #featurelinks li a span').removeClass('selected');				
		//jQuery('#sfapage #featurelinks li a').removeClass('noline');
		//jQuery(this).addClass('noline');
		jQuery(this).find('span').addClass('selected');
		e.preventDefault();  // prevent following link
	});
	// END SFA widget/tab behavior	



	// BEGIN advanced_search_link DROP DOWN
	jQuery('#advanced_search_link').click(function(e) {
		jQuery('#dropdown').toggle();
		e.preventDefault();		
	});
	
	jQuery('#dropdown_close').click(function(e) {
		jQuery('#dropdown').hide();
		e.preventDefault();
	});
	// END advanced_search_link DROP DOWN	

	// BEGIN partners advanced_search select all/deselect all
	jQuery('#dropdown_selectall').click(function(e) {
		jQuery('#dropdown input:checkbox').attr('checked',true);
		e.preventDefault();
	});
	jQuery('#dropdown_deselectall').click(function(e) {
		jQuery('#dropdown input:checkbox').attr('checked',false);
		e.preventDefault();	
	});
	
	// END partners advanced_search select all/deselect all	

	// BEGIN partners advanced_search apply button rollover 
	jQuery('#partnerspage #dropdown .apply_button .button').hover(
		function() {
			jQuery(this).attr('src', 'common/assets/css/images/partners/apply_button-ro.png');
		},
		function() {
			jQuery(this).attr('src', 'common/assets/css/images/partners/apply_button.png');
		}
	);
	// END partners advanced_search apply button rollover 
	
	// BEGIN partners submit button rollover 	
	jQuery('#partnerdetail .contact_partner .submit_button').hover(
		function() {
			jQuery(this).attr('src', 'common/assets/css/images/partners/submit_button-ro.png');
		},
		function() {
			jQuery(this).attr('src', 'common/assets/css/images/partners/submit_button.png');
		}
	);	
	// END partners submit button rollover 	

	
	
	
	
	
	
	// BEGIN customer landing page link rollover
	jQuery('#custlandingpage #bodycontent .crm a.lone_link, #custlandingpage #bodycontent .force a.lone_link').hover(
		function() {
			jQuery(this).find('img').attr('src', 'common/css/images/cust_landing/arrow-ro.png');
		},
		function() {
			jQuery(this).find('img').attr('src', 'common/css/images/cust_landing/arrow.png');
		}		
	);	
	// END customer landing page link rollover	
	
	
	
	
	
	
	//BEGIN functionality for rolebased navigation
	if (jQuery('#gradientwrap .tabmenu .links').length) {
		jQuery('#gradientwrap .tabmenu .links .container').css('width', ((SFDC.rolebasedIconWidths[jQuery('#gradientwrap .tabmenu .links a').size()] + 25) * jQuery('#gradientwrap .tabmenu .links a').size()) + 'px');
		jQuery('#gradientwrap .tabmenu .links a').css('width', SFDC.rolebasedIconWidths[jQuery('#gradientwrap .tabmenu .links a').size()] + 'px');
		jQuery('#gradientwrap .tabmenu .links a .imgtext').css('width', SFDC.rolebasedIconWidths[jQuery('#gradientwrap .tabmenu .links a').size()] + 'px');
		jQuery('#gradientwrap .tabmenu .links a .imgbox').css('width', SFDC.rolebasedIconWidths[jQuery('#gradientwrap .tabmenu .links a').size()] + 'px');
		
		//default first icon to selected
		var firstImg = jQuery('#gradientwrap .tabmenu .links a:first').find('img.zoom');
		
		if (firstImg.length) {
			var iconName = jQuery(firstImg).attr('src').replace( 'small', 'big' );

			jQuery(firstImg).attr('src', iconName );
			jQuery('#gradientwrap .tabmenu .links a:first').css('font-weight', 'bold').css('color', 'black');
			jQuery(firstImg).addClass('keepzoom');
		}
		
		//mouse over
		jQuery('#gradientwrap .tabmenu .links a').mouseover(function(){
			var that = jQuery(this).find('img.zoom');
			//simple as chnaging image src.
			jQuery(that).attr('src', jQuery(that).attr('src').replace( 'small', 'big' ));
			//animate image size fo effect
			jQuery(that).stop().animate({'width':'120px','height':'80px'},'fast','swing');
		});
		
		jQuery('#gradientwrap .tabmenu .links a').mouseout(function(){		
			var that = jQuery(this).find('img.zoom');
			jQuery(that).unbind('mouseover');
			jQuery(that).attr('src', jQuery(that).attr('src').replace('big', 'small' ));
			jQuery(that).stop().animate({'width':'60px','height':'40px'},'fast','swing');
			
			//before we leave mouseout, check if clicked, if so keep zoom
			var checkzoom = jQuery('#gradientwrap .tabmenu .links a img.keepzoom');
			if(typeof(jQuery(checkzoom).attr('src'))  != 'undefined'){
			
				jQuery(checkzoom).attr('src', jQuery(checkzoom).attr('src').replace( 'small', 'big' ));
				jQuery(checkzoom).stop().animate({'width':'120px','height':'80px'},'fast','swing');
			}
			
		});
		//see sf.js for duplicate function that switches tab content
		jQuery('#gradientwrap .tabmenu .links a').click(function(e) {
			var prevzoom = jQuery('#gradientwrap .tabmenu .links a img.keepzoom')
			var currzoom = jQuery(this).find('img.zoom');
			
			//reset all links to default gray color
			jQuery('#gradientwrap .tabmenu .links a').css('font-weight', 'normal').css('color', '#808080');
			
			jQuery(this).css('font-weight', 'bold').css('color', 'black');
			
			if (prevzoom.attr('class') != undefined) {
				zoomOut(prevzoom);
				
				jQuery('#gradientwrap .tabmenu .links a img.keepzoom').removeClass('keepzoom');
			}
			//set the zoom persistent
			currzoom.addClass('keepzoom');
			
			jQuery.each($('#gradientwrap .tabmenu .links a .imgtext'), function() {
				if ((jQuery(this).height() + 55) > jQuery('#gradientwrap .tabmenu .links').height()) {
					jQuery('#gradientwrap .tabmenu .links').height(jQuery(this).height() + 55);
				}
			});
			
			e.preventDefault();  // prevent following link				
		});
		
		var largestImgtext = 40;
		
		jQuery.each($('#gradientwrap .tabmenu .links a .imgtext'), function() {
			if (jQuery(this).height() > largestImgtext) {
				largestImgtext = jQuery(this).height();
			}
		});

		jQuery('#gradientwrap .tabmenu .links').height(largestImgtext + 55);
	}
	
	if (jQuery('#bodycontent .homepage .crm, #bodycontent .homepage .force, #bodycontent .homepage .support').length) {
		var tallestElement = 0;
		
		jQuery.each(jQuery('#bodycontent .homepage .crm .content, #bodycontent .homepage .force .content, #bodycontent .homepage .support .content'), function() {
			if (jQuery(this).height() > tallestElement ) {
				tallestElement = jQuery(this).height();
			}
		});
		
		jQuery('#bodycontent .homepage .crm .content, #bodycontent .homepage .force .content, #bodycontent .homepage .support .content').height(tallestElement);		
	}
	
	// Zoom In
	function zoomIn(who) {
		jQuery(who).stop().animate({'width':'120px','height':'80px'},'fast','easeInSine');
		jQuery(who).attr('src', jQuery(who).attr('src').replace( 'small', 'big' ));

	}
	
	// Zoom Out
	function zoomOut(who) {
		jQuery(who).attr('src', jQuery(who).attr('src').replace( 'big', 'small' ));
		jQuery(who).stop().animate({'width':'60px','height':'40px'},'fast','swing');
	}
	//END functionality for rolebased navigation
	
	jQuery('a#productsLink').click(function(e) {
		var products = jQuery('div#byProduct');
		var roles = jQuery('div#byRole');
		
		var rLink = jQuery('a#rolesLink');		
		var pLink = jQuery('a#productsLink');				
		rLink.css('text-decoration','underline');				
		pLink.css('text-decoration','none');
		
		roles.fadeOut('normal', function() {
			products.addClass('show').fadeIn('slow');
		})
		
		e.preventDefault();  // prevent following link				
	});
	
	jQuery('a#rolesLink').click(function(e) {
		var products = jQuery('div#byProduct');
		var roles = jQuery('div#byRole');
		
		var rLink = jQuery('a#rolesLink');		
		var pLink = jQuery('a#productsLink');				
		rLink.css('text-decoration','none');
		pLink.css('text-decoration','underline');		
		
		products.fadeOut('normal', function() {
			roles.addClass('show').fadeIn('slow');
		})
		
		e.preventDefault();  // prevent following link				
	});
	
	var qs = jQuery.parseQuery();
	
	if (qs.display_type && qs.display_type.indexOf('lb') != -1) {
		jQuery('body').attr('id', 'lb_casestudypage');
		jQuery('#pagewrap').css('width', '650px');
		jQuery('#gradientwrap').css('background', 'none').css('width', '650px');
		jQuery('div#header').hide();
		jQuery('div#top_nav').hide();
		jQuery('div.sidebar').hide();
		jQuery('div.full_study').hide();
		jQuery('div#footer').hide();
		
		
		if (qs.display_type.indexOf('_bb') != -1) {
			jQuery('.billboard').css('padding-left', '0px');
		} else {
			jQuery('.billboard').hide();
		}
				
		jQuery('.social_bar').empty();
		//jQuery('.tab_title').appendTo('.social_bar');
		
		jQuery('.social_bar').append('<a id="lb_link_tab1" class="indicator" href="#tab1"><span></span>&nbsp;</a><a id="lb_link_tab2" class="tab1" href="#tab2"><span></span>&nbsp;</a><a id="lb_link_tab3" href="#tab3"><span></span>&nbsp;</a>');
		
		jQuery.each(jQuery('#lb_casestudypage .summary .tab1 .bullet'), function(i) {
			if (i > 2) {
				jQuery(this).hide();
			}
		})
			
		jQuery('.social_bar a').click(function(e) { 
			jQuery('.social_bar a.indicator').removeClass('indicator');
			jQuery(this).addClass('indicator').blur();
			var selector = '#lb_casestudypage .summary .' + jQuery(this).attr('id').substring(8);
			
			jQuery('#lb_casestudypage .summary .tab').hide();
			jQuery(selector).show();
			
			jQuery.each(jQuery(selector).children('.bullet'), function(i) {
				if (i > 2) {
					jQuery(this).hide();
				}
			});
			
			e.preventDefault();			
		});
	}	
	
	// BEGIN create function to trigger lighbox on customer landing page
	// this function is called by flash
	landingTriggerLightbox = function(num) {
		jQuery('#CustomCode #lb_links a.lb'+num).trigger('click');
	};
	// END create function to trigger lighbox on customer landing page		
	
	
	// BEGIN Popup Bubble for training/certification
	// general popup
	jQuery('.listboxmiddle .popuptrigger, #catalog .popuptrigger').hover(
		function() {
			jQuery(this).addClass('active');	
		},
		function() {			
			jQuery(this).removeClass('active');			
		}
	);
	
	jQuery('.popuptrigger .col1').hover(
		function() {
			jQuery(this).parent().addClass('active');	
		},
		function() {			
			jQuery(this).parent().removeClass('active');			
		}
	);
	
	/* specifically for diagram, this required retooling adding/removing active class */
	jQuery('#diagram .popuptrigger').unbind();
	jQuery('#diagram .popuptrigger')
		.unbind()
		.hover(
			function() {
				jQuery(this).addClass('active');	
			},
			function() {			
				jQuery(this).removeClass('active').find('.popup').css('display','none');			
			}
		);
		
	// specifically for diagram, hide/reveal appropriate popup based on link		
	jQuery('#diagram')
		.find('.popuplinktrigger') // find all link triggers
			.parent().parent()
				.find('.popup').css('display','none').end() // hide all popups (controled by link triggers)
			.end().end()
			.mouseover( // on mouseover link trigger
				function() {
					var cname = jQuery(this).attr('rel'); // retrieve rel info for link trigger
					jQuery(this)
						.parent().parent()
							.find('.popup').css('display','none').end() // hide all popups controlled by link triggers
							.find('.'+cname).css('display','block'); // remove inline 'display' for class matching rel tag

				} // function() {
			); //.mouseover(	
	// END Popup Bubble for training/certification		
		
	// BEGIN centering diagram text in arrows on traincert pages
	jQuery.each(
	    jQuery('#diagram .outlinearrow .links'),
	    function(i, obj) {
	        var height = jQuery(obj).height(); // determine current height of content
	        jQuery(obj).css('padding-top',2+(62-height)/2); // set top padding to center content            
	    } // function(i, obj)
	); // jQuery.each(		
	// END centering diagram text in arrows on traincert pages
	
	// BEGIN rolestage widget on Premier Training

	// assign functionality to links in widget navigation
	jQuery.each(
		jQuery('#rolestagenav .links a'),
		function(i, obj) {
			jQuery(obj).click(function(e){
				e.preventDefault();
				jQuery(this).blur().parent().find('.active').removeClass('active');
				jQuery(this).addClass('active');
				jQuery('#rolestagebody .active').removeClass('active').hide();
				jQuery('#rolestagebody .primtab'+(i+1)).addClass('active').show();
			}); // jQuery(obj).click(
		}
	); // jQuery.each
				
	// assign link functionality to sidebar links in widget navigation
	jQuery.each(
		jQuery('#rolestagebody .primtab .subcontrols'), // for each set of subcontrols (currently two)
		function(i, obj) {
			jQuery.each(
				jQuery(obj).find('a'), // for each a tag  inside the subcontrol
				function(i, obj) {
					jQuery(obj).click(function(e){
						e.preventDefault();
						jQuery(this)
							.blur()
							.parent()
								.parent().parent().parent()
									// on click (remove class activesub and hide) current active sub tab
									.find('.activesub').removeClass('activesub').hide().end()
									// on click add class activesub to appropriate sub tab
									.find('.subtab'+(i+1)).addClass('activesub').show().end()
									.find('.onlink')
										.find('img.pic').attr('src', function() {
											// remove '-on' from the end of active link
											var temp = jQuery(this).attr('src');
											var ext = temp.substring(temp.length-3);
											var src = temp.substring(0, temp.length-4);
											if (temp.substr(temp.length-7, 3)=='-on') {		
												src = src.substring(0, src.length-3);
											}
											src += "."+ext;
											return src;
										}).end()
									.removeClass('onlink').end()
								.end().end().end()
							.addClass('onlink')
							.end()
							.find('img.pic').attr('src', function(){
								// add '-on' to end of image
								var temp = jQuery(this).attr('src');
								var ext = temp.substring(temp.length-3);
								var src = temp.substring(0, temp.length-4);
								if (temp.substr(temp.length-7, 3)!='-on') {
									src += '-on';
								}
								src += "."+ext;
								return src;
							});							
					}); // jQuery(obj).click(			
				}  // function(i, obj)
			); // jQuery.each (link within a subcontrol)	
		}//function(i, obj) {
	); // jQuery.each(  (subcontrol)		
	
	// ie6 ONLY - png fix images in widget
	if (jQuery.browser.msie && jQuery.browser.version.substr(0, 2) == "6.") {
		jQuery.each(
			jQuery('#rolestagebody .primtab .wordlinkcol div a img.word'),
			function(i, obj) {				
				jQuery(obj)
					.css('filter',"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,sizingMethod=crop,src='"+jQuery(obj).attr('src')+"')")
					.attr('src', 'images/blank.gif');
			}
		); // jQuery.each(				
	} //if ie6
	// END rolestage widget on Premier Training
	
	jQuery.each(jQuery('#aloharegpg td.col2 .std'), function() {
		jQuery(this).focus( function () {
			jQuery(this).css('background','#C3E5F7');
		})
    });
	
	jQuery.each(jQuery('#aloharegpg td.col2 .std'), function() {
		jQuery(this).blur( function () {
			jQuery(this).css('background','#FFFFFF');
		})
    });
    
	jQuery.each(jQuery('#form-container .std'), function() {
		jQuery(this).focus( function () {
			jQuery(this).css('background','#C3E5F7');
		})
    });
	
	jQuery.each(jQuery('#form-container .std'), function() {
		jQuery(this).blur( function () {
			jQuery(this).css('background','#FFFFFF');
		})
    });
    
	// If the browser is IE,
	if(jQuery.browser.msie) {
		$(function() {
			var zIndexNumber = 100;
			$('div').each(function() {
				var pos = $(this).css("position");
				var id = $(this).attr("id");
				var style_class = $(this).attr("class");
				
				// If it's positioned,
				if((pos == "relative" || pos == "absolute" || pos == "fixed") && id.indexOf("fancy") == -1 && style_class.indexOf("fancy") == -1) {
					$(this).css('zIndex', zIndexNumber);
					zIndexNumber -= 1;
				}	
			});
		});
	}
        
});  // jQuery(document).ready(function(){


	//generic lightbox launcher
	launchLightbox = function() {
		var date = new Date();
		var uniqueId = date.getTime();
		
		jQuery('body').append("<a class='lb_" + arguments[1] + "_" + arguments[2] + " lb" + uniqueId + "' href='" + arguments[0] + "?display_type=lb' />");
		
		jQuery('body a.lb'+uniqueId).fancybox({
						overlayShow:true, 
						overlayOpacity:0.8, 
						frameWidth:arguments[1], 
						frameHeight:arguments[2],
						arrowShow: false
					});
					
		jQuery('body a.lb'+uniqueId).click();
	};


		// function to be called by flash, to reveal tabs on rolebased_crm page
		function rolebased_tab_reveal(tabclass) {
			var currentTab = jQuery('#gradientwrap .tabmenu .currentTab');
			var newTab = jQuery('#gradientwrap .tabmenu .'+tabclass);
			
			try {
				if (newTab.attr('class') != undefined && newTab.attr('class') != currentTab.attr('class')) {
					currentTab.fadeOut('normal', function() {
						newTab.addClass('currentTab').fadeIn('slow');
						jQuery(this).removeClass('currentTab');
					})
				}
			} catch(e) {
				jQuery('#gradientwrap .tabmenu .'+tabclass).addClass('currentTab').fadeIn('slow');
			}
		} // function rolebased_tab_reveal(tabClassName) {

		function showbug(id){
			
			//onBeforeShow callback of superfish nav
					
			if ( jQuery(id).hasClass("crm") ){
				jQuery('#redbug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat left top').css('z-index','9999').css('display','block');
				if( jQuery.browser.msie && (jQuery.browser.version < 7) ) {
					jQuery('#redbug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat left top').css('z-index','9999');
				}
				//simulate hover function
				simulatehover('a.crmlink', 'span.crmspan');
				
				//hide or reset bluebug items
				jQuery('#bluebug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				
				//reset others
				resetlinkandspan('a.forcelink, a.morelink, a.companylink, a.eandclink', 'span.forcespan, span.morespan, span.companyspan, span.eandcspan');
					
			}
			if ( jQuery(id).hasClass("force") ){
				
				jQuery('#bluebug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat left -75px').css('z-index','9999').css('display','block');
				if( jQuery.browser.msie && (jQuery.browser.version < 7) ) {
					jQuery('#bluebug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat left -75px').css('z-index','9999');
				}
				
				//simulate hover function
				simulatehover('a.forcelink', 'span.forcespan');
				
				//hide or reset other menu items
				jQuery('#redbug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
								
				//reset others
				resetlinkandspan('a.crmlink, a.morelink, a.companylink, a.eandclink', 'span.crmspan, span.morespan, span.companyspan, span.eandcspan');
			}
			
			if ( jQuery(id).hasClass('eandc') ){
			
				
				//possdoconload();			
				jQuery('#sassybug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat 4px -284px').css('display','block');
				
				if( jQuery.browser.msie && (jQuery.browser.version <=7) ) {
					jQuery('#sassybug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat 4px -284px');
				}	
				
				//simulate hover function
				simulatehover('a.eandclink', 'span.eandcspan');
					
				//hide or reset other menu items
				jQuery('#bluebug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				jQuery('#redbug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');			
				
				//reset others
				resetlinkandspan('a.crmlink, a.forcelink, a.morelink, a.companylink', 'span.crmspan, span.forcespan, span.morespan, span.companyspan');
				
				
			}
			if ( jQuery(id).hasClass('company') ){
				
				//possdoconload();
				jQuery('#companybug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat -13px -155px').css('z-index','0').css('display','block');
				if( jQuery.browser.msie && (jQuery.browser.version <=7) ) {
					jQuery('#companybug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat -13px -155px').css('z-index','0');
				}	
				
				//simulate hover function
				simulatehover('a.companylink', 'span.companyspan');
					
				//hide or reset other menu items
				jQuery('#bluebug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				jQuery('#redbug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');				
				
				//reset others
				resetlinkandspan('a.crmlink, a.forcelink, a.morelink, a.eandclink', 'span.crmspan, span.forcespan, span.morespan, span.eandcspan');
				
			}
			if ( jQuery(id).hasClass('more') ){
				
				//possdoconload();
				jQuery('#morebug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat -13px -155px').css('z-index','0').css('display','block');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#morebug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat -13px -155px').css('z-index','0');
				}				
				
				//simulate hover function
				simulatehover('a.morelink', 'span.morespan');
				
					
				//hide or reset other menu items
				jQuery('#bluebug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				jQuery('#redbug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');				
				
				//reset others
				resetlinkandspan('a.crmlink, a.forcelink, a.companylink, a.eandclink', 'span.crmspan, span.forcespan, span.companyspan, span.eandcspan');
				
			}
			
		}
		
		
		function hidebug(id){
			//reset topnav
			if ( jQuery(id).hasClass("crm") ){
				//jQuery('#redbug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				jQuery('#redbug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 51px').css('z-index','0');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#redbug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat right 51px').css('z-index','0');
				}
				
				resetlinkandspan('a.crmlink', 'span.crmspan');			
			}
			if ( jQuery(id).hasClass("force") ){
				//jQuery('#bluebug').css('background-image', 'url(/common/assets/css/images/spacer.gif)').css('z-index','0');
				jQuery('#bluebug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 51px').css('z-index','0');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#bluebug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat right 51px').css('z-index','0');
				}
				
				resetlinkandspan('a.forcelink', 'span.forcespan');
			}
			if ( jQuery(id).hasClass("more") ){
				//jQuery('#leftcurve').css('background-image', 'url(/common/assets/css/images/spacer.gif)');
				jQuery('#morebug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 51px').css('z-index','0');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#morebug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat right 51px').css('z-index','0');
				}
				
				resetlinkandspan('a.morelink', 'span.morespan');
			}
			if ( jQuery(id).hasClass("eandc") ){
				
				//jQuery('#leftcurve2').css('background-image', 'url(/common/assets/css/images/spacer.gif)');
				jQuery('#sassybug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 67px');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#sassybug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat right 67px');
				}
				
				resetlinkandspan('a.eandclink', 'span.eandcspan');
				
			}
			if ( jQuery(id).hasClass("company") ){
				
				//jQuery('#leftcurve3').css('background-image', 'url(/common/assets/css/images/spacer.gif)');
				jQuery('#companybug').css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 51px').css('z-index','0');
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery('#companybug').css('background', 'url(/common/assets/css/images/nav/bugs.gif) no-repeat right 51px').css('z-index','0');
				}
				
				resetlinkandspan('a.companylink', 'span.companyspan');
				
			}
			
			
		}
		function simulatehover(link, span){
			//we want to keep hover states for the curve and link effects for the top menu items even after we've
			// moused out to the subnav items. 
			//using js, simulate css hover states

				//simulate link a:hover, see stylesheet
				jQuery(link)
					.css('background-color', '#ffffff')
					.css('border-right', '1px #ffffff solid')
					.css('padding-top', '18px')
					.css('margin-top', '-8px')
					.css('height', '15px')
					//.css('padding-bottom', '20px')
					.css('margin-right', '10px')
					.css('padding-right', '20px')
					.css('color', '#000000');
				
				//keep top_curve after you hover out of the span
				jQuery(span)
					.css('background-image', 'url(/common/assets/css/images/nav/top_curve.png)')
					.css('background-repeat', 'no-repeat')
					.css('background-position', 'top right');
					
				if( jQuery.browser.msie && (jQuery.browser.version <7) ) {
					jQuery(span)
					.css('background-image', 'url(/common/assets/css/images/nav/top_curve8.png)')
					.css('background-repeat', 'no-repeat')
					.css('background-position', 'top right');
				}
				

		}
		function resetlinkandspan(link, span){
		
			jQuery(link)
					.css('background-color', 'transparent')
					.css('border-right', '1px #99908c solid')
					.css('padding-top', '10px')
					.css('margin-top', '0px')
					.css('height', '0px')
					.css('margin-right', '0px')
					.css('padding-right', '30px')
					.css('padding-bottom', '10px')
					.css('color', '#99908c');
					
			//special reset because company does not have a right border
			jQuery('a.morelink').css('border-right', '0px #99908c solid');
					
			jQuery(span).css('background', 'url(/common/assets/css/images/nav/bugs.png) no-repeat right 51px').css('z-index','0');
			
		
		}
		
		function lightup(who,offset){
			
			showbug(jQuery('.'+who));
			jQuery('#'+who)
				.css('display', 'block')
				.css('visibility', 'visible')
				.css('top', '37px')
				.css('left', '0px')
				.css('opacity', '1');
			
			
			jQuery(jQuery('#'+who+'>li>a')[offset]).css('color','#000');
			

		}
		function lightout(who,offset){
		
			hidebug(jQuery('.'+who));
			jQuery('#'+who)
				.css('display', 'none')
				.css('visibility', 'hidden')
				.css('top', '37px')
				.css('left', '0px')
				.css('opacity', '1');
				
			jQuery(jQuery('#'+who+'>li>a')[offset]).css('color','#99908C');
		}
		function isSet( variable )
		{
			return( typeof( variable ) != 'undefined' );
		}
		function possubs(){
			//here we are providing defaults possdoconload will determin offsets dynamically
		
			//mozilla defaults, position entire subnav UL ---> we are shifting left
			jQuery('.sf_level_two.more').css('padding-left', '421px');
			jQuery('.sf_level_two.eandc').css('padding-left', '247px');
			jQuery('.sf_level_two.company').css('padding-left', '510px');
			
			//bug/rightcurve of the primarynav default position
			xblue=190; xeandc=488; xcompany=635; xmore=769;
			
			if( jQuery.browser.safari) {
				jQuery('.sf_level_two.more').css('padding-left', '421px');	
				xblue=189; xeandc=625; xcompany=633; xmore=767;
			}
			if( jQuery.browser.msie) {
				jQuery('.sf_level_two.more').css('padding-left', '421px');
				jQuery('.sf_level_two.company').css('padding-left', '500px');
				jQuery('.sf_level_two.eandc').css('padding-left', '242px');
				xblue=185; xeandc=565; xcompany=618; xmore=751;
			}
			if( jQuery.browser.msie && (jQuery.browser.version == 7)) {
				
				xeandc=525; 
			}

			//bug positions
			jQuery('#bluebug').css('left', xblue+'px').css('top', '0px');
			jQuery('#morebug').css('left', xmore+'px').css('top', '14px');
			jQuery('#sassybug').css('left', xeandc+'px').css('top', '104px');
			jQuery('#companybug').css('left', xcompany+'px').css('top', '14px');	
			
			possdoconload();
				
		}
		
		function possdoconload(){
			
			jQuery(window).load(function() {
				var coordheader, coordli;
				coordheader = jQuery('#top_nav').offset(); 
				
				//position top left curve based on the offset of eandc li
				coordli =  jQuery("#eandcli").offset();
				x = coordli.left - 38;
				y = coordli.top - 27;
				
				
				jQuery('#sassybug').css('left',x+'px').css('top', y+'px').css('z-index','9999');
				
				
				//position top left curve based on the offset of more li
				coordli =  jQuery("#moreli").offset();
				
				x = coordli.left - coordheader.left;
				x = x - 2;
				
				jQuery('#morebug').css('left', x+'px').css('top', '14px');
				
				
				//position top left curve based on the offset of company li
				coordli =  jQuery("#companyli").offset();
				x = coordli.left - coordheader.left;
				x = x - 2;
				
				
				jQuery('#companybug').css('left', x+'px').css('top', '14px');
				
				
        	
    		});
		
		}
		function reposs(){
			var coordheader, coordli;
			//coordli = {left:0}; // to avoid errors on pages without the nav
			coordheader = jQuery('#top_nav').offset(); 
				
			//position top left curve based on the offset of eandc li
			//coordli =  jQuery("#eandcli").offset();
			coordli =  jQuery("#eandcli").offset() || {left:0}; // to avoid errors on pages without the nav
			x = coordli.left - 38;
			y = coordli.top - 27;
				
			jQuery('#sassybug').css('left',x+'px').css('top', y+'px').css('z-index','9999');
			//alert('done');
		
		}

		
			function lightup(who, bug){
				if(bug != 'none'){
					jQuery('.'+bug).css('display', 'block').css('z-index','1').css('opacity', '1.0');
				}				

				jQuery.each(jQuery('a.primary'), function() {
					if (window.location.href.indexOf(jQuery(this).attr('name')) != -1) {
						jQuery(this).css('color', '#000000').css('font-weight','bold');
						jQuery(this).children('.sf-sub-indicator').css('display', 'block');
						jQuery(this).children('.sf-sub-indicator').css('opacity', '1.0');
					}
				});
			}	
			
			function greyout(who, bug){
				if(bug != 'none'){
					jQuery('.'+bug).css('opacity', '0.6').css('z-index','-1');
				}
				jQuery('.'+who+' a > .sf-sub-indicator').css('opacity', '0.6');
			}
	