$(document).ready(function(){
	_explore_machine();
	_input_prompt();
	_gmaps();
	_owoe();
	$("#e_datestart, #e_dateend").datepicker({ dateFormat: 'yy-mm-dd' });
});

var map;
var venue_list;
var overlay;

function _owoe(){
	var page_elements = $('#page-overlay, #pop-window');
	$('.owoe-expand').bind('click', function(){
		page_elements.fadeIn(500);
		return false;
	});
	
	$('.close-window a').live('click', function(){
		page_elements.fadeOut(500);
		return false;
	});
}

function plot_venues(postcode, venue_id){

	var postcode = postcode;
	var venue_id = venue_id;
	var venue_point;
	var localSearch = new GlocalSearch(); 

	localSearch.setSearchCompleteCallback(null, function(){
		if(localSearch.results[0]){
			var resultLat = parseFloat(localSearch.results[0].lat);
			var resultLng = parseFloat(localSearch.results[0].lng);

			var point = new GLatLng(resultLat, resultLng);

			var map_icon = new GIcon(G_DEFAULT_ICON);
			map_icon.iconSize = new GSize(28, 28);
			map_icon.image = "http://www.exploreculture.org.uk/tpl/img/icons/map-marker.png";
			map_icon.shadow = "";

			venue_point = new GMarker(point, { icon: map_icon });

			map.addOverlay(venue_point);

			GEvent.addListener(venue_point, 'click', function(){
				var html_id = 'venue-'+venue_id;

				if(venue_list[venue_id]['events']){
					var html = '<div class="venue-popup" id="'+html_id+'"><ul class="event-list">';
					for(event in venue_list[venue_id]['events']){
						var current = venue_list[venue_id]['events'][event];
						html+='<li><a href="'+current['link']+'">'+current['title']+'</a><br />'+current['dates']+'</li>';
					}
					html+='</ul><p>at <a href="'+venue_list[venue_id]['link']+'">'+venue_list[venue_id]['name']+'</a></p>';
					html+='<div class="popup-bottom"></div></div>';
				}else{
					var html = '<div class="venue-popup venue-single" id="'+html_id+'">';
					html+='<p><big><a href="'+venue_list[venue_id]['link']+'">'+venue_list[venue_id]['name']+'</a></big></p>';
					html+='<p>'+venue_list[venue_id]['address']+'</p>';
					html+='<p class="view"><a href="'+venue_list[venue_id]['link']+'">More information</a></p>';
					html+='<div class="popup-bottom"></div></div>';
				}
				venue_point.openExtInfoWindow(
					map,
					"simple_example_window",
					html,
					{beakOffset: -20}
				);

				return false;
			});
		}
	});

	localSearch.execute(postcode + ", UK");

}

function _gmaps(){
	$('.by-location .edit, .venue-by-location .edit, .machine-location .edit').live('click', function(){
		$(this).closest('form').removeClass('selected');
		$(this).closest('form').addClass('expanded');
		return false;
	});

	$('.by-location .expand, .venue-by-location .expand, .machine-location .expand').live('click', function(){
		$(this).closest('form').addClass('expanded');
		return false;
	});

	var map_canvas = document.getElementById("map_canvas");
	if(map_canvas){
		venue_list = Array();
		
		if($('input[name=event_title]').length){
			$('input[name=venue_postcode]').each(function(){
				var venue_postcode = $(this).val();
				var venue_id = $(this).parent().find('input[name=venue_id]').val();
				var venue_name = $(this).parent().find('input[name=venue_name]').val();
				var venue_link = $(this).parent().find('input[name=venue_link]').val();
				var event_title = $(this).parent().find('input[name=event_title]').val();
				var event_dates = $(this).parent().find('input[name=event_dates]').val();
				var event_link = $(this).parent().find('input[name=event_link]').val();
				if(venue_postcode){
					if(!venue_list[venue_id]){
						venue_list[venue_id] = Array();
						venue_list[venue_id]['events'] = Array();
					}
					var index = venue_list[venue_id]['events']?venue_list[venue_id]['events'].length:0;
					venue_list[venue_id]['postcode'] = venue_postcode;
					venue_list[venue_id]['name'] = venue_name;
					venue_list[venue_id]['link'] = venue_link;
	
					venue_list[venue_id]['events'][index]=Array();
					venue_list[venue_id]['events'][index]['title']=event_title;
					venue_list[venue_id]['events'][index]['dates']=event_dates;
					venue_list[venue_id]['events'][index]['link']=event_link;
				}
			});
		}else if($('input[name=venue_name]').length){
			$('input[name=venue_postcode]').each(function(){
				var venue_postcode = $(this).val();
				var venue_id = $(this).parent().find('input[name=venue_id]').val();
				var venue_name = $(this).parent().find('input[name=venue_name]').val();
				var venue_address = $(this).parent().find('input[name=venue_address]').val();
				var venue_link = $(this).parent().find('input[name=venue_link]').val();
				if(venue_postcode){
					if(!venue_list[venue_id]){
						venue_list[venue_id] = Array();
					}
					venue_list[venue_id]['postcode'] = venue_postcode;
					venue_list[venue_id]['name'] = venue_name;
					venue_list[venue_id]['address'] = venue_address;
					venue_list[venue_id]['link'] = venue_link;
				}
			});
		}
        map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(51.739573, 0.496101), 10);
		map.setUIToDefault();

		for(venue_id in venue_list){
			var postcode_func = new plot_venues(venue_list[venue_id]['postcode'], venue_id);
		}

	}
}

function _explore_machine(){
	$('ul#explore-machine a').draggable({ axis: 'x', containment: 'parent', stop: _stop });
	$('ul#explore-machine a').each(function(){
		var track_width = $(this.parentNode).innerWidth();
		var val = $(this.parentNode).find('input').val();
		var progress = Math.ceil((track_width/100)*val);
		$(this).css('left', progress);

	});
	function _stop(){
		var token_progress = parseInt($(this).css('left'));
		var track_width = $(this.parentNode).innerWidth();
		var progress = Math.ceil((token_progress/track_width)*100);
		$(this.parentNode).find('input').val(progress>0?progress+3:0);
	}
	$('ul#explore-machine a').click(function(){ return false; });
}

function _input_prompt(){
	var field_settings = Array();
	var input_fields = $('textarea.prompt, input.prompt');
	var select_fields = $('select.prompt');
	for(var f=0; f<input_fields.length; f++){
		if($(input_fields[f]).attr('id')){
			field_settings[$(input_fields[f]).attr('id')] = $(input_fields[f]).val();
		}
	}

	$(input_fields).focus(function(){
		if($(this).attr('id')){
			if(field_settings[$(this).attr('id')] == $(this).val()){
				$(this).val('');
				$(this).removeClass('inactive');
			}
		}
	});

	$(input_fields).blur(function(){
		if($(this).attr('id')){
			if($(this).val() == ''){
				$(this).addClass('inactive');
				$(this).val(field_settings[$(this).attr('id')]);
			}
		}
	});

	$(select_fields).change(function(){
		if($(this).val()==0){
			$(this).addClass('inactive');
		}else{
			$(this).removeClass('inactive');
		}
	});

}
