window.onerror=function(){return true;}
document.observe('dom:loaded', function(){       
	monitorTicketStatus();
	searchByVenue();
	toggleFormFields();
	setupEventListingToggle(); 
	setupHighlights();
	setupCheckoutCountdown();
})     
Event.observe(window,'load', function(){
	// display calendar in sidebar
	if(Calendar && $('event_calendar')){         
		Calendar.setup({
			parentElement : 'event_calendar',
			selectHandler : searchByCalendar
		});
	}
	loadGMap();
})

function loadGMap(){
	var container = $('map_canvas');
	if (container && container.title) {
		var contentString = container.down('#infoWindow').innerHTML;
		var title = container.title.split(',').first();
		var lat = container.title.split(',')[1];
		var lng = container.title.split(',')[2];
		var myLatlng = new google.maps.LatLng(lat, lng);
		var myOptions = {
		  zoom: 16,
		  center: myLatlng,   
		  mapTypeId: google.maps.MapTypeId.ROADMAP,
		  disableDefaultUI: true
		};  
		var map = new google.maps.Map(container, myOptions);
		var marker = new google.maps.Marker({
			position: myLatlng, 
			map: map, 
			title: title
		}); 

		var infowindow = new google.maps.InfoWindow({
		    content: contentString
		});

		google.maps.event.addListener(marker, 'click', function() {
		  infowindow.open(map,marker);
		});   
		infowindow.open(map,marker);

	}

}

function monitorTicketStatus() {
	if($('ticketStatus')) {
		var cfcAsAjax = new jsobj();
		var msg = $('ticketStatus');
		new PeriodicalExecuter(function(pe) {
			var result = cfcAsAjax.checkTicket(session_generatingTicketFor,session_user_id);
			// display message
			if(result != ''){
				msg.update(result);
				if(!msg.visible()) msg.appear();
			}
			// make box clickable
			if(result.indexOf('now available') > 0){
				msg.morph('background:#EEFFEE; border-color:#99CC99; color:#336633;');
				msg.style.cursor = "pointer";
				msg.observe('click',function(e){
					window.location = '/users/manager/';
					e.stop();
				})
			}
			// done! - stop periodically updating 
		  if(result.indexOf('processing') <= 0) { 
		    pe.stop();
			}
		}, 2);
	}
}

function resizeAndCenterImage(img,maxWidth,maxHeight){
	var origW = img.width;
	var origH = img.height;
	if(img.width >= img.height) {
		img.height = maxHeight;
	} else {
		img.width = maxWidth;
	}
	img.style.marginLeft = "-" + Math.floor((maxWidth - img.width)/-2) + "px";
	img.style.marginTop = "-" + Math.floor((maxHeight - img.height)/-2) + "px";
}

function searchByCalendar(obj, date){      
	window.location = "/page/searchResults/?string=" + date;
}                           

function searchByVenue(){
	var menu = $('search_by_venue');
	if(menu){
		menu.observe('change',function(e){
			if(menu.value != ''){
				window.location = "/page/searchResults/?venue=" + menu.value.gsub(/[\.]/,'');
			}
		})
	}
}

function setupCheckoutCountdown(){
	var timer = $('timer');
	if(timer){
		var time = timer.down('strong');
		if(time){
			time.update("4:00");
			new PeriodicalExecuter(function(pe){
				var min = time.innerHTML.split(':')[0];
				var sec = time.innerHTML.split(':')[1];
				sec--;
				if(sec < 0){min--; sec = 59;}
				if(min < 0){
					pe.stop();       
					window.location = window.location.toString().replace(/(?:&)?step=([^&]+)?/g,'') + "&step=timeout";
				} else { time.update(min + ":" + (sec < 10 ? "0" : "") + sec); }
			}, 1)
		}
	}
}

function setupEventListingToggle(){
	var container = $('content');
	if(container) container = container.down('.listings');
	if(container){
		var listings = container.select('li');
		listings.each(function(li){
			var detail = li.down('div.detail');
      if(detail){
				detail.hide();
				li.detail = detail;
				li.observe('click', function(e){
					if(['A','INPUT','SELECT','OPTION'].indexOf(e.target.tagName) == -1){
						if(this.detail.visible()){
							Effect.BlindUp(this.detail, { duration: 0.2 });
						} else {
							Effect.BlindDown(this.detail, { duration: 0.2 });
							this.addClassName('hover'); 
						}
					}          
				})
				li.observe('mouseover', function(e){
					this.addClassName('hover') // adds "hover" capability to IE6
				})
				li.observe('mouseout', function(e){
					if(!this.detail.visible()){ this.removeClassName('hover'); }
				})
			}
		})
  }
	var container = $('content');
	if(container) container = container.down('.listings, .listing');
	if(container){
		var listings = container.select('li');
		listings.each(function(li){
			// setup Buy Now button to check for product options
			var form = li.down('form');
			if(form){
				form.observe('submit',function(e){
					var options = this.up('li').down('.price select');
					var alertmsg = this.down('div.orderbox span.proderror');
					if(options && options.value == ''){
						if(!alertmsg){
							var alertmsg = new Element('p').update( new Element('span',{'class': 'proderror'}).update('Please choose an option') );
							this.down('div.orderbox').insert(alertmsg);
							alert("Please choose an option");
						}
						Event.stop(e);
					}
				})
			}
		})
	}
}

function setupHighlights(){
	var div = $('highlights');
	if(div){
		var slots = div.select('li');
		var grouped = slots.inGroupsOf(6);
		var next = div.down('#next_highlights');
		var prev = div.down('#prev_highlights'); 
		div.index = 0;                   
		toggleHighlights(slots,grouped,div.index);
		next.observe('click',function(e){
			div.index++;
			if(div.index >= grouped.length){ div.index = 0 };
			toggleHighlights(slots,grouped,div.index);
			Event.stop(e);
		})
		prev.observe('click',function(e){  
			div.index--;
			if(div.index < 0){ div.index = grouped.length-1 }; 
			toggleHighlights(slots,grouped,div.index);
			Event.stop(e);
		})
		var maxWidth = div.select('li div.image').first().getWidth();
		var maxHeight = div.select('li div.image').first().getHeight();
		var images = div.select('li div.image img');
		images.each(function(img){ resizeAndCenterImage(img,maxWidth,maxHeight) })
	}
}

function toggleHighlights(eleArr,groups,index){    
	eleArr.invoke('fade', { duration: 0.2 });
	Effect.multiple(groups[index].compact(),Effect.Appear, { delay: 0.5 })
}                                                  

function toggleFormFields(){
	var fields = $$('input.default');
	fields.each(function(f){
		f.defaultVal = f.value;
		f.observe('focus', function(e){
			this.removeClassName('default');
			if(this.value == this.defaultVal) this.value = "";
		})
	})
}

