/***********************************************************************
*
*  calendar.js + calendargrid.js
*
***********************************************************************/


function toggleAdvanced(){
	if ( $("simpleSearchDiv").style.display != "none" ){
		$("simpleSearchDiv").setStyle('display','none');
		$("advancedSearchDiv").setStyle('display','block');
		$("advSearchImg").addClass('sprite-n-simpleSearch');
		$("advSearchImg").removeClass('sprite-n-advSearch');
	}else{
		$("simpleSearchDiv").setStyle('display','block');
		$("advancedSearchDiv").setStyle('display','none');
		$("advSearchImg").addClass('sprite-n-advSearch');
		$("advSearchImg").removeClass('sprite-n-simpleSearch');
		clearFields();
	}
}

function clearFields(){
		var tDay = $("toDay");
		tDay.options[tDay.selectedIndex].text="Any";
		var tMonth = $("toMonth");
		tMonth.options[tMonth.selectedIndex].text="Any";
		var tYear = $("toYear");
		tYear.options[tYear.selectedIndex].text="Any";
		
		var fDay = $("fromDay");
		fDay.options[fDay.selectedIndex].text="Any";
		var fMonth = $("fromMonth");
		fMonth.options[fMonth.selectedIndex].text="Any";
		var fYear = $("fromYear");
		fYear.options[fYear.selectedIndex].text="Any";
		
		var tCat = $("toCategory");
		tCat.options[tCat.selectedIndex].text="Any";

}

function swapUpcoming(){
	if ( $("todaysEvents").style.display != "none" ){ 
		$('todayBan').addClass('sprite-h-upcomingBan');
		$('todayBan').removeClass('sprite-h-todayBan');
		
		$("eventToggle").addClass('sprite-h-todayEvent');
		$("eventToggle").removeClass('sprite-h-upcoming');
	
		$("upcomingEvents").setStyle('display','block');
		$("todaysEvents").setStyle('display','none');
	}else{
		$('todayBan').removeClass('sprite-h-upcomingBan');
		$('todayBan').addClass('sprite-h-todayBan');
		
		$("eventToggle").removeClass('sprite-h-todayEvent');
		$("eventToggle").addClass('sprite-h-upcoming');
		$("upcomingEvents").setStyle('display','none');
		$("todaysEvents").setStyle('display','block');
	}
}

function fromCalendarGrid(searchURL){
	window.location = searchURL;
}

function goToPage(url) {
	document.location = url;
}

function showAllEvents(){
	$("upcomingEvents").setStyle('display','none');
	$("allEvents").setStyle('display','block');
	$("allButton").addClass('sprite-b-allEventsOn');
	$("allButton").removeClass('sprite-b-allEventsOff');
	
	$("upcomingButton").addClass('sprite-b-upcomingOff');
	$("upcomingButton").removeClass('sprite-b-upcomingOn');
}

function showUpcomingEvents(){
	$("upcomingEvents").setStyle('display','block');
	$("allEvents").setStyle('display','none');
	$("allButton").addClass('sprite-b-allEventsOff');
	$("allButton").removeClass('sprite-b-allEventsOn')
	$("upcomingButton").addClass('sprite-b-upcomingOn');
	$("upcomingButton").removeClass('sprite-b-upcomingOff');
}

function popup(url,width,height) {
	var properties = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=" + width + ",height=" + height;
	var myPopup = window.open(url, "myPopup", properties);
	myPopup.focus();
}
function popupnoscroll(url,width,height) {
	var properties = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=" + width + ",height=" + height;
	var myPopup = window.open(url, "myPopup", properties);
	myPopup.focus();
}

function openFullDescription() {
	$("shortDescription").setStyle('display','none');
	$("longDescription").setStyle('display','block');
}

function  closeFullDescription() {
	$("shortDescription").setStyle('display','block');
	$("longDescription").setStyle('display','none');
}

function searchGo(url,total,val) {
	if ((val > 0) && (val <= total)) document.location = url + val;
	else return false;
}

function changeBG(id){
	$(id).style.backgroundColor = "#D8D8C5";
}

function changeBGBack(id){
	$(id).style.backgroundColor = "transparent";
}

function setSearchField() {
	if ($("simpleSearchDiv").style.display != "none") {
		$("search_sim").value = $("search_adv").value;
	}
	else {
		$("search_adv").value = $("search_sim").value;
	}
}








/********************************************************************
*  CALENDAR DATE PICKER
*
*  Purpose:  A pop up calendar that allows you to pick a date and
*            have it populate a form field with said date picked.
*
*  Author:   Brent Gustafson
*  Created:  December 28, 2001
*********************************************************************/

try {document.execCommand("BackgroundImageCache", false, true);} catch(e){};

// Globals
var d_obj;
var d_field;
var d_in = 0;
var d_onColor = "#DADADA";   // Color of date when rolled on
var d_offColor = "#FFFFFF";  // Color of date when rolled off
var d_selectedMonth;
var d_selectedYear;
var d_currentDate = new Date();
var d_currentMonth = d_currentDate.getMonth();
var d_monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var d_monthName = new Array("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december");
var d_currentYear = d_currentDate.getYear();
if (d_currentYear < 1000) d_currentYear += 1900;
var d_today = d_currentDate.getDate();
var blankDate = "<img src='/images/spacer.gif' width='25' height='18' />";


// Calculates and returns month and year for header of the calendar
function date_headerFunc(d_year, d_month) {
   if (d_month == 1) {
   	d_monthDays[1] = ((d_year % 400 == 0) || ((d_year % 4 == 0) && (d_year % 100 !=0))) ? 29 : 28;
   }

	var d_headerStr = '<div id="calMonth" class="sprite-' + d_monthName[d_month] + ' mY"></div> <div id="calYear" class="sprite-'+ d_year +' mY"></div>';

   return d_headerStr;
}


// Creates the entire calendar in HTML and writes it to the screen.
function date_calendarFunc(d_year, d_month) {
   var d_firstDate = new Date(d_year, d_month, 1);
   var d_heading = date_headerFunc(d_year, d_month);
   var d_firstDay = d_firstDate.getDay() + 1;
   
   var d_obj = $("calGridDiv");

	d_obj.set('html','');

   // Calculate number of rows of weeks there need to be.
   if (((d_monthDays[d_month] == 31) && (d_firstDay >= 6)) || ((d_monthDays[d_month] == 30) && (d_firstDay == 7))) {
      var d_rows = 6;
   }
   else if ((d_monthDays[d_month] == 28) && (d_firstDay == 1)) {
      var d_rows = 4;
   }
   else {
      var d_rows = 5;
   }
   
   // Display Header and days of the week below
	$("calHeadMonth").set('html',d_heading) ;
	
	   
   var o = "";
   
   // Display calendar dates below
	var d_dayCount = 1;
	var d_loopCount = 1;
	o += "<ul id='calGrid'>\n";

   for (var j = 1; j <= d_rows; j++) {
      //o += "<tr class='dayRow'>\n";
      for (var i = 1; i < 8; i++) {
         
         // Calculate date string.
         var d_yearStr = d_year;
         var d_monthStr = d_month + 1;
         var d_dayStr = d_dayCount;
         
         if (d_yearStr < 10) d_yearStr = "0" + d_yearStr;
         if (d_monthStr < 10) d_monthStr = "0" + d_monthStr;
         if (d_dayStr < 10) d_dayStr = "0" + d_dayStr;
         
         var d_string = d_monthStr + "/" + d_dayStr + "/" + d_yearStr;
         
         var search_string = "/search.wac?term=search&fromMonth=" + d_monthStr + "&fromDay=" + d_dayCount + "&fromYear=" + d_year + "&toMonth=" + d_monthStr + "&toDay=" + d_dayCount + "&toYear=" + d_year + "&toCategory=All"; //&fMonth=10&fYear=2006
         

		// Write indivdual day
		if ((d_loopCount >= d_firstDay) && (d_dayCount <= d_monthDays[d_month])) {
			if ((d_dayCount == d_today) && (d_year == d_currentYear) && (d_month == d_currentMonth)) { 
				o += "<li class='today sprite-"+d_dayCount+"'><a href='"+ search_string +"'>"+blankDate+"</a></li>";
			} else {
				if ((d_dayCount < d_today) && (d_currentMonth == d_month) && (d_currentYear == d_year)){ //past dates
					if (window.searchFromMonth && ((searchFromMonth == d_monthStr) && (searchFromDay == d_dayStr) && (searchFromYear == d_yearStr))) { 
						//if it is the day someone clicked on
						o += "<li class='gridClicked sprite-"+d_dayCount+"'><a href='"+ search_string +"'>"+blankDate+"</a></li>";
					} else{
						o += "<li class='gridPast sprite-"+d_dayCount+"'><a href='"+ search_string +"'>"+blankDate+"</a></li>";
					}
				} else { //future dates
					//if it is the day someone clicked on
					if (window.searchFromMonth && ((searchFromMonth == d_monthStr) && (searchFromDay == d_dayStr) && (searchFromYear == d_yearStr))) { 
						o += "<li class='gridClicked sprite-"+d_dayCount+"'><a href='"+ search_string +"' class='today'>"+blankDate+"</a></li>";
					} else{
						//normal future date
						o += "<li class='sprite-"+d_dayCount+"'><a href='"+ search_string +"'>"+blankDate+"</a></li>";
					}
				}
			}
			d_dayCount++;    
		} else {
			//empty days
			o += "<li class='gridEmpty'>"+blankDate+"</li>";
		}
         d_loopCount++;
      }
   }
	o += "</ul>";
	
	d_obj.set('html',o);


   //hide the ability to go back
	fix_arrows();
}


// Move calendar forward and back a month
function date_skipFunc(d_forward) {
   if (d_forward) {
      if (d_selectedMonth == 11) {
         d_selectedMonth = 0;
         d_selectedYear++;
      }
      else d_selectedMonth++;
   }
   else {
      if (d_selectedMonth == 0) {
         d_selectedMonth = 11;
         d_selectedYear--;
      }
      else d_selectedMonth--;
   }
   
   date_calendarFunc(d_selectedYear, d_selectedMonth);
   
  
    
}

function fix_arrows(){
	 if ( (d_selectedYear <= d_currentYear) && (d_selectedMonth <= d_currentMonth) ){
	  		$("calHeadForwardBack").setStyle('display','none');
	  		$("calHeadForwardOnly").setStyle('display','block');
	  } else {

	  		$("calHeadForwardBack").setStyle('display','block');
	  		$("calHeadForwardOnly").setStyle('display','none');
	  }
}


// Initialize variables and draw current calendar
function date_initFunc() {
   d_obj = $("calGridDiv");

	if (window.searchFromMonth  &&  window.searchFromYear ){
		d_selectedMonth = eval(searchFromMonth)-1;
		d_selectedYear = eval(searchFromYear);
		date_calendarFunc(d_selectedYear, d_selectedMonth);
	
		//show the forward / back buttons
		fix_arrows();
	
	} else {
		d_selectedMonth = d_currentMonth;	
		d_selectedYear = d_currentYear;
		date_calendarFunc(d_currentYear, d_currentMonth);
		//hide both forward/back on init
	   $("calHeadForwardBack").setStyle('display','none');
	}
}


/*
* calendar socialize stuff, yo
* justin heideman, walker art center, 20098
*/


var share_eventDesc;
var dateInfo;
var shortUrl ='';


window.addEvent('domready', function() {
	
	
	if($("calGridDiv")){  
		date_initFunc(); //fire the calendar grid off
	}
	
	
	if ($('sharingWrapper')){
		//effects for share box
		$('sharingWrapper').setStyle('display','block');
		var shareSlide = new Fx.Slide($('sharingWrapper')).hide();
		var docScroll = new Fx.Scroll($(document.body));
	
		share_eventDesc = $('shortDescription').get('text');
	
		if (share_eventDesc.length > 300){
			share_eventDesc = share_eventDesc.substring(0, 300);
			share_eventDesc = share_eventDesc.replace(/(\s(?!(\n|\r))(?=\s))+/g,""); //take consecutive spaces down to one
			share_eventDesc = share_eventDesc.replace(/(\n|\r)+/g,"\n\r"); //take consecutive lines down to one
			share_eventDesc += "...";
		}
		share_eventDesc = share_eventDesc + "\r\n\r\n" + window.location.href;
	
		$$('div.sprite-b-remindMe').each(function(el){
			el.addEvent('click', function(e){ 
				shareSlide.slideIn(); 
				docScroll.toElement(el);
				calendarSocialize(el.get('eventid'),el.get('startdate'),el.get('enddate'),el.get('eventlocation'));
			});
		});
	}
});




function calendarSocialize(eventID,startDate,endDate,theLocation){
	
	//outlook/ical
	$('share_ical').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/ical/" + eventID);
		window.location.assign('http://'+location.host+'/ical.wac?id='+eventID.toString());
		return false;
	});
	
	//google calendar
	$('share_gcal').removeEvents().addEvent('click',function(e){
		
        pageTracker._trackPageview("/sharethis/google_calendar/" + eventID);
		//console.log(startDate,endDate);
		gcalURL = 'http://www.google.com/calendar/event?action=TEMPLATE&text='+encodeURIComponent(share_eventTitle);
		gcalURL += '&dates='+startDate+"/"+endDate;
		gcalURL += "&sprop=website:"+encodeURIComponent(location.href)+"&sprop=name:Walker%20Art%20Center";
		gcalURL += "&details="+encodeURIComponent(share_eventDesc);
		gcalURL += "&trp=true"
			
		if (theLocation){
			gcalURL += "&location="+encodeURIComponent(theLocation);
		}
		
		//console.log(gcalURL);
		window.open(gcalURL);
		return false;

	});
	
	//email reminder
	$('share_reminder').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/email/" + eventID);
		if (Browser.Engine.trident){
			popup('reminder.wac?id='+eventID,465,575);
		} else{
			popup('reminder.wac?id='+eventID,455,565);
		}
		return false;
	});
	
	//facebook
	$('share_facebook').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/facebook/" + eventID);
		u=location.href;
		t=document.title;
		window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
		return false;
	});
	
	
	//myspace
	$('share_myspace').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/myspace/" + eventID);
		t=document.title;
		c='<img src="http://media.walkerart.org/'+share_eventImageID+'200.jpg" /><br />'+share_eventDesc;
		u=location.href;
		//console.log('http://www.myspace.com/index.cfm?fuseaction=postto&u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t)+'&c='+encodeURIComponent(c)+'&l=3');
		window.open('http://www.myspace.com/index.cfm?fuseaction=postto&u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t)+'&c='+encodeURIComponent(c)+'&l=3');
		return false;
	});
	

	//twitter
	$('share_twitter').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/twitter/" + eventID);
		if (shortUrl != ''){
			message = document.title + " @walkerartcenter - " + shortUrl;
			window.open('http://twitter.com/home/?status='+encodeURIComponent(message));
			return false;
		}
	});

	
	//delicious
	$('share_delicious').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/delicious/" + eventID);
		    window.open('http://delicious.com/save?jump=yes&url='+encodeURIComponent(window.location)+'&title='+encodeURIComponent(document.title));
		return false;
	});
	
	//google bookrmakrs
	$('share_google').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/google_bookmarks/" + eventID);
		window.open('http://www.google.com/bookmarks/mark?op=edit&bkmk='+encodeURIComponent(window.location)+'&title='+encodeURIComponent(document.title));
		return false;
	});
	
	
	//yahoo bookrmakrs
	$('share_yahoo').removeEvents().addEvent('click',function(e){
	    pageTracker._trackPageview("/sharethis/yahoo_bookmark/" + eventID);
		window.open('http://bookmarks.yahoo.com/toolbar/savebm?u='+encodeURIComponent(window.location)+'&t='+encodeURIComponent(document.title)+"&opener=bm&ei=UTF-8",
		'sharer','toolbar=0,status=0,resizable=1,scrollbars=1,width=450,height=480');
		return false;
	});
	

	
	//generate a shortend URL from bit.ly, can't do it inside the twitter posting onComplete due to popup blocking
	if (shortUrl == ''){
		new JsonP('http://api.bit.ly/shorten', {
		  data: {longUrl: location.href },
		  queryString: 'login=wac&apiKey=R_ffed4856cf356b169676016e710d1bbe&format=json&version=2.0.1',
		  onComplete: function(data){
			for (var r in data.results) {	first_result = data.results[r]; break;}     
			if (first_result){	
				shortUrl = first_result.shortUrl; 
				//console.log(shortUrl);
			}
		  }
		}).request(); //alerts 8.3 - the rating of the ipod
	}

	
}




/* --------------------------- mootools extensions --------------------------------------------------- */
//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License.

Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical"},initialize:function(B,A){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);
if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper);}},true);this.element=this.subject=$(B);this.parent(A);var C=this.element.retrieve("wrapper");
this.wrapper=C||new Element("div",{styles:$extend(this.element.getStyles("margin","position"),{overflow:"hidden"})}).wraps(this.element);this.element.store("wrapper",this.wrapper).setStyle("margin",0);
this.now=[];this.open=true;},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight;},horizontal:function(){this.margin="margin-left";
this.layout="width";this.offset=this.element.offsetWidth;},set:function(A){this.element.setStyle(this.margin,A[0]);this.wrapper.setStyle(this.layout,A[1]);
return this;},compute:function(E,D,C){var B=[];var A=2;A.times(function(F){B[F]=Fx.compute(E[F],D[F],C);});return B;},start:function(B,E){if(!this.check(arguments.callee,B,E)){return this;
}this[E||this.options.mode]();var D=this.element.getStyle(this.margin).toInt();var C=this.wrapper.getStyle(this.layout).toInt();var A=[[D,C],[0,this.offset]];
var G=[[D,C],[-this.offset,0]];var F;switch(B){case"in":F=A;break;case"out":F=G;break;case"toggle":F=(this.wrapper["offset"+this.layout.capitalize()]==0)?A:G;
}return this.parent(F[0],F[1]);},slideIn:function(A){return this.start("in",A);},slideOut:function(A){return this.start("out",A);},hide:function(A){this[A||this.options.mode]();
this.open=false;return this.set([-this.offset,0]);},show:function(A){this[A||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(A){return this.start("toggle",A);
}});Element.Properties.slide={set:function(B){var A=this.retrieve("slide");if(A){A.cancel();}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},B));
},get:function(A){if(A||!this.retrieve("slide")){if(A||!this.retrieve("slide:options")){this.set("slide",A);}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")));
}return this.retrieve("slide");}};Element.implement({slide:function(D,E){D=D||"toggle";var B=this.get("slide"),A;switch(D){case"hide":B.hide(E);break;case"show":B.show(E);
break;case"toggle":var C=this.retrieve("slide:flag",B.open);B[(C)?"slideOut":"slideIn"](E);this.store("slide:flag",!C);A=true;break;default:B.start(D,E);
}if(!A){this.eliminate("slide:flag");}return this;}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(B,A){this.element=this.subject=$(B);
this.parent(A);var D=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=$(this.element.getDocument().body);}var C=this.element;
if(this.options.wheelStops){this.addEvent("start",function(){C.addEvent("mousewheel",D);},true);this.addEvent("complete",function(){C.removeEvent("mousewheel",D);
},true);}},set:function(){var A=Array.flatten(arguments);this.element.scrollTo(A[0],A[1]);},compute:function(E,D,C){var B=[];var A=2;A.times(function(F){B.push(Fx.compute(E[F],D[F],C));
});return B;},start:function(C,H){if(!this.check(arguments.callee,C,H)){return this;}var E=this.element.getSize(),F=this.element.getScrollSize();var B=this.element.getScroll(),D={x:C,y:H};
for(var G in D){var A=F[G]-E[G];if($chk(D[G])){D[G]=($type(D[G])=="number")?D[G].limit(0,A):A;}else{D[G]=B[G];}D[G]+=this.options.offset[G];}return this.parent([B.x,B.y],[D.x,D.y]);
},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom");
},toElement:function(B){var A=$(B).getPosition(this.element);return this.start(A.x,A.y);}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(B,A){this.elements=this.subject=$$(B);
this.parent(A);},compute:function(G,H,I){var C={};for(var D in G){var A=G[D],E=H[D],F=C[D]={};for(var B in A){F[B]=this.parent(A[B],E[B],I);}}return C;
},set:function(B){for(var C in B){var A=B[C];for(var D in A){this.render(this.elements[C],D,A[D],this.options.unit);}}return this;},start:function(C){if(!this.check(arguments.callee,C)){return this;
}var H={},I={};for(var D in C){var F=C[D],A=H[D]={},G=I[D]={};for(var B in F){var E=this.prepare(this.elements[D],B,F[B]);A[B]=E.from;G[B]=E.to;}}return this.parent(H,I);
}});


/*MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006-2007 Valerio Proietti, <http://mad4milk.net>, MIT Style License.||Clientcide Copyright (c) 2006-2008, http://www.clientcide.com/wiki/cnet-libraries#license*/

var Clientcide={version:'705',setAssetLocation:function(baseHref){if(window.StickyWin&&StickyWin.ui){var CGFstickyWinHTML=StickyWin.ui.bind(window);StickyWin.ui=function(caption,body,options){return CGFstickyWinHTML(caption,body,$merge({baseHref:baseHref+'/stickyWinHTML/'},options))};if(StickyWin.alert){var CGFsimpleErrorPopup=StickyWin.alert.bind(window);StickyWin.alert=function(msghdr,msg,base){return CGFsimpleErrorPopup(msghdr,msg,base||baseHref+"/simple.error.popup")}}}if(window.TagMaker){TagMaker=TagMaker.refactor({options:{baseHref:baseHref+'/tips/'}})}if(window.ProductPicker){ProductPicker.refactor({options:{baseHref:baseHref+'/Picker'}})}if(window.Autocompleter){var AcClientcide={options:{baseHref:baseHref+'/autocompleter/'}};Autocompleter.Base.refactor(AcClientcide);if(Autocompleter.Ajax){["Base","Xhtml","Json"].each(function(c){if(Autocompleter.Ajax[c])Autocompleter.Ajax[c].refactor(AcClientcide)})}if(Autocompleter.Local)Autocompleter.Local.refactor(AcClientcide);if(Autocompleter.JsonP)Autocompleter.JsonP.refactor(AcClientcide)}if(window.Lightbox){Lightbox.refactor({options:{assetBaseUrl:baseHref+'/slimbox/'}})}if(window.Waiter){Waiter.refactor({options:{baseHref:baseHref+'/waiter/'}})}}};setCNETAssetBaseHref=Clientcide.setAssetLocation;var dbug={logged:[],timers:{},firebug:false,enabled:false,log:function(){dbug.logged.push(arguments)},nolog:function(msg){dbug.logged.push(arguments)},time:function(name){dbug.timers[name]=new Date().getTime()},timeEnd:function(name){if(dbug.timers[name]){var end=new Date().getTime()-dbug.timers[name];dbug.timers[name]=false;dbug.log('%s: %s',name,end)}else dbug.log('no such timer: %s',name)},enable:function(silent){if(dbug.firebug){try{dbug.enabled=true;dbug.log=function(){(console.debug||console.log).apply(console,arguments)};dbug.time=function(){console.time.apply(console,arguments)};dbug.timeEnd=function(){console.timeEnd.apply(console,arguments)};if(!silent)dbug.log('enabling dbug');for(var i=0;i<dbug.logged.length;i++){dbug.log.apply(console,dbug.logged[i])}dbug.logged=[]}catch(e){dbug.enable.delay(400)}}},disable:function(){if(dbug.firebug)dbug.enabled=false;dbug.log=dbug.nolog;dbug.time=function(){};dbug.timeEnd=function(){}},cookie:function(set){var value=document.cookie.match('(?:^|;)\\s*jsdebug=([^;]*)');var debugCookie=value?unescape(value[1]):false;if((!$defined(set)&&debugCookie!='true')||($defined(set)&&set)){dbug.enable();dbug.log('setting debugging cookie');var date=new Date();date.setTime(date.getTime()+(24*60*60*1000));document.cookie='jsdebug=true;expires='+date.toGMTString()+';path=/;'}else dbug.disableCookie()},disableCookie:function(){dbug.log('disabling debugging cookie');document.cookie='jsdebug=false;path=/;'}};(function(){var fb=typeof console!="undefined";var debugMethods=['debug','info','warn','error','assert','dir','dirxml'];var otherMethods=['trace','group','groupEnd','profile','profileEnd','count'];function set(methodList,defaultFunction){for(var i=0;i<methodList.length;i++){dbug[methodList[i]]=(fb&&console[methodList[i]])?console[methodList[i]]:defaultFunction}};set(debugMethods,dbug.log);set(otherMethods,function(){})})();if(typeof console!="undefined"&&console.warn){dbug.firebug=true;var value=document.cookie.match('(?:^|;)\\s*jsdebug=([^;]*)');var debugCookie=value?unescape(value[1]):false;if(window.location.href.indexOf("jsdebug=true")>0||debugCookie=='true')dbug.enable();if(debugCookie=='true')dbug.log('debugging cookie enabled');if(window.location.href.indexOf("jsdebugCookie=true")>0){dbug.cookie();if(!dbug.enabled)dbug.enable()}if(window.location.href.indexOf("jsdebugCookie=false")>0)dbug.disableCookie()}var JsonP=new Class({Implements:[Options,Events],options:{callBackKey:"callback",queryString:"",data:{},timeout:5000,retries:0},initialize:function(url,options){this.setOptions(options);this.url=this.makeUrl(url).url;this.fired=false;this.scripts=[];this.requests=0;this.triesRemaining=[]},request:function(url,requestIndex){var u=this.makeUrl(url);if(!$chk(requestIndex)){requestIndex=this.requests;this.requests++}if(!$chk(this.triesRemaining[requestIndex]))this.triesRemaining[requestIndex]=this.options.retries;var remaining=this.triesRemaining[requestIndex];dbug.log('retrieving by json script method: %s',u.url);var dl=(Browser.Engine.trident)?50:0;(function(){var script=new Element('script',{src:u.url,type:'text/javascript',id:'jsonp_'+u.index+'_'+requestIndex});this.fired=true;this.addEvent('onComplete',function(){try{script.dispose()}catch(e){}}.bind(this));script.inject(document.head);if($chk(this.options.abortAfter)&&!remaining)script.dispose.delay(this.options.abortAfter,script);if(remaining){(function(){this.triesRemaining[requestIndex]=remaining-1;if(script.getParent()&&remaining){dbug.log('removing script (%o) and retrying: try: %s, remaining: %s',requestIndex,remaining);script.dispose();this.request(url,requestIndex)}}).delay(this.options.timeout,this)}}.bind(this)).delay(dl);return this},makeUrl:function(url){var index;if(JsonP.requestors.contains(this)){index=JsonP.requestors.indexOf(this)}else{index=JsonP.requestors.push(this)-1;JsonP.requestors['request_'+index]=this}if(url){var separator=(url.test('\\?'))?'&':'?';var jurl=url+separator+this.options.callBackKey+"=JsonP.requestors.request_"+index+".handleResults";if(this.options.queryString)jurl+="&"+this.options.queryString;jurl+="&"+Hash.toQueryString(this.options.data)}else{var jurl=this.url}if($chk(this.options.globalFunction)){window[this.options.globalFunction]=function(r){JsonP.requestors[index].handleResults(r)}}return{url:jurl,index:index}},handleResults:function(data){dbug.log('jsonp received: ',data);this.fireEvent('onComplete',[data,this])}});JsonP.requestors=[];