LowPro={};LowPro.Version='0.4';if(!Element.addMethods)
Element.addMethods=function(o){Object.extend(Element.Methods,o)};DOM={nextElement:function(element){element=$(element);while(element=element.nextSibling)
if(element.nodeType==1)return element;return null;},previousElement:function(element){element=$(element);while(element=element.previousSibling)
if(element.nodeType==1)return element;return null;},remove:function(element){element=$(element);return element.parentNode.removeChild(element);},insertAfter:function(element,node,otherNode){element=$(element);return element.insertBefore(node,otherNode.nextSibling);},addBefore:function(element,node){element=$(element);return element.parentNode.insertBefore(node,element);},addAfter:function(element,node){element=$(element);return $(element.parentNode).insertAfter(node,element);},replaceElement:function(element,node){$(element).parentNode.replaceChild(node,element);return node;}};Element.addMethods(DOM);DOM.Builder={IE_TRANSLATIONS:{'class':'className','for':'htmlFor'},ieAttrSet:function(attrs,attr,el){var trans;if(trans=this.IE_TRANSLATIONS[attr])el[trans]=attrs[attr];else if(attr=='style')el.style.cssText=attrs[attr];else if(attr.match(/^on/))el[attr]=new Function(attrs[attr]);else el.setAttribute(attr,attrs[attr]);},tagFunc:function(tag){return function(){var attrs,children;if(arguments.length>0){if(arguments[0].nodeName||typeof arguments[0]=="string")
children=arguments;else{attrs=arguments[0];children=[].slice.call(arguments,1);};}
return DOM.Builder.create(tag,attrs,children);};},create:function(tag,attrs,children){attrs=attrs||{};children=children||[];var isIE=navigator.userAgent.match(/MSIE/);var el=document.createElement((isIE&&attrs.name)?"<"+tag+" name="+attrs.name+">":tag);for(var attr in attrs){if(typeof attrs[attr]!='function'){if(isIE)this.ieAttrSet(attrs,attr,el);else el.setAttribute(attr,attrs[attr].toString());};}
for(var i=0;i<children.length;i++){if(typeof children[i]=='string')
children[i]=document.createTextNode(children[i]);el.appendChild(children[i]);}
return $(el);}};(function(){var els=("p|div|span|strong|em|img|table|tr|td|th|thead|tbody|tfoot|pre|code|"+"h1|h2|h3|h4|h5|h6|ul|ol|li|form|input|textarea|legend|fieldset|"+"select|option|blockquote|cite|br|hr|dd|dl|dt|address|a|button|abbr|acronym|"+"script|link|style|bdo|ins|del|object|param|col|colgroup|optgroup|caption|"+"label|dfn|kbd|samp|var").split("|");var el,i=0;while(el=els[i++])
window['$'+el]=DOM.Builder.tagFunc(el);})();Object.extend(Event,{_domReady:function(){if(arguments.callee.done)return;arguments.callee.done=true;if(Event._timer)clearInterval(Event._timer);Event._readyCallbacks.each(function(f){f()});Event._readyCallbacks=null;},onReady:function(f){if(!this._readyCallbacks){var domReady=this._domReady;if(domReady.done)return f();if(document.addEventListener)
document.addEventListener("DOMContentLoaded",domReady,false);if(/WebKit/i.test(navigator.userAgent)){this._timer=setInterval(function(){if(/loaded|complete/.test(document.readyState))domReady();},10);}
Event.observe(window,'load',domReady);Event._readyCallbacks=[];}
Event._readyCallbacks.push(f);}});if(typeof Element.Methods.observe=='undefined')Element.addMethods({observe:function(el,event,callback){Event.observe(el,event,callback);},stopObserving:function(el,event,callback){Event.stopObserving(el,event,callback);}});Object.extend(Event,{observe:function(el,type,func){el=$(el);if(!func.$$guid)func.$$guid=Event._guid++;if(!el.events)el.events={};var handlers=el.events[type];if(!handlers){handlers=el.events[type]={};if(el["on"+type]){handlers[0]=el["on"+type];}}
handlers[func.$$guid]=func;el["on"+type]=Event._handleEvent;if(!Event.observers)Event.observers=[];Event.observers.push([el,type,func,false]);},stopObserving:function(el,type,func){el=$(el);if(el.events&&el.events[type])delete el.events[type][func.$$guid];for(var i=0;i<Event.observers.length;i++){if(Event.observers[i]&&Event.observers[i][0]==el&&Event.observers[i][1]==type&&Event.observers[i][2]==func)delete Event.observers[i];}},_handleEvent:function(e){var returnValue=true;e=e||Event._fixEvent(window.event);var handlers=this.events[e.type],el=$(this);for(var i in handlers){el.$$handleEvent=handlers[i];if(el.$$handleEvent(e)===false)returnValue=false;}
return returnValue;},_fixEvent:function(e){e.preventDefault=Event._preventDefault;e.stopPropagation=Event._stopPropagation;return e;},_preventDefault:function(){this.returnValue=false},_stopPropagation:function(){this.cancelBubble=true},_guid:1});Object.extend(Event,{trigger:function(element,event,fakeEvent){element=$(element);fakeEvent=fakeEvent||{type:event};if(element.events&&element.events[event]){$H(element.events[event]).each(function(cache){cache[1].call(element,fakeEvent);});}}});Event.addBehavior=function(rules){var ab=this.addBehavior;Object.extend(ab.rules,rules);if(!ab.responderApplied){Ajax.Responders.register({onComplete:function(){if(Event.addBehavior.reassignAfterAjax)
setTimeout(function(){ab.unload();ab.load(ab.rules)},10);}});ab.responderApplied=true;}
if(ab.autoTrigger){this.onReady(ab.load.bind(ab,rules));}};Object.extend(Event.addBehavior,{rules:{},cache:[],reassignAfterAjax:true,autoTrigger:true,load:function(rules){for(var selector in rules){var observer=rules[selector];var sels=selector.split(',');sels.each(function(sel){var parts=sel.split(/:(?=[a-z]+$)/),css=parts[0],event=parts[1];$$(css).each(function(element){if(event){$(element).observe(event,observer);Event.addBehavior.cache.push([element,event,observer]);}else{if(!element.$$assigned||!element.$$assigned.include(observer)){if(observer.attach)observer.attach(element);else observer.call($(element));element.$$assigned=element.$$assigned||[];element.$$assigned.push(observer);}}});});}},unload:function(){this.cache.each(function(c){Event.stopObserving.apply(Event,c);});this.cache=[];}});Event.observe(window,'unload',Event.addBehavior.unload.bind(Event.addBehavior));Behavior={create:function(members){var behavior=function(){if(this==window){var args=[],behavior=arguments.callee;for(var i=0;i<arguments.length;i++)
args.push(arguments[i]);return function(element){var initArgs=[this].concat(args);behavior.attach.apply(behavior,initArgs);};}else this.element=$(arguments[0]);};behavior.prototype.initialize=Prototype.K;Object.extend(behavior.prototype,members);Object.extend(behavior,Behavior.ClassMethods);return behavior;},ClassMethods:{attach:function(){var element=arguments[0];var bound=new this(element);bound.initialize.apply(bound,[].slice.call(arguments,1));this._bindEvents(bound);return bound;},_bindEvents:function(bound){for(var member in bound)
if(member.match(/^on(.+)/)&&typeof bound[member]=='function')
bound.element.observe(RegExp.$1,bound[member].bindAsEventListener(bound));}}};var advert_id=1;var link_element;Event.addBehavior({'body':function(){new Ajax.Request('/tracker/view',{parameters:'advert_id='+advert_id+"&url="+encodeURIComponent(document.location)});}});Element.Methods.reverseValue=function(element){if(element.value=='false'){element.value='true'}else{element.value='false'}}
Element.addMethods();function updatePhoto(element,url){$(element).src=url;}
function feedItemContentUpdater(id,url)
{var feed_item_content_element='feed_item_'+id+'_content';if($(feed_item_content_element).innerHTML=='Loading...')
{new Ajax.Updater(feed_item_content_element,url,{asynchronous:true,evalScripts:true});Element.toggle(feed_item_content_element);return false;}}
function openEditWindow(title){showEditWindowSpinner();$('edit_window_titlebar_outer').innerHTML=title;Element.show('edit_window');}
function showWindow(element,complete){var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();var arrayDimensions=Element.getDimensions(element)
var top=arrayPageScroll[1]+((arrayPageSize[3]-35-arrayDimensions['height'])/2);var left=((arrayPageSize[0]-20-arrayDimensions['width'])/2);var objLoadingImage=document.getElementById('loadingImage');if(objLoadingImage){objLoadingImage.style.top=(arrayPageScroll[1]+((arrayPageSize[3]-35-objLoadingImage.height)/2)+'px');objLoadingImage.style.left=(((arrayPageSize[0]-20-objLoadingImage.width)/2)+'px');objLoadingImage.style.display='block';}
$('overlay').style.height=(arrayPageSize[1]+'px');Element.show('overlay');$(element).style.top=(top<0)?"0px":top+"px";$(element).style.left=(left<0)?"0px":left+"px";if(complete){Element.show(element);}}
function closeWindow(element){Element.hide(element);Element.hide('overlay');}
function showEditWindow(title){showEditWindowSpinner();$('edit_window_titlebar').innerHTML=title;showWindow('edit_window',false);toggleFlash(true);}
function toggleFlash(state){if(state){state="hidden"}else{state="visible"}
var elements=document.getElementsByClassName('flash');for(var i=0;i<elements.length;i++){elements[i].style.visibility=state;}}
function closeEditWindow(){if((window.tinyMCE!=undefined)&&$('article_teaser')){tinyMCE.get('article_teaser').remove()
preventArticleLoss(true);}
closeWindow('edit_window');toggleFlash(false);}
function showEditWindowSpinner(){$('edit_pane').innerHTML="<img src=\"/images/progress_bar.gif\" style=\"position: relative; top: 0px; left: 0px;\" />";}
function toggleLogin(){if($('login_box').style.display=='none'){$('login_box').style.right=''+$('titlebar_outer_functions').offsetLeft+'px';new Effect.BlindDown('login_box');}else{new Effect.BlindUp('login_box');}}
function toggleToolbox(){if($('toolbox').style.display=='none'){$('toolbox').style.height='590px';$('byard').style.display='none';showToolbox();$('nav_toolbox_button').src='/images/nav/close.gif';$('body').addClassName('outline_on')}else{hideToolbox();$('byard').style.display='inline';$('nav_toolbox_button').src='/images/nav/open.gif';$('body').removeClassName('outline_on')}}
hide_element=function(o){Element.hide(o)}
show_element=function(o){Element.show(o)}
function showToolbox(){new Effect.SlideDown('toolbox');$$('div.widget div.titlebar_outer').each(show_element);$$('div.drag_sandwich').each(show_element);$$('div.masthead_titlebar').each(show_element);create_marker_sortable();}
function hideToolbox(){new Effect.SlideUp('toolbox');$$('div.widget div.titlebar_outer').each(hide_element);$$('div.drag_sandwich').each(hide_element);$$('div.masthead_titlebar').each(hide_element);Draggables.drags.each(function(d){if(Element.classNames(d.element).include('widget')){d.destroy();}});}
function changeTinyEditor(){tinyMCE.execCommand("mceRemoveControl",true,"article_teaser");}
function submitTinyEditor(){tinyMCE.execInstanceCommand('article_teaser','mceCleanup');tinyMCE.triggerSave(true,true);}
function selectMastheadStyle(style_id){var children=$('masthead_styles').getElementsByTagName('li');masthead_thumbs=$A(children).inject([],function(elements,child){var li_img_elements=child.getElementsByTagName('img');elements.push(li_img_elements[0]);return elements;});for(var i=0;i<masthead_thumbs.length;i++){masthead_thumbs[i].className='masthead_style_unselected';}
$('masthead_style_'+style_id).className='masthead_style_selected';$('section_masthead_id').value=style_id;}
function select_font_list_item(font_id){$("masthead[config][font][id]").value=font_id
$$('ul#themes_title_font_list li').each(function(element){element.className=''});$('themes_title_font_list_'+font_id).className="selected"}
function select_background_list_item(background_id){$("masthead[config][font][background]").value=background_id
$$('ul#themes_title_background_list li').each(function(element){element.className=''});$('themes_title_background_list_'+background_id).className="selected"}
function selectTab(id,tab){var elements=$(id).getElementsByTagName('li');for(var i=0;i<elements.length;i++){elements[i].getElementsByTagName('a')[0].className='';Element.hide(elements[i].id+'_pane');}
$(tab+'_tab').getElementsByTagName('a')[0].className+=' current';Element.show(tab+'_tab_pane');}
function front_select_tab(tab){var elements=document.getElementsByClassName('tab_div');for(var i=0;i<elements.length;i++){if(tab!=elements[i].id){elements[i].id=elements[i].id.replace(/_on/,"");}
if(tab==elements[i].id){elements[i].id+='_on';}}}
Effect.BlindToggle=function(element){$(element).style.display=='none'?new Effect.BlindDown(element):new Effect.BlindUp(element);}
Effect.SlideToggle=function(element){$(element).style.display=='none'?new Effect.SlideDown(element):new Effect.SlideUp(element);}
Element.setAbsolutePosition=function(element,topd,leftd){var element=$(element);element.style.position="absolute";element.style.top=topd+"px";element.style.left=leftd+"px";}
function initFeedSorting(action_url)
{hideElementsByClassName('feed_item');hideElementsByClassName('sort_init');showElementsByClassName('sort_complete');showElementsByClassName('handle');initSortable('feedlist1',action_url+'/1');initSortable('feedlist2',action_url+'/2');}
function completeFeedSorting()
{showElementsByClassName('feed_item');showElementsByClassName('sort_init');hideElementsByClassName('sort_complete');hideElementsByClassName('handle');Sortable.destroy('feedlist1');Sortable.destroy('feedlist2');}
function initSortable(element,action_url)
{Sortable.create(element,{containment:['feedlist1','feedlist2'],onUpdate:function()
{new Ajax.Request(action_url,{asynchronous:true,evalScripts:true,parameters:Sortable.serialize(element)})}});}
function showElementsByClassName(className)
{var elements=document.getElementsByClassName(className);for(var i=0;i<elements.length;i++){elements[i].style.display='';}}
function hideElementsByClassName(className)
{var elements=document.getElementsByClassName(className);for(var i=0;i<elements.length;i++){elements[i].style.display='none';}}
function simpleAjaxUpdater(element,controller,action,id,params)
{new Ajax.Updater(element,'/'+controller+'/'+action+'/'+id+params,{asynchronous:true,onLoading:function(request){Element.show('edit_loading')},onComplete:function(request){Element.hide('edit_loading')},evalScripts:true});}
function simpleAjaxRequest(controller,action,id,params)
{new Ajax.Request('/'+controller+'/'+action+'/'+id+'?'+params,{asynchronous:true,onLoading:function(request){Element.show('edit_loading')},onComplete:function(request){Element.hide('edit_loading')},evalScripts:true});}
function observe_select_field(field_dom_id,url,loading_dom_id){new Form.EventObserver(field_dom_id,function(element,value){new Ajax.Request(url,{asynchronous:true,evalScripts:true,onLoading:function(request){Element.show(loading_dom_id);},onComplete:function(request){Element.hide(loading_dom_id);},parameters:{field_dom_id:$(field_dom_id).value}})});}
function photobucketComplete(id)
{$('graphic_id').value=id;simpleAjaxUpdater('edit_preview','assets','preview',id,'')}
function flickrLoad()
{simpleAjaxUpdater('flickr_photos','graphics','flickr_photos','','');}
function completePhotoUpload(id){new Ajax.Request('/assets/upload_preview'+'/'+id,{evalScripts:true});Element.hide('upload_cancel');Element.show('upload_submit');}
function completeAvatarUpload(id){new Ajax.Request('/assets/avatar_upload_preview'+'/'+id,{evalScripts:true});Element.hide('upload_cancel');Element.show('upload_submit');}
function completeAudioUpload(id){new Ajax.Request('/assets/audio_upload_preview'+'/'+id,{evalScripts:true});Element.hide('upload_cancel');Element.show('upload_submit');}
function completeMastheadUpload(id){new Ajax.Request('/assets/masthead_upload_preview'+'/'+id,{evalScripts:true});Element.hide('upload_cancel');Element.show('upload_submit');}
function completeGroupMastheadUpload(id){new Ajax.Request('/assets/group_masthead_upload_preview'+'/'+id,{evalScripts:true});Element.hide('upload_cancel');Element.show('upload_submit');}
function hideEditElement(id){$(id).style.visibility='hidden';}
function showEditElement(id){$(id).style.visibility='visible';}
var columnOrSectionID=null;function popupField(element){element=Element.extend(element)
position=element.cumulativeOffset()
element_width=element.getWidth()
element_height=element.getHeight()
posx=position[0]+(element_width/2)
posy=position[1]+(element_height/2)
$('popup').style.display="block";$('popup').className=orientPopup(posx,posy)}
function tutorialPopupField(element_selector,next_step){var element=$$(element_selector).first()
if(element){element.style.border='solid 1px #78aae9';popupField(element);}else if(next_step){new Ajax.Request('/tutorials/show/'+next_step,{asynchronous:true,evalScripts:true});return false;}}
function tutorialClosePopupField(element_selector){var element=$$(element_selector).first()
if(element){element.style.border='';}}
function close_popupField(){Element.update('inner_popup',"")
$('popup').style.display="none";}
function orientPopup(posx,posy){var orientation=''
popup_width=$('popup').offsetWidth
pagex=document.body.offsetWidth;pagey=document.body.getHeight()
popup_height=$('popup').offsetHeight
if((posx+popup_width)/pagex>0.80){orientation+="left "
$('popup').style.left=""+(posx-popup_width)+"px";}else{orientation+="right "
$('popup').style.left=""+posx+"px";}
if(posy/pagey>0.80){orientation+="above"
$('popup').style.top=""+(posy-popup_height)+"px";}else{orientation+="below"
$('popup').style.top=""+posy+"px";}
return orientation}
function setUserMode(){var user_mode=get_cookie('user_mode');$$('body').first().addClassName(user_mode);}
function get_cookie(cookie_name){var results=document.cookie.match(cookie_name+'=(.*?)(;|$)');if(results)
return(unescape(results[1]));else
return'logged_out';}
function limitTextarea(obj,length){if(obj.value.length>length){alert('The maximum length of this box is '+length+' characters.');obj.value=obj.value.substring(0,length);}}
function limitChatTextarea(obj,length){obj=Element.extend(obj);var form=obj.up('form');var submit=form.down('#submit');var counter=$('character_counter');counter.innerHTML=length-obj.value.length;if(obj.value.length>length){obj.value=obj.value.substring(0,length);}
if(obj.present()){submit.enable();submit.src='/images/chat/typing.jpg';}else{submit.disable();submit.src='/images/chat/default.jpg';}
obj.focus();}
function handleEnter(field,event){var keyCode=event.keyCode?event.keyCode:event.which?event.which:event.charCode;if(keyCode==13){field.form.onsubmit()
return true;}
else
return true;}
function valueFromField(obj_to_watch,object_to_change,default_text){if(obj_to_watch.value.length==0){object_to_change.innerHTML=default_text}else{object_to_change.innerHTML=obj_to_watch.value}}
function keyPressHandler(e){var kC=(window.event)?event.keyCode:e.keyCode;var Esc=(window.event)?27:e.DOM_VK_ESCAPE
if(kC==Esc){closeEditWindow();}}
function recentItems(){$$('.img_place').each(function(item){item.observe('mouseover',function(){item.removeClassName('pop_hold');item.addClassName('popped');});item.observe('mouseout',function(){item.removeClassName('popped');item.addClassName('pop_hold');});});$$('.channel_hold').each(function(item){item.observe('mouseover',function(){item.addClassName('popped');});item.observe('mouseout',function(){item.removeClassName('popped');});});$$('.gen_popup').each(function(item){item.observe('mouseover',function(){$('pops').update(item.innerHTML);});item.observe('mouseout',function(){$('pops').update("")});});}
Event.observe(window,'load',function(){makePopup($$('body').first());recentItems();});function makePopup(divider){var dragging=false;var initY=null;var resizer=new Element("DIV",{'id':"pops","class":'popup','style':"position:absolute;display:none"});document.body.appendChild(resizer);var mouse=new Element("DIV",{'id':"mouse",'style':"position:absolute;"});document.body.appendChild(mouse);divider.observe("mouseover",function(event){if(!dragging){initY=event.pointerY();initX=event.pointerX();resizer.show();dragging=true;}});document.observe("mousemove",function(event){if(dragging){$('mouse').style.left=event.pointerX()+"px";$('mouse').style.top=event.pointerY()+"px";pops_width=$('pops').offsetWidth
pagex=document.body.offsetWidth;pagey=document.viewport.getHeight()
pops_height=$('pops').offsetHeight
if((event.pointerX()+pops_width)/pagex>0.90){var x=event.pointerX()-pops_width-6;resizer.style.left=x+"px";}else{var x=event.pointerX()+12;resizer.style.left=x+"px";}
if($('mouse').viewportOffset()[1]/pagey>0.80){var y=event.pointerY()-pops_height;resizer.style.top=y+"px";}else{var y=event.pointerY()+12;resizer.style.top=y+"px";}}});document.observe("mouseout",function(event){if(dragging){dragging=false;}});}
function photoResizeInitEvent(e){if(e.type=="mouseup"){mySelection=tinyMCE.activeEditor.selection.getNode();if(mySelection.tagName=="IMG"){if(mySelection.src.indexOf("graphics/show")!=-1){setTimeout("fixSize(mySelection)",100);}}}}
function fixSize(el){newWidth=el.width;newHeight=el.height;newUrl=el.src.replace(/\d+\/image/,newWidth+'/image');el.src=newUrl;}
function preventArticleLoss(revert){if(revert==true){window.onbeforeunload=null;}else{window.onbeforeunload=confirmExit;}
function confirmExit()
{return"If you have made any changes to the article without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";}}
function chooseCard(card){var card_id=card.id.match(/\d+/).first();last_link=document.getElementsByTagName("link").length;var changed=document.getElementsByTagName("link")[last_link-1].href.gsub(/\/\d+/,'/'+card_id);document.getElementsByTagName("link")[last_link-1].href=changed;$('sent_card_card_id').value=card_id;}
var recent_chat_message;function chat_message_check(chat_id,actions){if(recent_chat_message!=chat_id){recent_chat_message=chat_id;actions();}}
function chat_message_length(){var chat_messages=$$('.chat_message');if(chat_messages.length>15){chat_messages.last().remove();}}
Number.prototype.toMinutesAndSeconds=function(){var d=Math.floor(this/86400);var h=Math.floor((this-(d*86400))/3600)
var m=Math.floor((this-((h*3600)+(d*86400)))/60)
var s=this%60;var top_table="<table><tr>"+((d<1?"":"<td>"+d+"</td>")+(h<1?"":"<td>"+h+"</td>")+"<td>"+m+"</td>"+"<td>"+(s<10?"0":"")+s)+"</td></tr>"
return(top_table+"<tr class='labels'>"+(d<1?"":"<td>Days</td>")+(h<1?"":"<td>Hours</td>")+"<td>Minutes</td>"+"<td>Seconds</td></tr></table>");}
function _TDisplay(){}
_TDisplay.prototype.init=function(seconds,output,completion){this.tot=seconds;this.out=output;this.not=completion;this.stop=function(){clearInterval(this.ii);}
this.ii=setInterval(this.tick,1000);return(this);};_TDisplay.prototype._tick=function(){this.out.innerHTML=(--this.tot).toMinutesAndSeconds();if(!this.tot){this.stop();this.not();}}
TDisplay=new _TDisplay();_TDisplay.prototype.tick=function(){TDisplay._tick.call(TDisplay);}
window.onunload=function(){window["__flash__removeCallback"]=function(instance,name){return;};}
var fileLoadingImage="/images/loading.gif";var fileBottomNavCloseImage="/images/closelabel.gif";var resizeSpeed=7;var borderSize=10;var imageArray=new Array;var activeImage;if(resizeSpeed>10){resizeSpeed=10;}
if(resizeSpeed<1){resizeSpeed=1;}
resizeDuration=(11-resizeSpeed)*0.15;Object.extend(Element,{getWidth:function(element){element=$(element);return element.offsetWidth;},setWidth:function(element,w){element=$(element);element.style.width=w+"px";},setHeight:function(element,h){element=$(element);element.style.height=h+"px";},setTop:function(element,t){element=$(element);element.style.top=t+"px";},setSrc:function(element,src){element=$(element);element.src=src;},setHref:function(element,href){element=$(element);element.href=href;},setInnerHTML:function(element,content){element=$(element);element.innerHTML=content;}});Array.prototype.removeDuplicates=function(){for(i=1;i<this.length;i++){if(this[i][0]==this[i-1][0]){this.splice(i,1);}}}
Array.prototype.empty=function(){for(i=0;i<=this.length;i++){this.shift();}}
var Lightbox=Class.create();Lightbox.prototype={initialize:function(parse){if(parse){if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName('a');for(var i=0;i<anchors.length;i++){var anchor=anchors[i];var relAttribute=String(anchor.getAttribute('rel'));if(anchor.getAttribute('href')&&(relAttribute.toLowerCase().match('lightbox'))){anchor.onclick=function(){myLightbox.start(this);return false;}}}
var objBody=document.getElementsByTagName("body").item(0);var objOverlay=document.createElement("div");objOverlay.setAttribute('id','overlay');objOverlay.style.display='none';objBody.appendChild(objOverlay);var objLoadingImage=document.createElement("img");objLoadingImage.setAttribute('id','loadingImage');objLoadingImage.setAttribute('src',fileLoadingImage);objLoadingImage.style.display='none';objOverlay.appendChild(objLoadingImage);var objLightbox=document.createElement("div");objLightbox.setAttribute('id','lightbox');objLightbox.style.display='none';objBody.appendChild(objLightbox);var objOuterImageContainer=document.createElement("div");objOuterImageContainer.setAttribute('id','outerImageContainer');objLightbox.appendChild(objOuterImageContainer);var objImageContainer=document.createElement("div");objImageContainer.setAttribute('id','imageContainer');objOuterImageContainer.appendChild(objImageContainer);var objLightboxImage=document.createElement("img");objLightboxImage.setAttribute('id','lightboxImage');objImageContainer.appendChild(objLightboxImage);var objHoverNav=document.createElement("div");objHoverNav.setAttribute('id','hoverNav');objImageContainer.appendChild(objHoverNav);var objPrevLink=document.createElement("a");objPrevLink.setAttribute('id','prevLink');objPrevLink.setAttribute('href','#');objHoverNav.appendChild(objPrevLink);var objNextLink=document.createElement("a");objNextLink.setAttribute('id','nextLink');objNextLink.setAttribute('href','#');objHoverNav.appendChild(objNextLink);var objLoading=document.createElement("div");objLoading.setAttribute('id','loading');objImageContainer.appendChild(objLoading);var objLoadingLink=document.createElement("a");objLoadingLink.setAttribute('id','loadingLink');objLoadingLink.setAttribute('href','#');objLoadingLink.onclick=function(){myLightbox.end();return false;}
objLoading.appendChild(objLoadingLink);var objLoadingImage=document.createElement("img");objLoadingImage.setAttribute('src',fileLoadingImage);objLoadingLink.appendChild(objLoadingImage);var objImageDataContainer=document.createElement("div");objImageDataContainer.setAttribute('id','imageDataContainer');objImageDataContainer.className='clearfix';objLightbox.appendChild(objImageDataContainer);var objImageData=document.createElement("div");objImageData.setAttribute('id','imageData');objImageDataContainer.appendChild(objImageData);var objImageDetails=document.createElement("div");objImageDetails.setAttribute('id','imageDetails');objImageData.appendChild(objImageDetails);var objCaption=document.createElement("span");objCaption.setAttribute('id','caption');objImageDetails.appendChild(objCaption);var objNumberDisplay=document.createElement("span");objNumberDisplay.setAttribute('id','numberDisplay');objImageDetails.appendChild(objNumberDisplay);var objBottomNav=document.createElement("div");objBottomNav.setAttribute('id','bottomNav');objImageData.appendChild(objBottomNav);var objBottomNavCloseLink=document.createElement("a");objBottomNavCloseLink.setAttribute('id','bottomNavClose');objBottomNavCloseLink.setAttribute('href','#');objBottomNavCloseLink.onclick=function(){myLightbox.end();return false;}
objBottomNav.appendChild(objBottomNavCloseLink);var objBottomNavCloseImage=document.createElement("img");objBottomNavCloseImage.setAttribute('src',fileBottomNavCloseImage);objBottomNavCloseLink.appendChild(objBottomNavCloseImage);}},start:function(imageLink){hideSelectBoxes();var elements=document.getElementsByClassName('flash');for(var i=0;i<elements.length;i++){elements[i].style.visibility='hidden';}
var arrayPageSize=getPageSize();Element.setHeight('overlay',arrayPageSize[1]);new Effect.Appear('overlay',{duration:0.2,from:0.0,to:0.8});imageArray=[];imageNum=0;if(!document.getElementsByTagName){return;}
var anchors=document.getElementsByTagName('a');if((imageLink.getAttribute('rel')=='lightbox')){imageArray.push(new Array(imageLink.getAttribute('href'),imageLink.getAttribute('title')));}else{for(var i=0;i<anchors.length;i++){var anchor=anchors[i];if(anchor.getAttribute('href')&&(anchor.getAttribute('rel')==imageLink.getAttribute('rel'))){imageArray.push(new Array(anchor.getAttribute('href'),anchor.getAttribute('title')));}}
imageArray.removeDuplicates();while(imageArray[imageNum][0]!=imageLink.getAttribute('href')){imageNum++;}}
var arrayPageSize=getPageSize();var arrayPageScroll=getPageScroll();var lightboxTop=arrayPageScroll[1]+(arrayPageSize[3]/15);Element.setTop('lightbox',lightboxTop);Element.show('lightbox');this.changeImage(imageNum);},changeImage:function(imageNum){activeImage=imageNum;Element.show('loading');Element.hide('lightboxImage');Element.hide('hoverNav');Element.hide('prevLink');Element.hide('nextLink');Element.hide('imageDataContainer');Element.hide('numberDisplay');imgPreloader=new Image();imgPreloader.onload=function(){Element.setSrc('lightboxImage',imageArray[activeImage][0]);myLightbox.resizeImageContainer(imgPreloader.width,imgPreloader.height);}
imgPreloader.src=imageArray[activeImage][0];},resizeImageContainer:function(imgWidth,imgHeight){this.wCur=Element.getWidth('outerImageContainer');this.hCur=Element.getHeight('outerImageContainer');this.xScale=((imgWidth+(borderSize*2))/this.wCur)*100;this.yScale=((imgHeight+(borderSize*2))/this.hCur)*100;wDiff=(this.wCur-borderSize*2)-imgWidth;hDiff=(this.hCur-borderSize*2)-imgHeight;if(!(hDiff==0)){new Effect.Scale('outerImageContainer',this.yScale,{scaleX:false,duration:resizeDuration,queue:'front'});}
if(!(wDiff==0)){new Effect.Scale('outerImageContainer',this.xScale,{scaleY:false,delay:resizeDuration,duration:resizeDuration});}
if((hDiff==0)&&(wDiff==0)){if(navigator.appVersion.indexOf("MSIE")!=-1){pause(250);}else{pause(100);}}
Element.setHeight('prevLink',imgHeight);Element.setHeight('nextLink',imgHeight);Element.setWidth('imageDataContainer',imgWidth+(borderSize*2));this.showImage();},showImage:function(){Element.hide('loading');new Effect.Appear('lightboxImage',{duration:0.5,queue:'end',afterFinish:function(){myLightbox.updateDetails();}});this.preloadNeighborImages();},updateDetails:function(){Element.show('caption');Element.setInnerHTML('caption',imageArray[activeImage][1]);if(imageArray.length>1){Element.show('numberDisplay');Element.setInnerHTML('numberDisplay',"Image "+eval(activeImage+1)+" of "+imageArray.length);}
new Effect.Parallel([new Effect.SlideDown('imageDataContainer',{sync:true,duration:resizeDuration+0.25,from:0.0,to:1.0}),new Effect.Appear('imageDataContainer',{sync:true,duration:1.0})],{duration:0.65,afterFinish:function(){myLightbox.updateNav();}});},updateNav:function(){Element.show('hoverNav');if(activeImage!=0){Element.show('prevLink');document.getElementById('prevLink').onclick=function(){myLightbox.changeImage(activeImage-1);return false;}}
if(activeImage!=(imageArray.length-1)){Element.show('nextLink');document.getElementById('nextLink').onclick=function(){myLightbox.changeImage(activeImage+1);return false;}}
this.enableKeyboardNav();},enableKeyboardNav:function(){document.onkeydown=this.keyboardAction;},disableKeyboardNav:function(){document.onkeydown='';},keyboardAction:function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
key=String.fromCharCode(keycode).toLowerCase();if((key=='x')||(key=='o')||(key=='c')){myLightbox.end();}else if(key=='p'){if(activeImage!=0){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage-1);}}else if(key=='n'){if(activeImage!=(imageArray.length-1)){myLightbox.disableKeyboardNav();myLightbox.changeImage(activeImage+1);}}},preloadNeighborImages:function(){if((imageArray.length-1)>activeImage){preloadNextImage=new Image();preloadNextImage.src=imageArray[activeImage+1][0];}
if(activeImage>0){preloadPrevImage=new Image();preloadPrevImage.src=imageArray[activeImage-1][0];}},end:function(){this.disableKeyboardNav();Element.hide('lightbox');new Effect.Fade('overlay',{duration:0.2});showSelectBoxes();var elements=document.getElementsByClassName('flash');for(var i=0;i<elements.length;i++){elements[i].style.visibility='visible';}}}
function getPageScroll(){var yScroll;if(self.pageYOffset){yScroll=self.pageYOffset;}else if(document.documentElement&&document.documentElement.scrollTop){yScroll=document.documentElement.scrollTop;}else if(document.body){yScroll=document.body.scrollTop;}
arrayPageScroll=new Array('',yScroll)
return arrayPageScroll;}
function getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
arrayPageSize=new Array(pageWidth,pageHeight,windowWidth,windowHeight)
return arrayPageSize;}
function getKey(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}
key=String.fromCharCode(keycode).toLowerCase();if(key=='x'){}}
function listenKey(){document.onkeypress=getKey;}
function showSelectBoxes(){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="visible";}}
function hideSelectBoxes(){selects=document.getElementsByTagName("select");for(i=0;i!=selects.length;i++){selects[i].style.visibility="hidden";}}
function pause(numberMillis){var now=new Date();var exitTime=now.getTime()+numberMillis;while(true){now=new Date();if(now.getTime()>exitTime)
return;}}
function initLightbox(){myLightbox=new Lightbox(false);}
Event.observe(window,'load',initLightbox,false);var Rateable=Class.create();Object.extend(Rateable,{PUBLIC:1,UNRATED:2,RATED:4,make_star:function(color,state,which,binding){if(color=='red')star=Builder.node('img',{src:'/images/icons/star-red.png'});else star=Builder.node('img',{src:'/images/icons/star.png'});if(state!=Rateable.PUBLIC){star.onmouseover=(function(){this.show_rating(which);this.show_state(Rateable.RATED)}).bind(binding);star.onmouseout=(function(){this.show_rating(this.options.rating);this.show_state(this.options.state)}).bind(binding);star.onclick=(function(){this.set_rating(which)}).bind(binding);}
return star;}});Rateable.prototype={initialize:function(element){var options=Object.extend({max:5,rating:0,state:Rateable.PUBLIC},arguments[1]||{});this.element=$(element);this.options=options;this.red_stars=Builder.node('span',{style:'display:none'});this.yellow_stars=Builder.node('span');var self=this;$R(1,this.options.max).each(function(i){self.red_stars.appendChild(Rateable.make_star('red',self.options.state,i,self));self.yellow_stars.appendChild(Rateable.make_star('yellow',self.options.state,i,self));});this.element.appendChild(self.red_stars);this.element.appendChild(self.yellow_stars);this.show_state(this.options.state);this.show_rating(this.options.rating);},set_rating:function(rating){this.options.rating=rating;this.options.state=Rateable.RATED;new Ajax.Request(this.options.send_url,{parameters:'rating='+this.options.rating});},show_rating:function(rating){var self=this;$R(1,this.options.max).each(function(i){Element.setOpacity(self.yellow_stars.childNodes[i-1],(rating>=i?1.0:0.4));Element.setOpacity(self.red_stars.childNodes[i-1],(rating>=i?1.0:0.4));});},show_state:function(state){if(state!=Rateable.RATED){Element.show(this.red_stars);Element.hide(this.yellow_stars);}else{Element.hide(this.red_stars);Element.show(this.yellow_stars);}}}
function LiveTree(id,options){this.id=id;if(options==null){options={};}
this.dataUrl=options.dataUrl;this.cssClass=options.cssClass;this.cssStyle=options.cssStyle;this.expandRootItem=(options.expandRootItem==null?true:options.expandRootItem);this.hideRootItem=(options.hideRootItem==null?false:options.hideRootItem);this.rootItemId=options.rootItemId;this.expandItemOnClick=(options.expandItemOnClick==null?true:options.expandItemOnClick);this.initialData=options.initialData;this.scroll=(options.scroll==null?true:options.scroll);this.preloadItems=(options.preloadItems==null?true:options.preloadItems);this.collapsedItemIconHtml=options.collapsedItemIconHtml;this.expandedItemIconHtml=options.expandedItemIconHtml;this.leafIconHtml=options.leafIconHtml;this.loadingIconHtml=options.loadingIconHtml;this.loadingTreeHtml=options.loadingTreeHtml;this.searchingHtml=options.searchingHtml;this.loadingItemHtml=options.loadingItemHtml;this.onClickItem=options.onClickItem;this.allowClickBranch=(options.allowClickBranch==null?true:options.allowClickBranch);this.allowClickLeaf=(options.allowClickLeaf==null?true:options.allowClickLeaf);this.onExpandItem=options.onExpandItem;this.onCollapseItem=options.onCollapseItem;this.onLoadItem=options.onLoadItem;this._root={};this._itemsIndex={};this._activeItemId=null;this._scrollToItemIdOnLoad=null;this._scrollToItemMustBeExpanded=false;this._searchCount=0;this._preloadCount=0;this._updateItemDisplay=null;}
LiveTree.prototype._markItemForUpdateDisplay=function(item){var tree=this;if(tree._updateItemDisplay==null){tree._updateItemDisplay=item;}else if(tree._updateItemDisplay!=item){tree._updateItemDisplay=tree._root;}}
LiveTree.prototype._getClass=function(suffix){if(suffix!=""){suffix="_"+suffix;}
result='live_tree'+suffix;if(this.cssClass!=null){result+=' '+this.cssClass+suffix;}
return result;}
LiveTree.prototype._escapeId=function(itemId){return escape(itemId);}
LiveTree.prototype._getCollapsedItemIconHtml=function(item){if(this.collapsedItemIconHtml!=null){return this.collapsedItemIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt="&gt;" id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("branch_collapsed_icon")+'" />';}}
LiveTree.prototype._getExpandedItemIconHtml=function(item){if(this.expandedItemIconHtml!=null){return this.expandedItemIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt="v" id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("branch_expanded_icon")+'" />';}}
LiveTree.prototype._getLeafIconHtml=function(item){if(this.leafIconHtml!=null){return this.leafIconHtml;}else{return'<img src="/images/live_tree_transparent_pixel.gif" alt=" " id="'+this.id+'_item_icon_'+this._escapeId(item.id)+'" class="'+this._getClass("item_icon")+' '+this._getClass("leaf_icon")+'" />';}}
LiveTree.prototype._getLoadingIconHtml=function(){if(this.loadingIconHtml!=null){return this.loadingIconHtml;}else{return'<img src="/images/live_tree_loading_spinner.gif" alt="[loading]" class="'+this._getClass("loading_icon")+'" />';}}
LiveTree.prototype._getLoadingTreeHtml=function(){if(this.loadingTreeHtml!=null){return this.loadingTreeHtml;}else{return'<span class="'+this._getClass("loading_tree")+'">'+this._getLoadingIconHtml()+'Loading..&hellip;</span>';}}
LiveTree.prototype._getSearchingHtml=function(){if(this.searchingHtml!=null){return this.searchingHtml;}else{return'<div class="'+this._getClass("searching")+'">'+this._getLoadingIconHtml()+'Searching for item&hellip;</div>';}}
LiveTree.prototype._getLoadingItemHtml=function(){if(this.loadingItemHtml!=null){return this.loadingItemHtml;}else{return this._getLoadingIconHtml()+'Loading&hellip;';}}
LiveTree.prototype._startPreloads=function(item){var tree=this;if(!tree.preloadItems||tree._preloadCount>0){return false;}
if(item==null){item=tree._root;}
if(!item.isExpanded||item.isLoading){return false;}
var tailBranch=true;for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf&&(child.isLoaded||child.isLoading)){tailBranch=false;}}
var doLoad=false;if(tailBranch){for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf){if(!child.isLoaded&&!child.isLoading){doLoad=true;child.isLoading=true;child.isLoadingBackground=true;}}}}
var didLoad=false;if(doLoad){tree._preloadCount++;if(item==tree._root){tree._requestItem(tree._root.children[0].id,2,tree._onPreloadItemReceived.bind(tree));}else{tree._requestItem(item.id,3,tree._onPreloadItemReceived.bind(tree));}
if(LiveTree.DEV_SHOW_PRELOADS){tree._markItemForUpdateDisplay(item);}
didLoad=true;}else{for(var i=0;i<item.children.length;i++){var child=item.children[i];if(!child.isLeaf&&child.isLoaded){if(tree._startPreloads(child)){didLoad=true;}}}}
return didLoad;}
LiveTree.prototype._stopLoading=function(){var tree=this;function recurse(item){if(item.isLoading){item.isLoading=false;item.isExpanded=false;}
if(item.children!=null){for(var i=0;i<item.children.length;i++){recurse(item.children[i]);}}}
recurse(tree._root);tree._markItemForUpdateDisplay(tree._root);tree._searchCount=0;tree._preloadCount=0;tree._updateDisplay();}
LiveTree.prototype._onItemFailure=function(request){this._stopLoading();}
LiveTree.prototype._requestItem=function(itemId,depth,onItemCallback,options){var tree=this;if(options==null){options={};}
var url=tree.dataUrl;var requestOptions=new Object();var delim="?";if(itemId!=null){requestOptions.itemId=itemId;url+=delim+"item_id="+escape(itemId);delim="&";}
if(depth!=null){requestOptions.depth=depth;url+=delim+"depth="+depth;delim="&";}
if(options.includeParents){requestOptions.includeParents=true;requestOptions.rootItemId=tree.rootItemId;url+=delim+"include_parents=1&root_item_id="+escape(tree.rootItemId);tree._searchCount++;}
if(options.initialRequest){requestOptions.initialRequest=true;}
new Ajax.Request(url,{onSuccess:function(request){tree._onItemResponse(request,onItemCallback,requestOptions)},onFailure:tree._onItemFailure.bind(tree),evalScripts:true,asynchronous:true,method:"get"});return true;}
LiveTree.prototype._onExpandItemReceived=function(item,requestOptions){var tree=this;item.isLoading=false;tree._markItemForUpdateDisplay(item);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype._onPreloadItemReceived=function(item,requestOptions){var tree=this;if(tree._preloadCount<=0){return;}
tree._preloadCount--;item.isLoading=false;for(var i=0;i<item.children.length;i++){item.children[i].isLoading=false;}
tree._startPreloads();tree._markItemForUpdateDisplay(item);tree._updateDisplay();}
LiveTree.prototype._onClickExpand=function(item){var tree=this;var expanded=tree._expandItem(item);tree._updateDisplay();if(expanded){tree.scrollToItem(item.id);if(item.isLoading){tree._scrollToItemIdOnLoad=item.id;tree._scrollToItemMustBeExpanded=true;}
if(tree.onExpandItem!=null){tree.onExpandItem(item);}}}
LiveTree.prototype._onClickCollapse=function(item){var tree=this;if(!item.isExpanded){return;}
item.isExpanded=false;tree._markItemForUpdateDisplay(item);tree._updateDisplay();if(tree.onCollapseItem!=null){tree.onCollapseItem(item);}}
LiveTree.prototype._onClickItem=function(item){var tree=this;if(tree.expandItemOnClick&&!item.isExpanded&&!item.isLeaf){tree._onClickExpand(item);}
if(tree.onClickItem!=null&&((tree.allowClickLeaf&&item.isLeaf)||(tree.allowClickBranch&&!item.isLeaf))){tree.onClickItem(item);}
tree._updateDisplay();}
LiveTree.prototype._getItem=function(itemId){return this._itemsIndex[itemId];}
LiveTree.prototype._getItemElementId=function(itemId){return this.id+"_item_"+this._escapeId(itemId);}
LiveTree.prototype._getItemElement=function(itemId){return $(this._getItemElementId(itemId));}
LiveTree.prototype._isRootItem=function(item){var tree=this;return item==tree._root||(tree.hideRootItem&&item==tree._root.children[0]);}
LiveTree.prototype._renderItemHeading=function(item){var tree=this;var html='';if(!item.isLeaf){html+='<a href="#" id="'+tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)+'" class="'+this._getClass("branch_expand_collapse_link")+'">';if(item.isExpanded){html+=tree._getExpandedItemIconHtml(item);}else{html+=tree._getCollapsedItemIconHtml(item);}
html+='</a>';}else{html+=tree._getLeafIconHtml(item);}
var itemLinkExists=false;var extraNameClass="";if(item.id==tree._activeItemId){extraNameClass=" "+this._getClass("active_item_name");}
var name_html='<span id="'+tree.id+'_item_name_'+tree._escapeId(item.id)+'" class="'+this._getClass("item_name")+extraNameClass+'">'+item.name+'</span>';if(((tree.onClickItem!=null&&((tree.allowClickLeaf&&item.isLeaf)||(tree.allowClickBranch&&!item.isLeaf)))||(tree.expandItemOnClick&&!item.isLeaf&&!item.isExpanded))&&!item.isLoadingDisplay){name_html='<a href="#" id="'+tree.id+'_item_link_'+tree._escapeId(item.id)+'" class="'+this._getClass("item_link")+'">'+name_html+'</a>';itemLinkExists=true;}
if(LiveTree.DEV_SHOW_ITEM_IDS){name_html="("+item.id+") "+name_html;}
html+=name_html;if(LiveTree.DEV_SHOW_PRELOADS){if(item.isLoading&&item.isLoadingBackground){html+=" "+tree._getLoadingIconHtml();}}
$(tree.id+"_item_heading_"+tree._escapeId(item.id)).innerHTML=html;if(!item.isLeaf){if(item.isExpanded){$(tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickCollapse(item);return false}}else{$(tree.id+'_branch_expand_collapse_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickExpand(item);return false}}}
if(itemLinkExists){$(tree.id+'_item_link_'+tree._escapeId(item.id)).onclick=function(){tree._onClickItem(item);return false}}}
LiveTree.prototype._hideItem=function(child){var tree=this;var elem=tree._getItemElement(child.id);if(elem){$(tree.id).removeChild(elem);if(child.isLoaded||(child.isLoading&&!child.isLoadingBackground)){tree._hideItemChildren(child);}}}
LiveTree.prototype._hideItemChildren=function(item){var tree=this;tree._hideItem(tree._getLoadingDisplayChild(item));if(!item.isLoading){for(var i=0;i<item.children.length;i++){tree._hideItem(item.children[i]);}}
item.childrenVisible=false;}
LiveTree.prototype._updateItemChildren=function(item,afterElem,indentLevel,containerElem){var tree=this;function doUpdateChild(child){var elem=tree._getItemElement(child.id);if(elem==null){var html="";html+='<div id="'+tree.id+'_item_'+tree._escapeId(child.id)+'" class="'+tree._getClass("item")+'">';for(var j=0;j<indentLevel;j++){html+='<div class="'+tree._getClass("item_indent")+'">';}
html+='<span id="'+tree.id+'_item_heading_'+tree._escapeId(child.id)+'" class="'+tree._getClass("item_heading")+'"></span>';for(var j=0;j<indentLevel;j++){html+='</div>';}
html+='</div>';new Insertion.After(afterElem,html);elem=tree._getItemElement(child.id);}
tree._renderItemHeading(child);afterElem=elem;if(child.isLoaded||(child.isLoading&&!child.isLoadingBackground)){afterElem=tree._updateItemChildren(child,afterElem,indentLevel+1,containerElem);}}
if(!item.isExpanded){tree._hideItemChildren(item);}else{if(item.isLoaded){tree._hideItem(tree._getLoadingDisplayChild(item));for(var i=0;i<item.children.length;i++){doUpdateChild(item.children[i]);}}else{doUpdateChild(tree._getLoadingDisplayChild(item));}
item.childrenVisible=true;}
return afterElem;}
LiveTree.prototype._getLoadingDisplayChild=function(item){var tree=this;var loadingChild={id:"___LIVE_TREE_LOADING_"+item.id+"___",name:tree._getLoadingItemHtml(),children:[],isLoadingDisplay:true};tree._setItemDerivedAttributes(loadingChild);return loadingChild;}
LiveTree.prototype._updateDisplay=function(){var tree=this;if(tree._searchCount>0){Element.show(tree.id+"_searching");}else{Element.hide(tree.id+"_searching");}
var updateItem=tree._updateItemDisplay;if(updateItem!=null){tree._updateItemDisplay=null;if(tree._isRootItem(updateItem)){if(tree.hideRootItem){updateItem=tree._root.children[0];}
tree._updateItemChildren(updateItem,$(tree.id+"_root"),0,$(tree.id));}else{tree._renderItemHeading(updateItem);var indentLevel=0;var parentItem=updateItem;while(!tree._isRootItem(parentItem)){indentLevel++;parentItem=parentItem.parent;}
if(updateItem.isLoaded||(updateItem.isLoading&&!updateItem.isLoadingBackground)){tree._updateItemChildren(updateItem,tree._getItemElement(updateItem.id),indentLevel,$(tree.id));}}}
tree._checkScrollOnLoad();}
LiveTree.prototype._checkScrollOnLoad=function(){var tree=this;if(tree._scrollToItemIdOnLoad==null){return;}
var item=tree._itemsIndex[tree._scrollToItemIdOnLoad];if(item==null){return;}
if(tree._scrollToItemMustBeExpanded){if(item.isLoaded){if(item.isExpanded){tree.scrollToItem(item.id);}
tree._scrollToItemIdOnLoad=null;}}else{tree.scrollToItem(item.id);tree._scrollToItemIdOnLoad=null;}}
LiveTree.prototype._getElementPosition=function(destinationLink){var destx=destinationLink.offsetLeft;var desty=destinationLink.offsetTop;var thisNode=destinationLink;while(thisNode.offsetParent&&(thisNode.offsetParent!=document.body)){thisNode=thisNode.offsetParent;destx+=thisNode.offsetLeft;desty+=thisNode.offsetTop;}
return{x:destx,y:desty}}
LiveTree.prototype._scrollTo=function(top){var tree=this;if(!tree.scroll){return;}
var containerElem=$(tree.id);containerElem.scrollTop=top;}
LiveTree.prototype.scrollToItem=function(itemId){var tree=this;if(!tree.scroll){return;}
var itemElem=tree._getItemElement(itemId);if(itemElem==null){return;}
var containerElem=$(tree.id);var itemPos=tree._getElementPosition(itemElem);var containerPos=tree._getElementPosition(containerElem);var itemTop=itemPos.y-containerPos.y;var containerHeight=containerElem.offsetHeight-35;if(itemTop+itemElem.offsetHeight>containerElem.scrollTop+containerHeight||itemTop<containerElem.scrollTop){if(itemElem.offsetHeight>containerHeight){tree._scrollTo(itemTop);}else{if(itemTop<containerElem.scrollTop+containerHeight){tree._scrollTo(itemTop+itemElem.offsetHeight-containerHeight);}else{tree._scrollTo(itemTop-containerHeight/2+itemElem.offsetHeight/2);}}}
tree._scrollToItemOnLoad=null;}
LiveTree.prototype._expandItem=function(item){var tree=this;var didExpand=false;var parent=item.parent;while(parent!=tree._root&&parent!=null){if(!parent.isExpanded){parent.isExpanded=true;tree._markItemForUpdateDisplay(parent);didExpand=true;}
parent=parent.parent;}
var needToLoad=false;if(!item.isExpanded){needToLoad=(item.children==null&&!item.isLoading);if(needToLoad){item.isLoading=true;}
item.isLoadingBackground=false;item.isExpanded=true;tree._markItemForUpdateDisplay(item);didExpand=true;}
if(needToLoad){tree._requestItem(item.id,2,tree._onExpandItemReceived.bind(tree));}
tree._startPreloads();return didExpand;}
LiveTree.prototype._onExpandItemParentsReceived=function(item,requestOptions){var tree=this;var requestedItem=tree._getItem(requestOptions.itemId);this._expandItem(requestedItem);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype.expandItem=function(itemId){var tree=this;var item=tree._getItem(itemId);var search=false;if(item==null){tree._requestItem(itemId,2,tree._onExpandItemParentsReceived.bind(tree),{includeParents:true});search=true;}else{this._expandItem(this._itemsIndex[itemId]);}
tree._updateDisplay();if(search){tree._scrollTo(0);tree._scrollToItemIdOnLoad=itemId;tree._scrollToItemMustBeExpanded=false;}else{tree.scrollToItem(itemId);}}
LiveTree.prototype._onExpandParentsOfItemReceived=function(item,requestOptions){var tree=this;var requestedItem=tree._getItem(requestOptions.itemId);tree._expandItem(requestedItem.parent);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype.expandParentsOfItem=function(itemId){var tree=this;var item=tree._getItem(itemId);var search=false;if(item==null){tree._requestItem(itemId,1,tree._onExpandParentsOfItemReceived.bind(tree),{includeParents:true});search=true;}else{tree._expandItem(item.parent);}
tree._updateDisplay();if(search){tree._scrollTo(0);tree._scrollToItemIdOnLoad=itemId;tree._scrollToItemMustBeExpanded=false;}else{tree.scrollToItem(itemId);}}
LiveTree.prototype.activateItem=function(itemId){var tree=this;var oldElem=$(tree.id+'_item_name_'+tree._escapeId(tree._activeItemId));if(oldElem!=null){oldElem.className=tree._getClass("item_name");}
var elem=$(tree.id+'_item_name_'+tree._escapeId(itemId));if(elem!=null){elem.className=tree._getClass("item_name")+" "+tree._getClass("active_item_name");}
tree._activeItemId=itemId;tree.scrollToItem(itemId);}
LiveTree.prototype.getHtml=function(){var tree=this;var html='';html+='<div id="'+tree.id+'" class="'+tree._getClass("")+'"';if(tree.cssStyle!=null){html+=' style="'+tree.cssStyle+'"';}
html+='>';html+='<div id="'+tree.id+'_searching" style="display:none">'+tree._getSearchingHtml()+'</div>';html+='<div id="'+tree.id+'_loading">'+tree._getLoadingTreeHtml()+'</div>';html+='<div id="'+tree.id+'_root"></div>';html+='</div>';return html;}
LiveTree.prototype._setItemDerivedAttributes=function(child){child.isLeaf=!(child.children==null||child.children.length>0);child.isLoaded=child.children!=null;}
LiveTree.prototype._setupNewItemChildren=function(item){var tree=this;if(item.children!=null){for(var i=0;i<item.children.length;i++){var child=item.children[i];tree._setItemDerivedAttributes(child);child.parent=item;tree._itemsIndex[child.id]=child;tree._setupNewItemChildren(child);}}}
LiveTree.prototype._addNewItems=function(newItem){var tree=this;var oldItem=tree._getItem(newItem.id);if(newItem.children!=null&&oldItem!=null){if(!oldItem.isLoaded){oldItem.children=newItem.children;tree._setupNewItemChildren(oldItem);oldItem.isLoaded=true;}else{for(var i=0;i<newItem.children.length;i++){tree._addNewItems(newItem.children[i]);}}}
return oldItem;}
LiveTree.prototype._onItemResponse=function(request,onItemCallback,requestOptions){var tree=this;if(requestOptions.includeParents&&tree._searchCount>0){tree._searchCount--;}
var item;try{eval("item = "+request.responseText);}catch(e){tree._stopLoading();return;}
if(requestOptions.initialRequest){tree._handleInitialItem(item);}else{var oldItem=tree._addNewItems(item);if(oldItem==null){alert("LiveTree error: cannot add received item to tree");tree._stopLoading();return;}}
onItemCallback(oldItem,requestOptions);}
LiveTree.prototype._onInitialItemReceived=function(){var tree=this;this.rootItemId=tree._root.children[0].id;Element.hide($(tree.id+"_loading"));if(tree.hideRootItem||tree.expandRootItem){tree._expandItem(tree._root.children[0]);}
tree._root.isExpanded=true;tree._markItemForUpdateDisplay(tree._root);tree._startPreloads();tree._updateDisplay();}
LiveTree.prototype._handleInitialItem=function(item){var tree=this;tree._root.children=[item];tree._root.isLoaded=true;tree._setupNewItemChildren(tree._root);}
LiveTree.prototype.start=function(){var tree=this;if(tree.initialData!=null){tree._handleInitialItem(tree.initialData);tree._onInitialItemReceived(tree.initialData);}else{tree._requestItem(tree.rootItemId,(tree.expandRootItem||tree.hideRootItem)?2:1,tree._onInitialItemReceived.bind(tree),{initialRequest:true});}}
LiveTree.prototype.render=function(){var tree=this;document.write(tree.getHtml());tree.start();}
LiveTree.prototype.render_to_div=function(div){var tree=this;div.innerHTML=tree.getHtml();tree.start();}