//tmp setup call
var slt=new Object();
(function($){
	
	var payPalIds={
		Drifting:'F8X62TT7A62V6',
		DriftingPractice:'LWYEVBZ2TN5SY',
		DriftingBoth:'VQUEHD22NXF7E',
		DragRacing:'47JU3QR6ABUYW',
		CarShow:'CTERWU46G9VMS'
	}
	
	
	function onload(){
		$('.slt-btn').sltBtn();
		window.ajaxNav.setup({
			pagePath:null,//'/',
			trans:'slide-right',
			getExternal:'/source/apps/get_external.cfm?url='
		});
		addBtnListeners();
		ajaxNav.load('blog@social-content',null,null,false);
		ajaxNav.load('event-info@event-content',null,null,false);
		ajaxNav.addContentLoadListener(onContentLoad);
		
		setInterval(checkSponsorTray,9000);
	}
	
	function checkSponsorTray(){
		if($('.sponsors1').length)
			ajaxNav.load('sponsors2@mid-tray-content',null,null,false);
		else if($('.sponsors2').length)
			ajaxNav.load('sponsors@mid-tray-content',null,null,false);
	}
	
	function onContentLoad(element){
		element.find('.slt-btn').sltBtn();
	}
	
	function initContactForm(){
		$('.contact-form').validate({
			rules:{
				name:'required',
				email:{
					required:true,
					email:true
				},
				subject:'required',
				message:'required'
			}
		});
	}
	slt.initContactForm=initContactForm;
	
	function addBtnListeners(){
		$('.social-down-btn').click(function(){scrollWSecUp('#social-content')});
		$('.social-up-btn').click(function(){scrollWSecDown('#social-content')});
		$('.event-down-btn').click(function(){scrollWSecUp('#event-content')});
		$('.event-up-btn').click(function(){scrollWSecDown('#event-content')});
	}
	function scrollWSecUp(host){
		var page=$(host+' .social-page');
		var margin=Number(page.css('margin-top')?page.css('margin-top').replace('px',''):0);
		if((page.queue() && page.queue().length) || page.outerHeight()+margin<=359)
			return;
		page.animate({"margin-top":margin-300},{duration:500});
	}
	function scrollWSecDown(host){
		var page=$(host+' .social-page');
		var margin=Number(page.css('margin-top')?page.css('margin-top').replace('px',''):0);
		if((page.queue() && page.queue().length) || margin>=0)
			return;
		page.animate({"margin-top":margin+300},{duration:500});
	}
	
	function initRegForm(){
		$('.comp').change(onRegTypeChange);
		$('#comp-type').change(onCompTypeChange);
		$('.reg-form').validate({
			rules:{
				email:{
					email:true
				}
			}
		});
		$('.reg-form').submit(storeRegInfo);
	}
	slt.initRegForm=initRegForm;
	
	var regInfoStored=false;
	function storeRegInfo(){
		if(regInfoStored)
			return true;
		
		$.ajax({
			url:'/bin/store-reg-info.php?'+getRegData(),
			success:function(id){
				regDataId=id;
				$('#notify_url').val('http://streetlifetour.com/bin/send-reg.php?regid='+id);
				regInfoStored=true;
				$('.reg-form').submit();
			},
			error:function(){
				alert('Unable to store registration information please try agin later');
			}
		});
		
		return false;
	}
	function onCompTypeChange(){
		var type=this.value;
		$('.comp').hide().attr('disabled','disabled').removeAttr('name');
		$('.'+type).show().removeAttr('disabled').attr('name','comp');
		$('.comp').change();
	}
	function onRegTypeChange(){
		
		$('.reg-form').removeClass('comp-auto comp-classic comp-cycle comp-drift');
		var opt=$('.comp:enabled :selected');
		if(opt.length)
			$('.reg-form').addClass(opt[0].className);
		
		var comp=$('.comp:enabled').val();
		var i=comp.indexOf('-');
		if(i>-1)
			comp=comp.substr(0,i);
		
		
		var payPalId=payPalIds[comp];
		if(!payPalId)
			return;
		
		
		$('#hosted_button_id').val(payPalId);
		
	}
	
	function getRegData(){
		var params=new Array();
		$('.reg-form input, .reg-form select, .reg-form textarea').each(function(){
			var inp=$(this);
			var name=inp.attr('name');
			if(!name || name==='cmd' || name==='hosted_button_id' || name==='notify_url')
				return;
			params.push(encodeURI(name)+'='+encodeURI(inp.val()));
		});
		return params.join('&');
	}
	
	var mapsLoaded=false;
	var mapsLoading=false;
	var map=null;
	var mapCallback=null;
	var doAddLodgingToMap=false;
	var selectedLocation=null;
	var directionsDisplay=null;
	var directionsService=null;
	var mapElem=null;
	var mapIcons=new Array();
	var sltIconAdded=false;
	var locations={
		slt:{
			position:[39.70279499999999,-83.97384900000003],
			_isLodging:false,
			icon:'/images/map/slt.png'
		},
		"Best Western - Xenia":{
			position:[39.68374499999999, -83.94170400000002],
			_isLodging:true,
			_address:'600 Little Main St, Xenia',
			icon:'/images/map/best-western.png'
		},
		"EconoLodge":{
			position:[39.706741, -84.01760890000003],
			_isLodging:true,
			_address:'2220 US Route 35, Beavercreek',
			icon:'/images/map/econo-lodge.png'
		},
		"Holiday Inn - Xenia":{
			position:[39.6848256, -83.9343184],
			_isLodging:true,
			_address:'300 Xenia Towne Square',
			icon:'/images/map/holiday-inn.png'
		},
		"Knights Inn":{
			position:[39.683916, -83.94555500000001],
			_isLodging:true,
			_address:'38 S. Allison Ave, Xenia',
			icon:'/images/map/knights-inn.png'
		},
		"Hampton Inn":{
			position:[39.777198, -84.05460499999998],
			_isLodging:true,
			_address:'2550 Paramount Pl. Fairborn',
			icon:'/images/map/hampton-inn.png'
		},
		"Red Roof Inn":{
			position:[39.77477409999999, -84.0594198],
			_isLodging:true,
			_address:'Interstate 675 at Fairfield Rd.',
			icon:'/images/map/red-roof-inn.png'
		},
		"Studio Plus":{
			position:[39.776277, -84.06720000000001],
			_isLodging:true,
			_address:'3131 Presidential Dr, Fairborn',
			icon:'/images/map/studio-plus.png'
		},
		"Holiday Inn - 675":{
			position:[39.7769632, -84.05861470000002],
			_isLodging:true,
			_address:'2800 Presidential Dr, Fairborn',
			icon:'/images/map/holiday-inn.png'
		},
		"Comfort Inn":{
			position:[39.830036, -84.02235300000001],
			_isLodging:true,
			_address:'616 North Broad, Fairborn',
			icon:'/images/map/comfort-inn.png'
		},
		"Holiday Inn-WPAFB":{
			position:[39.830596, -84.02094799999998],
			_isLodging:true,
			_address:'800 North Broad, Fairborn',
			icon:'/images/map/holiday-inn.png'
		},
		"Day's Inn":{
			position:[39.795884, -84.12965500000001],
			_isLodging:true,
			_address:'1891 Harshman Rd, Riverside',
			icon:'/images/map/days-inn.png'
		},
		"Comfort Inn - I70":{
			position:[39.866734, -84.10276599999997],
			_isLodging:true,
			_address:'7907 Brandt Pike, Huber Heights',
			icon:'/images/map/comfort-inn.png'
		}
		
	}
	function formatLocations(){
		for(var e in locations){
			locations[e].map=map;
			if(locations[e].position[0]){
				locations[e].position=new google.maps.LatLng(locations[e].position[0],locations[e].position[1]);
			}
		}
		fsddfsdf=locations
	}
	function loadMaps(callback){
		if(mapsLoading)
			return;
		mapsLoading=true;
		mapCallback=callback;
		var script = document.createElement("script");
		script.type = "text/javascript";
		script.src = "http://maps.googleapis.com/maps/api/js?sensor=false&callback=sltMapsCallback";
		document.body.appendChild(script);
	}
	function mapsCallback(){
		mapsLoading=false;
		mapsLoaded=true;
		
		if(mapCallback)
			mapCallback();
	}
	window.sltMapsCallback=mapsCallback;
	function insertMap(elem,zoomLevel){
		if(!mapsLoaded){
			loadMaps(function(){insertMap(elem)});
			return;
		}
		var latlng=new google.maps.LatLng(locations.slt.position[0],locations.slt.position[1]);
		var opts={
			zoom:zoomLevel?zoomLevel:8,
			center:latlng,
			mapTypeId:google.maps.MapTypeId.ROADMAP
		}
		if(map){
			$(elem).replaceWith(mapElem);
		}else{
			mapElem=$(elem);
			map=new google.maps.Map($(elem)[0],opts);
			directionsDisplay = new google.maps.DirectionsRenderer();
			directionsService = new google.maps.DirectionsService();
			directionsDisplay.setMap(map);
		}
		doAddLodgingToMap=false;
		formatLocations();
		addSltToMap();
		if(doAddLodgingToMap)
			addLodgingToMap();
	}
	slt.insertMap=insertMap;
	function addSltToMap(){
		if(sltIconAdded)
			return;
		sltIconAdded=true;
		new google.maps.Marker(locations.slt);
	}
	slt.addSltToMap=addSltToMap;
	function addLodgingToMap(){
		if(!mapsLoaded || mapsLoading){
			doAddLodgingToMap=true;
			return;
		}
		for(var e in locations){
			if(locations[e]._isLodging){
				(function(){
					var marker=new google.maps.Marker(locations[e]);
					mapIcons.push(marker);
					var name=e;
					google.maps.event.addListener(marker,'click',function(){
						setDirectionsTo(name);
					});
				})();
			}
		}
	}
	slt.addLodgingToMap=addLodgingToMap;
	
	function setDirectionsTo(name){
		$('.lodging-info').html('<h3>'+name+'</h3><p>'+locations[name]._address+'</p>');
		selectedLocation=name;
	}
	
	function getDirections(name){
		if(!name && !selectedLocation){
			$('.lodging-info').html('<h3>Select a lodging locations</h3>');
			return;
		}
		$('#directionsPanel').html('');
		directionsDisplay.setPanel($('#directionsPanel')[0]);
		var request = {
			origin:$('.address-inp').val()+', '+$('.city-inp').val()+', '+$('.state-inp').val(),
			destination:locations[name?name:selectedLocation].position,
			travelMode:google.maps.TravelMode.DRIVING
		}
		directionsService.route(request,function(result,status) {
			if(status == google.maps.DirectionsStatus.OK){
				directionsDisplay.setDirections(result);
			}
		});
	}
	slt.getDirections=getDirections;
	
	function getDirectionsToSlt(){
		$('#directionsPanel').html('');
		directionsDisplay.setPanel($('#directionsPanel')[0]);
		var request = {
			origin:$('.address-inp').val()+', '+$('.city-inp').val()+', '+$('.state-inp').val(),
			destination:locations.slt.position,
			travelMode:google.maps.TravelMode.DRIVING
		}
		directionsService.route(request,function(result,status) {
			if(status == google.maps.DirectionsStatus.OK){
				directionsDisplay.setDirections(result);
			}
		});
	}
	slt.getDirectionsToSlt=getDirectionsToSlt;
	
	function emailDirections(){
		//todo
	}
	slt.emailDirections=emailDirections;
	
	function removeMap(){
		$('#directionsPanel').html('');
		directionsDisplay.setMap(null);
		directionsDisplay = new google.maps.DirectionsRenderer();
		directionsDisplay.setMap(map);
		for(var i=0,l=mapIcons.length;i<l;i++)
			mapIcons[i].setMap(null);
		mapIcons=new Array();
		mapElem.detach();
	}
	slt.removeMap=removeMap;
	
	
	
	var galleryLoaded=false;
	var galleryLoading=false;
	var gallerys=null;
	var galleryPage=0;
	var galleryPageCount=0;
	var galleryImageCount=0;
	var gallery=null;
	var galleryImagesPerPage=12;
	var pagePhotos=null;
	var galleryPageRequest=null;
	var defaultGallery='Car Show';
	var defaultGalleryYear='2011';
	var galleryYear;
	
	function setDefaultGallery(){
		galleryYear=defaultGalleryYear;
		if(galleryLoaded)
			setGallery(defaultGallery+' - '+defaultGalleryYear);
		else if(!galleryLoading)
			loadGallery();
		
	}
	slt.setDefaultGallery=setDefaultGallery; 
	
	function loadGallery(){
		if(galleryLoaded)
			return;
		galleryLoading=true;
		$.ajax({
			url:'/bin/flickr-api.php?method=flickr.photosets.getList',
			dataType:'xml',
			success:function(xml){
				xml=$(xml);
				gallerys=xml.find('photoset');
				
				setGallery(defaultGallery+' - '+defaultGalleryYear);//todo - set gallery dynamically
			}
		});
		
	}
	slt.loadGallery=loadGallery;
	
	var lastGalleryName=null;
	function setGallery(name,useCurrentPage){
		name=$.trim(name);
		if(gallery && $.trim(gallery.find('title').text())===name)
			return;
		unsetGallery();
		var galleryFound=false;
		gallerys.each(function(){
			var g=$(this);
			if($.trim(g.find('title').text())===name){
				gallery=g;
				galleryFound=true
				return false;
			}
		});
		if(!galleryFound){
			alert('gallery not found');//todo - log instead of alert
			return;
		}
		$('.gallery-title').html(name.replace('-','<br/>'));
		galleryImageCount=Number(gallery.attr('photos'));
		galleryPageCount=Math.ceil(galleryImageCount/galleryImagesPerPage);
		
		setPagesLinks();
		var lastGalleryPage=galleryPage;
		galleryPage=0;
		setGalleryPage(useCurrentPage?lastGalleryPage:1);
		lastGalleryName=name;
	}
	
	function setPagesLinks(){
		
	}
	
	function unsetGallery(){
		
	}
	
	function setGalleryPage(pageNum){
		if(pageNum===galleryPage)
			return;
		galleryPage=pageNum;
		if(galleryPageRequest)
			galleryPageRequest.abort();
		galleryPageRequest=$.ajax({
			url:'/bin/flickr-api.php?method=flickr.photosets.getPhotos&per_page='+galleryImagesPerPage+'&page='+galleryPage+'&extras=url_m,url_s'+'&photoset_id='+gallery.attr('id'),
			dataType:'xml',
			success:function(xml){
				galleryPageRequest=null;
				pagePhotos=$(xml).find('photo');
				renderPageImages();
			}
		});
	}
	slt.setGalleryPage=setGalleryPage;
	
	function renderPageImages(){
		var html='<span class="gallery-images-coming-in">';
		var i=1;
		pagePhotos.each(function(){
			var photo=$(this);
			html+=
				'<span class="gallery-image">'+
					'<span class="gallery-image-container">'+
						'<img src="'+photo.attr('url_s')+'" style="height:100px;width:137px"/>'+
					'</span>'+
					'<span class="gallery-image-overlay" onclick="slt.setGalleryPhoto('+((galleryPage-1)*galleryImagesPerPage+i)+')" />'+
				'</span>';
			i++;
		});
		html+=getPagation()+'</span>';
		$('.galler-stage').html(html);
	}
	
	function getPagation(){
		if(galleryPageCount<2)
			return '';
		var html='<div class="center">';
		for(var i=1;i<=galleryPageCount;i++)
			html+='<span onclick="slt.setGalleryPage('+i+')" class="gallery-page-link'+(i===galleryPage?' gallery-page-link-current':'')+'">'+i+'</span>';
		return html+'</div>';
	}
	
	function setGalleryYear(year){
		if(year==galleryYear)
			return;
		galleryYear=year;
		setGallery(defaultGallery+' - '+year);
	}
	slt.setGalleryYear=setGalleryYear;
	
	function setGalleryByType(type){
		setGallery(type+' - '+galleryYear)
	}
	slt.setGalleryByType=setGalleryByType;
	
	
	function setGalleryPhoto(num){
		if(galleryPageRequest)
			galleryPageRequest.abort();
		galleryPageRequest=$.ajax({
			url:'/bin/flickr-api.php?method=flickr.photosets.getPhotos&per_page=1&page='+num+'&extras=url_m'+'&photoset_id='+gallery.attr('id'),
			dataType:'xml',
			success:function(xml){
				var set=$(xml);
				xml=set.find('photo');
				var html=
					'<div class="right"><a href="javascript:slt.showCurrentGallery()"><img class="win-top-right" src="/images/close.png"/></a></div>'+
					'<img class="gallery-full-image" src="'+xml.attr('url_m')+'" />'+
					'<div class="gallery-photo-btns"><a href="javascript:slt.setGalleryPhoto('+(num>1?num-1:set.attr('total'))+')"><img src="/images/previous-btn.png" class="middle" /></a> <span class="class="middle">'+num+'</spam> <a href="javascript:slt.setGalleryPhoto('+(num>=Number(set.attr('total'))?1:num+1)+')"><img class="middle" src="/images/next-btn.png" /></a></div>';
				$('.galler-stage').html(html);
				
			}
		});
	}
	slt.setGalleryPhoto=setGalleryPhoto;
	
	function showCurrentGallery(){
		gallery=null;
		setGallery(lastGalleryName,true);
	}
	slt.showCurrentGallery=showCurrentGallery;
	
	
	
	
	/**
	*jQuery plugin - SLT button plugin
	*/
	$.fn.sltBtn=function(){
		this.each(function(){
			var $this=$(this);
			if($this.data('sltBtn'))
				return;
			var data={text:$this.html().split(/\W/).join('_').toLowerCase()};
			$this	.data('sltBtn',data)
					.addClass('slt-btn')
					.html('<table><tbody><tr><td class="slt-btn-left">&nbsp;</td><td class="slt-btn-center">'+
					'<span><img src="/images/labels/'+data.text+'.png"/></span>'+
					'</td><td class="slt-btn-right">&nbsp;</td></tr></tbody></table>');
			
		});
	}
	
	$(onload);
	
})(jQuery);
