//Global Variables
var pages = [];
var curPage;
var blockMove = false;


var init = function(){
	setupCrossSlide();
	curPage = $("#homeContent");
	$("#navMarket").click(function(){showPage("market");});
	$("#marketSummary").click(function(){showPage("market");});
	$("#navHistory").click(function(){showPage("history");});
	$("#navLivestock").click(function(){showPage("livestock");});
	$("#livestockSummary").click(function(){showPage("livestock");});
	$("#navCraft").click(function(){showPage("craft");});
	$("#craftSummary").click(function(){showPage("craft");});
	$("#navFlea").click(function(){showPage("flea");});
	$("#wedSummary").click(function(){showPage("flea");});
	$("#sunSummary").click(function(){showPage("flea");});
	$("#navBanquet").click(function(){showPage("banquet");});
	$("#banquetSummary").click(function(){showPage("banquet");});
	$("#navEvents").click(function(){showPage("events");});
	$("#eventsSummary").click(function(){showPage("events");});
	$("#navContact").click(function(){showPage("contact");});
	$("#contactSummary").click(function(){showPage("contact");});
	$("#logoImage").click(function(){showPage("home");});
	
	$("#policyLink").click(function(){
		$("#craftStandholderPolicy").modal({
			maxWidth:700,
			opacity:60,
			maxHeight:600,
			minHeight:600
		});
	})
	$("#banquetRulesLink").click(function(){
		$("#banquetRules").modal({
			maxWidth:750,
			opacity:60,
			maxHeight:600,
			minHeight:535
		});
	})
	$("#contactContent").hide();
	loadEvents();
}

var loadEvents = function(){
	$.getJSON('data/events.json', function(data) {
		var newEventsHTML = "";
		var curYear = 0;
		eventList = data;
		if(!eventList){
			eventList = [];
		}
		if (eventList.length > 1){
			sortEvents();
		}

		var today = new Date();
		$.each(eventList, function(key, val) {
			var eventDate = new Date(val.year, val.month, val.day);
			eventDate.setDate(eventDate.getDate()+1);
			if(today < eventDate){
				var newItemHTML = buildEventHTML(key, val.month, val.day, val.year, val.start, val.end, val.title, val.description);
				if(curYear == 0 || curYear < val.year){
					newEventsHTML += '<div class="eventsYear">'+val.year+'</div>';
					curYear = val.year;
				}
				newEventsHTML += newItemHTML;
			}
		});

		$("#eventsListObject").html(newEventsHTML);
	});
}

var sortEvents = function(){
	eventList.sort(compareDates);
}

var compareDates = function(a,b){
	if(a.year != b.year){
		return (a.year - b.year);
	}
	else if (a.month != b.month){
		return (a.month - b.month);
	}
	else{
		return (a.day - b.day);
	}
}

var getDayOfWeek = function(day, month, year){
	var d=new Date(year,month,day);
	var weekday=new Array(7);
	weekday[0]="Sun";
	weekday[1]="Mon";
	weekday[2]="Tue";
	weekday[3]="Wed";
	weekday[4]="Thu";
	weekday[5]="Fri";
	weekday[6]="Sat";
	
	return weekday[d.getDay()];
}

var getEndDayOfWeek = function(day, month, year, numDays){
	var d=new Date(year,month,day);
	d.setDate(d.getDate()+numDays-1);
	var weekday=new Array(7);
	weekday[0]="Sun";
	weekday[1]="Mon";
	weekday[2]="Tue";
	weekday[3]="Wed";
	weekday[4]="Thu";
	weekday[5]="Fri";
	weekday[6]="Sat";
	return weekday[d.getDay()];
}

var getEndDay = function(day, month, year, numDays){
	var d=new Date(year,month,day);
	d.setDate(d.getDate()+numDays-1);
	return d.getDate();
}

var getMonthString = function(num){
	  switch(parseInt(num))
      {
        case 0:
          month="Jan";
          break;
        case 1:
          month="Feb";
          break;
        case 2:
          month="Mar";
          break;
        case 3:
          month="Apr";
          break;
        case 4:
          month="May";
          break;
        case 5:
          month="Jun";
          break;
        case 6:
          month="Jul";
          break;
        case 7:
          month="Aug";
          break;
        case 8:
          month="Sep";
          break;
        case 9:
          month="Oct";
          break;
        case 10:
          month="Nov";
          break;
        case 11:
          month="Dec";
          break;
        default:
          month="Invalid month";
      }
      return month;
}


var buildEventHTML = function(key, month, day, year, starts, ends, title, description){
	var items = [];
	var dayOfWeek = getDayOfWeek(day, month, year);
	var monthString = getMonthString(month);
	var numDays = starts.length;
	var dayStr = day;
	if(numDays > 1){
		var endDay = getEndDay(day, month, year, numDays);
		dayStr = dayStr+'-'+endDay;
		var endDayOfWeek = getEndDayOfWeek(day, month, year, numDays);
		dayOfWeek = dayOfWeek+'-'+endDayOfWeek;
	}
	items.push('<li id="event_' + key + '" class="eventItem">');
	items.push('<div class="date">'+monthString +' '+dayStr+'<br /><span class="day">'+dayOfWeek+'</span></div>');
	items.push('<div class="event_details">');
	items.push('<div class="title">'+title +'</div>');
	for(i=0; i< numDays; i++){
		var start = starts[i];
		var end = ends[i];
		var dayOfWeekStr = "";
		if(numDays > 1){
			dayOfWeekStr += '<span class="dayOfWeekStr">'+getEndDayOfWeek(day, month, year, i+1)+':  </span>';
		}
		if(end != "end_def"){
			items.push('<div class="time">'+dayOfWeekStr+start +' - '+ end+'</div>');
		}
		else{
			items.push('<div class="time">'+dayOfWeekStr+start+'</div>');
		}
	}
	items.push('<div class="text">'+ description+'</div>');
	items.push('</div>'); 
	items.push('</li>');
	var html = items.join('');
	return html;
}

var showPage = function(page){
	if(!blockMove){
		var newPage = $("#"+page+"Content");
		if(!newPage.is(curPage)){
			blockMove = true;
			curPage.fadeTo(500,0,function(){
				newPage.fadeTo(500,1,function(){
					if(page == 'contact'){
						if($("#gmap").size() == 0){
							$("#mapContainer").html('<iframe id="gmap" width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Leesport+Farmers+Market,+Gernants+Church+Road,+Leesport,+PA&amp;aq=1&amp;sll=40.454295,-75.969729&amp;sspn=0.019169,0.03459&amp;vpsrc=6&amp;ie=UTF8&amp;hq=Leesport+Farmers+Market,&amp;hnear=Gernants+Church+Rd,+Leesport,+Pennsylvania&amp;t=m&amp;ll=40.455536,-75.969257&amp;spn=0.019168,0.03459&amp;output=embed"></iframe>').css('display','block');
						}
					}	
				});
				curPage.hide();
				curPage = newPage;
				blockMove = false;
			})

		}
	}
}

var setupCrossSlide = function(){
	$('#frameImg1').crossSlide({
	  sleep: 4,
	  fade: 1
	}, [
	  { src: 'images/photos/preview046.jpg' },
	  { src: 'images/photos/preview001.jpg' },
	  { src: 'images/photos/preview002.jpg' },
	  { src: 'images/photos/preview003.jpg' },
	  { src: 'images/photos/preview004.jpg' },
	  { src: 'images/photos/preview005.jpg' },
	  { src: 'images/photos/preview006.jpg' },
	  { src: 'images/photos/preview007.jpg' },
	  { src: 'images/photos/preview008.jpg' },
	  { src: 'images/photos/preview009.jpg' },
	  { src: 'images/photos/preview010.jpg' },
	  { src: 'images/photos/preview011.jpg' },
	  { src: 'images/photos/preview012.jpg' },
	  { src: 'images/photos/preview014.jpg' },
	  { src: 'images/photos/preview015.jpg' },
	  { src: 'images/photos/preview016.jpg' }
	]);
	
	$('#frameImg2').crossSlide({
	  sleep: 4,
	  fade: 1
	}, [
	  { src: 'images/photos/preview023.jpg' },
	  { src: 'images/photos/preview013.jpg' },
	  { src: 'images/photos/preview021.jpg' },
	  { src: 'images/photos/preview022.jpg' },
	  { src: 'images/photos/preview024.jpg' },
	  { src: 'images/photos/preview025.jpg' },
	  { src: 'images/photos/preview026.jpg' },
	  { src: 'images/photos/preview027.jpg' },
	  { src: 'images/photos/preview028.jpg' },
	  { src: 'images/photos/preview029.jpg' },
	  { src: 'images/photos/preview030.jpg' },
	  { src: 'images/photos/preview032.jpg' }
	]);

	$('#frameImg3').crossSlide({
	  sleep: 4,
	  fade: 1
	}, [
	  { src: 'images/photos/preview036.jpg' },
	  { src: 'images/photos/preview033.jpg' },
	  { src: 'images/photos/preview034.jpg' },
	  { src: 'images/photos/preview035.jpg' },
	  { src: 'images/photos/preview037.jpg' },
	  { src: 'images/photos/preview038.jpg' },
	  { src: 'images/photos/preview039.jpg' },
	  { src: 'images/photos/preview040.jpg' },
	  { src: 'images/photos/preview041.jpg' },
	  { src: 'images/photos/preview042.jpg' },
	  { src: 'images/photos/preview043.jpg' },
	  { src: 'images/photos/preview044.jpg' },
	  { src: 'images/photos/preview045.jpg' },
	  { src: 'images/photos/preview047.jpg' },
	  { src: 'images/photos/preview048.jpg' }
	]);
	
}


$(document).ready(function() {
	init();
});
