// (c)2008 uShip, Inc.

var Remote=function(search){this.search=search;this.timedAttempts=0;this.timedFired=0;this.timedRequest=this.timedRequest.bind(this);}
Remote.prototype={request:function(delay){if(delay!==undefined&&delay>0){this.timedAttempts++;setTimeout(this.timedRequest,(delay*1000));}
else{this.timedAttempts=0;this.timedFired=0;this.doRequest();}},timedRequest:function(){if(this.timedFired==(this.timedAttempts-1)){this.timedAttempts=0;this.timedFired=0;this.doRequest();}
else{this.timedFired++;}},doRequest:function(){var categories=this.search.filter.categories.serialize();var subcats=(categories.subcategories&&categories.subcategories.length>0)?categories.subcategories:'0';ChartCB.call(subcats,'Chart1','UpdateData::'+subcats);}}
var Search=function(){Event.observe(window,'load',function(e){this.filter={categories:new CategoriesFilter(this),misc:new MoreFilter(this)};this.ajax=new Remote(this);this.ajax.doRequest();}.bind(this));}
var CategoriesFilter=function(search){this.search=search;this.serial;this.lnkSelectAll=$('lnkSelectAllCats');this.c=[1,4,146,5,11,10,7];this.categories=[];for(var i=0,len=this.c.length;i<len;i++){this.categories.push(new CategoryFilter('cat'+this.c[i],this));}
Event.observe(this.lnkSelectAll,'click',this._handleSelectAll.bind(this));}
CategoriesFilter.prototype={selectAll:function(check){if(check==undefined){check=true;}
for(var i=0,len=this.categories.length;i<len;i++){this.categories[i].selectAll(check);}},deselectAll:function(){this.selectAll(false);},onchange:function(){this.serial=undefined;this.search.ajax.request(1);},serialize:function(){if(this.serial==undefined){var hash=[];for(var i=0,len=this.categories.length;i<len;i++){hash=hash.concat(this.categories[i].serialize());}
this.serial={subcategories:hash.join('-')};}
return this.serial;},_handleSelectAll:function(e){Event.stop(e);for(var i=0,len=this.categories.length;i<len;i++){this.categories[i].selectAll();}
this.onchange();}}
var CategoryFilter=function(id,parent){this.id=id.replace('cat','');this.element=$(id);this.parent=parent;this.checkbox=this.element.getElementsByTagName('input')[0];this.link=this.element.getElementsByTagName('a')[0];var spans=this.element.getElementsByTagName('span');this.toggle=spans[0];this.s_wrapper=$('filter_'+id);this.subcats=[];var s=this.s_wrapper.getElementsByTagName('li');for(var i=0,len=s.length;i<len;i++){this.subcats.push(new SubcategoryFilter(s[i],this));}
if(this.allSelected()){this.select();this.highlight(true);}
else if(!this.noneSelected()){this.select();}
Event.observe(this.checkbox,'click',this._handleCheckbox.bind(this));Event.observe(this.link,'click',this._handleUnique.bind(this));Event.observe(this.toggle,'click',this._handleToggle.bind(this));}
CategoryFilter.prototype={select:function(check){if(check==undefined){check=true;}
this.checkbox.checked=check;},selectAll:function(check){if(check==undefined){check=true;}
this.select(check);this.highlight(check);for(var i=0,len=this.subcats.length;i<len;i++){this.subcats[i].select(check);}},deselect:function(){this.select(false);},deselectAll:function(){this.selectAll(false);},open:function(){this.s_wrapper.style.display='block';this.toggle.innerHTML='<img src="/sticky/images/icons/opened.gif" alt="" />';},close:function(){this.s_wrapper.style.display='none';this.toggle.innerHTML='<img src="/sticky/images/icons/closed.gif" alt="" />';},highlight:function(show){show?this.element.addClassName('allselected'):this.element.removeClassName('allselected');},allSelected:function(){var allSelected=true;for(var i=0,num=this.subcats.length;i<num&&allSelected;i++){allSelected=this.subcats[i].checkbox.checked;}
return allSelected;},noneSelected:function(){var noneSelected=true;for(var i=0,num=this.subcats.length;i<num&&noneSelected;i++){noneSelected=!this.subcats[i].checkbox.checked;}
return noneSelected;},onchange:function(){this.parent.onchange();},serialize:function(){var hash=[];for(var i=0,len=this.subcats.length;i<len;i++){var s=this.subcats[i].serialize();if(s>0){hash.push(s);}}
return hash;},_handleUnique:function(e){Event.stop(e);this.parent.deselectAll();this.selectAll();this.onchange();},_handleCheckbox:function(e){this.checkbox.checked?this.selectAll():this.deselectAll();this.onchange();},_handleToggle:function(e){var display=this.s_wrapper.style.display;if(display.length==0){display='none';}
(display=='block')?this.close():this.open();}}
var SubcategoryFilter=function(element,parent){this.element=element;this.parent=parent;this.checkbox=this.element.getElementsByTagName('input')[0];this.link=this.element.getElementsByTagName('a')[0];this.id=this.checkbox.value;Event.observe(this.checkbox,'click',this._handleCheckbox.bind(this));Event.observe(this.link,'click',this._handleUnique.bind(this));}
SubcategoryFilter.prototype={select:function(check){if(check==undefined){check=true;}
this.checkbox.checked=check;},deselect:function(){this.select(false);},onchange:function(){this.parent.onchange();},serialize:function(){return(this.checkbox.checked)?this.id:-1;},_handleUnique:function(e){Event.stop(e);this.parent.parent.deselectAll();this.parent.select();this.select();this.onchange();},_handleCheckbox:function(e){if(this.checkbox.checked){this.parent.select();this.parent.highlight(this.parent.allSelected());}
else if(this.parent.serialize().length==0){this.parent.deselect();}
else{this.parent.highlight(false);}
this.onchange();}}
var MoreFilter=function(search){this.search=search;this.serial;this.types=[];var checkboxes=$('filter_additionalOptions').getElementsByTagName('input');for(var i=0,len=checkboxes.length;i<len;i++){var checkbox=checkboxes[i];var type={id:checkbox.value,element:checkbox.parentNode,checkbox:checkbox,link:checkbox.nextSibling}
Event.observe(checkbox,'click',this._handleCheckBoxClick.bind(this));Event.observe(type.link,'click',this._handleUnique.bind(this));this.types.push(type);}}
MoreFilter.prototype={_handleUnique:function(e){Event.stop(e);var elem=Event.findElement(e,'li');for(var i=0,len=this.types.length;i<len;i++){this.types[i].checkbox.checked=(this.types[i].element==elem);}
this.onchange();},_handleCheckBoxClick:function(e){this.onchange();},onchange:function(){this.serial=undefined;this.search.ajax.request(1);},serialize:function(){output=[];if(this.serial==undefined){for(var i=0,len=this.types.length;i<len;i++){var checkbox=this.types[i].checkbox;if(checkbox.checked){output.push(checkbox.value);}}
this.serial={misc:output.join("-")};}
return this.serial;}}
var bookmark_this_page=function(){var urlAddress="http://www.uship.com/tpi.aspx";var pageName="uShip's Transportation Price Index";bookmark(urlAddress,pageName);}
function bookmark(url,title){if((navigator.appName=="Microsoft Internet Explorer")&&(parseInt(navigator.appVersion)>=4)){window.external.AddFavorite(url,title);}else if(navigator.appName=="Netscape"){window.sidebar.addPanel(title,url,"");}else{alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");}}
var email_to=function(){}
var link_to=function(){var container=$('link-to');var input=container.getElementsByTagName('input')[0];container.style.display='block';input.select();input.onclick=function(){input.select();};}
var link_to_close=function(){$('link-to').style.display='none';}