var Autocomplete=function(el,options){this.el=$(el);this.id=this.el.identify();this.el.setAttribute('autocomplete','off');this.suggestions=[];this.types=[];this.ids=[];this.dates=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.value;this.intervalId=0;this.cachedResponse=[];this.instanceId=null;this.onChangeInterval=null;this.ignoreValueChange=false;this.serviceUrl=options.serviceUrl;this.options={autoSubmit:false,minChars:1,maxHeight:300,deferRequestBy:0,width:0,container:null,additional:null};if(options){Object.extend(this.options,options);}
if(Autocomplete.isDomLoaded){this.initialize();}else{Event.observe(document,'dom:loaded',this.initialize.bind(this),false);}};Autocomplete.instances=[];Autocomplete.isDomLoaded=false;Autocomplete.getInstance=function(id){var instances=Autocomplete.instances;var i=instances.length;while(i--){if(instances[i].id===id){return instances[i];}}};Autocomplete.highlight=function(value,re){return value.replace(re,function(match){return'<strong>'+match+'<\/strong>'});};Autocomplete.prototype={killerFn:null,initialize:function(){var me=this;this.killerFn=function(e){if(!$(Event.element(e)).up('.autocomplete')){me.killSuggestions();me.disableKillerFn();}}.bindAsEventListener(this);if(!this.options.width){this.options.width=(this.el.getWidth()-2);}
var div=new Element('div',{style:'position:absolute; z-index:1009;'});div.update('<div class="autocomplete" id="Autocomplete_'+this.id+'" style="display:none; width:'+this.options.width+'px;"></div>');this.options.container=$(this.options.container);if(this.options.container){this.options.container.appendChild(div);this.fixPosition=function(){};}else{document.body.appendChild(div);}
this.mainContainerId=div.identify();this.container=$('Autocomplete_'+this.id);this.fixPosition();Event.observe(this.el,window.opera?'keypress':'keydown',this.onKeyPress.bind(this));Event.observe(this.el,'keyup',this.onKeyUp.bind(this));Event.observe(this.el,'blur',this.enableKillerFn.bind(this));Event.observe(this.el,'focus',this.fixPosition.bind(this));this.container.setStyle({maxHeight:this.options.maxHeight+'px'});this.instanceId=Autocomplete.instances.push(this)-1;},fixPosition:function(){var offset=this.el.cumulativeOffset();$(this.mainContainerId).setStyle({position:'fixed',top:(offset.top+this.el.getHeight()+5)+'px',left:(offset.left+6)+'px'});},enableKillerFn:function(){Event.observe(document.body,'click',this.killerFn);},disableKillerFn:function(){Event.stopObserving(document.body,'click',this.killerFn);},killSuggestions:function(){this.stopKillSuggestions();this.intervalId=window.setInterval(function(){this.hide();this.stopKillSuggestions();}.bind(this),300);},stopKillSuggestions:function(){window.clearInterval(this.intervalId);},onKeyPress:function(e){if(!this.enabled){return;}
switch(e.keyCode){case Event.KEY_ESC:this.el.value=this.currentValue;this.hide();break;case Event.KEY_TAB:case Event.KEY_RETURN:if(this.selectedIndex===-1){this.hide();return;}
this.select(this.selectedIndex);if(e.keyCode===Event.KEY_TAB){return;}
break;case Event.KEY_UP:this.moveUp();break;case Event.KEY_DOWN:this.moveDown();break;default:return;}
Event.stop(e);},onKeyUp:function(e){switch(e.keyCode){case Event.KEY_UP:case Event.KEY_DOWN:return;}
clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.value){if(this.options.deferRequestBy>0){this.onChangeInterval=setInterval((function(){this.onValueChange();}).bind(this),this.options.deferRequestBy);}else{this.onValueChange();}}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.value;this.selectedIndex=-1;if(this.ignoreValueChange){this.ignoreValueChange=false;return;}
if(this.currentValue===''||this.currentValue.length<this.options.minChars){this.hide();}else{this.getSuggestions();}},getSuggestions:function(){var cr=this.cachedResponse[this.currentValue];if(cr&&Object.isArray(cr.suggestions)){this.suggestions=cr.suggestions;this.ids=cr.data;this.suggest();}else if(!this.isBadQuery(this.currentValue)){if(this.options.additional){var theAdditional=(this.options.additional.options[this.options.additional.selectedIndex].value);}
new Ajax.Request(this.serviceUrl,{method:'post',parameters:{query:this.currentValue,additional:theAdditional},onComplete:this.processResponse.bind(this)});}},isBadQuery:function(q){var i=this.badQueries.length;while(i--){if(q.indexOf(this.badQueries[i])===0){return true;}}
return false;},hide:function(){this.enabled=false;this.selectedIndex=-1;this.container.hide();},suggest:function(){if(this.suggestions.length===0){this.hide();return;}
var content=[];var re=new RegExp('\\b'+this.currentValue.match(/\w+/g).join('|\\b'),'gi');this.suggestions.each(function(value,i){content.push((this.selectedIndex===i?'<div class="selected"':'<div'),' title="',value,'" onclick="Autocomplete.instances[',this.instanceId,'].select(',i,');" onmouseover="Autocomplete.instances[',this.instanceId,'].activate(',i,');">',Autocomplete.highlight(value,re),'<span>'+this.types[i]+'</span></div>');}.bind(this));this.enabled=true;this.container.update(content.join('')).show();},processResponse:function(xhr){var response;try{response=xhr.responseText.evalJSON();if(!Object.isArray(response.ids)){response.ids=[];}}catch(err){return;}
this.cachedResponse[response.query]=response;if(response.suggestions.length===0){this.badQueries.push(response.query);}
if(response.query===this.currentValue){this.suggestions=response.suggestions;this.ids=response.ids;this.types=response.types;this.dates=response.dates;this.suggest();}},activate:function(index){var divs=this.container.childNodes;var activeItem;if(this.selectedIndex!==-1&&divs.length>this.selectedIndex){divs[this.selectedIndex].className='';}
this.selectedIndex=index;if(this.selectedIndex!==-1&&divs.length>this.selectedIndex){activeItem=divs[this.selectedIndex]
activeItem.className='selected';}
return activeItem;},deactivate:function(div,index){div.className='';if(this.selectedIndex===index){this.selectedIndex=-1;}},select:function(i){var selectedValue=this.suggestions[i];if(selectedValue){this.el.value=selectedValue;if(this.options.autoSubmit&&this.el.form){this.el.form.submit();}
this.ignoreValueChange=true;this.hide();this.onSelect(i);}},moveUp:function(){if(this.selectedIndex===-1){return;}
if(this.selectedIndex===0){this.container.childNodes[0].className='';this.selectedIndex=-1;this.el.value=this.currentValue;return;}
this.adjustScroll(this.selectedIndex-1);},moveDown:function(){if(this.selectedIndex===(this.suggestions.length-1)){return;}
this.adjustScroll(this.selectedIndex+1);},adjustScroll:function(i){var container=this.container;var activeItem=this.activate(i);var offsetTop=activeItem.offsetTop;var upperBound=container.scrollTop;var lowerBound=upperBound+this.options.maxHeight-25;if(offsetTop<upperBound){container.scrollTop=offsetTop;}else if(offsetTop>lowerBound){container.scrollTop=offsetTop-this.options.maxHeight+25;}
this.el.value=this.suggestions[i];},onSelect:function(i){if(typeof this.ids!='undefined'){(this.options.onSelect||Prototype.emptyFunction)(this.types[i],this.ids[i]);}}};Event.observe(document,'dom:loaded',function(){Autocomplete.isDomLoaded=true;},false);Menu=Class.create({initialize:function(){var e=Prototype.emptyFunction;this.ie=Prototype.Browser.IE;this.options=Object.extend({selector:'.contextmenu',className:'protoMenu',title:null,pageOffset:25,fade:false,zIndex:1020,beforeShow:e,beforeHide:e,beforeSelect:e},arguments[0]||{});if(this.ie){this.shim=new Element('iframe',{style:'position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);display:none',src:'javascript:false;',frameborder:0});}
this.options.fade=this.options.fade&&!Object.isUndefined(Effect);this.container=new Element('div',{className:this.options.className,style:'display:none'});if(this.options.title){var title=new Element('div',{className:'title'});title.update(this.options.title);this.container.insert(title);}
var list=new Element('ul');this.options.menuItems.each(function(item){if(item.separator){var class='separator';var icon=null;var link=null;}else{if(item.className){var class=item.className;}
var icon=new Element('div',{className:'icon'});var link=new Element('a',{href:'#',title:item.name,className:(item.disabled?'disabled':'enabled')});link.update(item.name);}
var li=Object.extend(new Element('li',{className:class+(item.disabled?' disabled':' enabled')}),{_callback:item.callback});li.observe('click',this.onClick.bind(this));li.observe('contextmenu',Event.stop);if(icon){li.insert(icon);}
if(link){li.insert(link);}
list.insert(li);}.bind(this));$(document.body).insert(this.container.insert(list).observe('contextmenu',Event.stop));if(this.ie){$(document.body).insert(this.shim);}
document.observe('click',function(e){if(this.container.visible()&&!e.isRightClick()){this.options.beforeHide(e);if(this.ie)this.shim.hide();this.container.hide();}}.bind(this));$$(this.options.selector).invoke('observe',Prototype.Browser.Opera?'click':'contextmenu',function(e){if((Prototype.Browser.Opera&&!e.ctrlKey)||e.ctrlKey){return;}
this.show(e);}.bind(this));},show:function(e){e.stop();this.options.beforeShow(e);var x=Event.pointer(e).x,y=Event.pointer(e).y,vpDim=document.viewport.getDimensions(),vpOff=document.viewport.getScrollOffsets(),elDim=this.container.getDimensions(),elOff={left:((x+elDim.width+this.options.pageOffset)>vpDim.width?(vpDim.width-elDim.width-this.options.pageOffset):x)+'px',top:((y-vpOff.top+elDim.height)>vpDim.height&&(y-vpOff.top)>elDim.height?(y-elDim.height):y)+'px'};this.container.setStyle(elOff).setStyle({zIndex:this.options.zIndex});if(this.ie){this.shim.setStyle(Object.extend(Object.extend(elDim,elOff),{zIndex:this.options.zIndex-1})).show();}
this.options.fade?Effect.Appear(this.container,{duration:0.25}):this.container.show();this.event=e;},onClick:function(e){e.stop();var clicked=e.target.up('li');if(clicked._callback&&!e.target.hasClassName('disabled')){this.options.beforeSelect(e);if(this.ie)this.shim.hide();this.container.hide();clicked._callback(this.event);}}})
function cellOverlay(source){if(typeof source=='undefined'){return false;}else{var element=source.element();var json=element.readAttribute('alt').evalJSON();var cellNum=json.num;var sourceElement=element.up('td.f');var viewport=document.viewport.getDimensions();}
if(!$('cellOverlay')){var overlay='<div id="cellOverlay" style="display:none;">'+'  <div id="cellOverlay_1"></div>'+'  <div id="cellOverlay_2"></div>'+'  <div id="cellOverlay_3"></div>'+'  <div id="cellOverlay_prompt" class="cellOverlay_prompt"></div>'+'</div>';$('body').insert(overlay);}
if(source.type=='mouseover'){if(json.action=='remove'){$('cellOverlay_prompt').update(strings.cellOverlay[0]);}else if(json.action=='add'){$('cellOverlay_prompt').update(strings.cellOverlay[1]);}
if(typeof data!='undefined'){var i=1;if(typeof data[sourceElement.id][cellNum].type!='undefined'){$('cellOverlay_'+i).update(data[sourceElement.id][cellNum].type);$('cellOverlay_'+i).writeAttribute('class','cellOverlay_type');i++;}
$('cellOverlay_'+i).update(data[sourceElement.id][cellNum].line1);$('cellOverlay_'+i).writeAttribute('class','cellOverlay_line1');i++;$('cellOverlay_'+i).update(data[sourceElement.id][cellNum].line2);$('cellOverlay_'+i).writeAttribute('class','cellOverlay_line2');i++;}
var sourceSize=sourceElement.getDimensions();var sourcePos=sourceElement.cumulativeOffset();$('cellOverlay').style.top=sourcePos.top+'px';$('cellOverlay').style.height=(sourceSize.height-22)+'px';if((sourceElement.viewportOffset().left+sourceSize.width+320)>viewport.width){$('cellOverlay').style.left=(sourcePos.left-230)+'px';$('cellOverlay').writeAttribute('class','popL rl');var cellRound='rr';}else{$('cellOverlay').style.left=sourcePos.left+sourceSize.width+'px';$('cellOverlay').writeAttribute('class','popR rr');var cellRound='rl';}
sourceElement.addClassName(cellRound);sourceElement.removeClassName('r');$('cellOverlay').show();}else if(source.type=='mouseout'){sourceElement.addClassName('r');sourceElement.removeClassName(cellRound);$('cellOverlay').hide();}}
function dateCellOverlay(source){if(typeof source=='undefined'){return false;}else{var element=source.element();var json=element.readAttribute('alt').evalJSON();var cellNum=json.num;var sourceElement=element.up('div[id]');var viewport=document.viewport.getDimensions();var scrollOffset=document.viewport.getScrollOffsets();}
if(!$('cellDateOverlay')){var overlay='<div id="cellDateOverlay" style="display:none;">'+'  <div id="cellDateOverlay_1"></div>'+'  <div id="cellDateOverlay_2"></div>'+'  <div id="cellDateOverlay_3"></div>'+'  <div id="cellDateOverlay_prompt" class="cellOverlay_prompt"></div>'+'</div>';$('lightbox_iframe').insert(overlay);}
if(source.type=='mouseover'){if(json.action=='remove'){$('cellDateOverlay_prompt').update(strings.cellOverlay[0]);}else if(json.action=='add'){$('cellDateOverlay_prompt').update(strings.cellOverlay[1]);}
element.addClassName('cellDateHover');if(typeof dateData!='undefined'){var i=1;if(typeof dateData[sourceElement.id][cellNum].type!='undefined'){$('cellDateOverlay_'+i).update(dateData[sourceElement.id][cellNum].type);$('cellDateOverlay_'+i).writeAttribute('class','cellOverlay_type');i++;}
$('cellDateOverlay_'+i).update(dateData[sourceElement.id][cellNum].line1);$('cellDateOverlay_'+i).writeAttribute('class','cellOverlay_line1');i++;$('cellDateOverlay_'+i).update(dateData[sourceElement.id][cellNum].line2);$('cellDateOverlay_'+i).writeAttribute('class','cellOverlay_line2');i++;}
var sourceSize=element.getDimensions();var sourcePos=element.positionedOffset();$('cellDateOverlay').style.top=sourcePos.top-$('lightbox_iframe').scrollTop+2+'px';$('cellDateOverlay').style.height=(sourceSize.height-24)+'px';if((cellNum%5)>=2){$('cellDateOverlay').style.left=(sourcePos.left-199)+'px';}else{$('cellDateOverlay').style.left=sourcePos.left+sourceSize.width-6+'px';}
if((sourcePos.top+sourceSize.height)>($('lightbox_iframe').getHeight()+$('lightbox_iframe').scrollTop+30)){$('cellDateOverlay').addClassName('shadowB');}else if((sourcePos.top-30)<$('lightbox_iframe').scrollTop){$('cellDateOverlay').addClassName('shadowT');$('cellDateOverlay').style.height=(sourceSize.height-28)+'px';}else{}
$('cellDateOverlay').show();}else if(source.type=='mouseout'){$('cellDateOverlay').hide();var shadowClass=$('cellDateOverlay').readAttribute('class');if(shadowClass!=null){$('cellDateOverlay').writeAttribute('class','');}}}
function changePage(theContext,theDate){if((typeof theContext=='undefined')||(typeof theDate=='undefined')||!$('frame')){return false;}
var buttons=['albums','movies','games','myitems'];var titles=[strings.types[0],strings.types[1],strings.types[2],strings.types[3]];loading('cal','show',spinnerCounter);new Ajax.Request(BASE_URL+'/get/calendar.php?page='+theContext,{method:'post',parameters:{context:theContext,date:theDate},onSuccess:function(transport){var date=transport.headerJSON;$('frame_date').update(date.thisDateString);$('lastDate').writeAttribute('onclick',"changePage('"+theContext+"', '"+date.lastDate+"')");$('nextDate').writeAttribute('onclick',"changePage('"+theContext+"', '"+date.nextDate+"')");$('frame').update(transport.responseText);transport.responseText.evalScripts();for(i in buttons){var button=buttons[i];if(!$('button_'+button)){throw $break;}
if(button==theContext){$('button_'+button).addClassName('button_selected');$('button_'+button).removeClassName('button');if($('frame_title')){$('frame_title').update(titles[i]);}}else{$('button_'+button).addClassName('button');$('button_'+button).removeClassName('button_selected');}}},onFailure:function(){console.debug('fail');},onComplete:function(){loading('cal','hide',spinnerCounter);}});}
function showCalendarDate(theType,theDate,thePage){if((typeof theType=='undefined')||(typeof theDate=='undefined')){return false;}
if(typeof thePage=='undefined'){thePage=1;}
lightbox('show',{url:BASE_URL+'/get/dateitems.php?type='+theType+'&date='+theDate+'&page='+thePage,width:550,height:400});}
