
var eventsData;
var g_calendarMap;
 var g_lastPageNo;
 var startDate;
 var endDate;
 var searchType; 
 
 /*
  * called on page  Load 
  */
function getPaginatedEvents( flow){
	eventsData=[];
	YAHOO.util.Dom.get("eventDisplayType").value='';
	if(flow==null){
		YAHOO.util.Dom.get("direction").value = parseInt("1");
		YAHOO.util.Dom.get("pageNo").value = parseInt("0");
	}else {
		  var pageVal=YAHOO.util.Dom.get("pageNo").value;
		  var currentPage=parseInt(pageVal);
		  var pageNo;
		  if(flow=='-1')
			  pageNo=currentPage-1;
		  else
			  pageNo=currentPage+1;
		  if(pageNo<0 )
			  pageNo=0;
		  YAHOO.util.Dom.get("pageNo").value=pageNo;
		  
		  //alert('new page='+pageNo);
	}
	var sUrl=g_sUrl+'doPaginatedEvents.html?&pageNo='+pageNo+"&siteId="+YAHOO.util.Dom.get("siteId").value;	
	var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
	var f=function(){ajaxIndicator(transaction, YAHOO.util.Dom.get('eventWrapper'));};
	var t=setTimeout(f,1);
}

/*
 * called from  Search by Location drop down
 */
function getLocationEvents( e){
	eventsData=[];
	var sUrl;
	var selectObj;
	if (!e) var e = window.event; 
	
	if (e.target) {
		selectObj = e.target;
	} else if (e.srcElement) {
		selectObj = e.srcElement;
	}	
	//pageNavButtons hide?
	YAHOO.util.Dom.get("eventDisplayType").value='';
	var state=selectObj.options[selectObj.selectedIndex].value;
	
	sUrl=g_sUrl+'doLocationEvents.html?&selectedLocation='+state+"&siteId="+YAHOO.util.Dom.get("siteId").value;	
	var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
	var f=function(){ajaxIndicator(transaction, YAHOO.util.Dom.get('eventWrapper'));};
	var t=setTimeout(f,1);
}
/*
Called from PREV and NEXT button on events module. Makes AJAX call to get fixed # of events
 Accepts 1 input param- direction. +1 direction indicates forward traverse
 -1  direction indicates backward traverse. Set pageNo based on direction--> passes on to getPaginatedEvents()
*/
function getEventsByDate(selectedDate){
	eventCalendar.hide();
	var sUrl=g_sUrl+'doDateEvents.html?&selectedDate='+selectedDate+"&siteId="+YAHOO.util.Dom.get("siteId").value;
	//alert('getEventsByDate'+sUrl);
	YAHOO.util.Dom.get("eventDisplayType").value='';
	var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
	var f=function(){ajaxIndicator(transaction, YAHOO.util.Dom.get('eventWrapper'));};
	var t=setTimeout(f,1);
}

function getAllEvents(){
	var sUrl=g_sUrl+'doAllEvents.html'+"?&siteId="+YAHOO.util.Dom.get("siteId").value;
	YAHOO.util.Dom.get("eventDisplayType").value='all';
	var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback, null);
	var f=function(){ajaxIndicator(transaction, YAHOO.util.Dom.get('eventWrapper'));};
	var t=setTimeout(f,1);
}


var callback =
{
  success: function(o) {
   
  //alert('ajax works');

try{
	hideSpinnerDialog();
	 var display='';
	 //clear out old data items
	 clearData('eventListLeft','eventListRight', 'allEventItemList');
	 var jsonData = YAHOO.lang.JSON.parse(o.responseText);
	 eventsData=jsonData.paginatedevents;
	  
	 var searchType='';
	 if(eventsData!=null) {
	 	searchType='pagination';
	 }
	 if(eventsData==null)
		 eventsData=jsonData.allevents;
	 if(eventsData==null)
		 eventsData=jsonData.locationevents;
	 if(eventsData==null)	 
		 eventsData=jsonData.dateevents;
	 
	// alert('eventsData'+eventsData.length+'eventDisplayType='+YAHOO.util.Dom.get("eventDisplayType").value);
	 //show/hide eventWrapper/allEventWrapper depending upon eventDisplayType
	 if(YAHOO.util.Dom.get("eventDisplayType").value=='all'){
		 YAHOO.util.Dom.setStyle("allEventWrapper",'display','block');
		 YAHOO.util.Dom.setStyle("eventWrapper",'display','none');
		 initEventBodyScrollPane();
		 populateAllEvents(eventsData);
	 } else {
		 YAHOO.util.Dom.setStyle("eventWrapper",'display','block');
		 YAHOO.util.Dom.setStyle("allEventWrapper",'display','none');
		//traverse events and create div elements in yelp-events.jsp
		 populatePaginatedEvents(eventsData);
		
		 if(searchType=='pagination') {
			 populatePaginatedStartAndEndDates(eventsData);
		 }else {
			 	//hide 
			 YAHOO.util.Dom.setStyle("pageNavButtons",'display','none');
			 
		 }
		 
	 }
 }
catch(e){
	//alert('error in parsing json----'+e.message);		
}},
  failure: function(o) {
  	hideSpinnerDialog();
	
    //console.debug('callback in events ajax fails: status'+o.status+" status text"+o.statusText);	
  
	}
  
} //callback ends
/*
 * called on page(yelp-events.jsp) load for page 0
 */
function initiateEventAjax(){
//	alert('events.js--initiateEventAjax..g_eventType'+ g_eventType+' site name'+YAHOO.util.Dom.get("siteId").value);
	if(g_eventType !=null && g_eventType =='single'){
		var sUrl=g_sUrl+'doSingleEventModule.html'+"?&siteId="+YAHOO.util.Dom.get("siteId").value;
		showSpinnerDialog(YAHOO.util.Dom.get('eventWrapper'));
		var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, singleEventCallback, null);
		//var f=function(){ajaxIndicator(transaction, YAHOO.util.Dom.get('eventWrapper'));};
		//var t=setTimeout(f,1);
	} else {
			// multi events
		YAHOO.util.Dom.get("eventDisplayType").value='';
		eventsData=[];
		startDate=	 '';
		endDate='';
			
		//var sUrl=g_sUrl+'doPaginatedEvents.html';
		var sUrl=g_sUrl+'doInitiateEventModule.html'+"?&siteId="+YAHOO.util.Dom.get("siteId").value;
		
		var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl, calendarMapCallback, null);
	}
}
var singleEventCallback={
		success: function(o) {
		hideSpinnerDialog();
		var jsonData = YAHOO.lang.JSON.parse(o.responseText);
		populateYelpRatingItems(jsonData.singleEvent );
		// populate google map
		loadGoogleMap(jsonData.singleEvent==null? null : jsonData.singleEvent.merchants,"map_canvas");
	},
	failure: function(o)  {
		hideSpinnerDialog();
		//console.debug('calendarMapCallback fail');
		//alert('singleEventCallback fail');
	}
};

var calendarMapCallback={
		
		success: function(o) {
		var jsonData = YAHOO.lang.JSON.parse(o.responseText);
		g_calendarMap=jsonData.eventMonthDatesMap;
		//alert('calendarMapCallback ::g_calendarMap'+g_calendarMap.length);
		eventsData=jsonData.paginatedevents;
		g_lastPageNo= jsonData.lastPageNo;
		//alert('g_lastPageNo'+g_lastPageNo);
		  if(g_lastPageNo!=null)
		  YAHOO.util.Dom.get('lastPageNo').value=g_lastPageNo;
		populatePaginatedEvents(eventsData);
		populatePaginatedStartAndEndDates(eventsData);
		//alert('calendarMapCallback:: ST'+jsonData.calendarStartDate+",  END dt"+ jsonData.calendarEndDate);
		populateCalendarMinMaxDates(jsonData.calendarStartDate,jsonData.calendarEndDate);
		initCalendar(jsonData.eventMonthDatesMap,true);
		
	
	},
	failure: function(o)  {
		//console.debug('calendarMapCallback fail');
		// alert('pageMapCallback fail');
	}
};

function populatePaginatedEvents(eventsData){
	/*
	 * 	<!--  item1 -->
			<div class='eventItem'>
				<div class='listItemThumbnail'><img src='/images/logos/logo_amc.gif' id='eventImage1'  onmouseover='showOverlay(event);' onmouseout='hideYelpOverlay();' /></div>
				<div class='listItemDetails'>
					<div style='padding:0;'>April 14, 2009  8:30PM</div>
					<div>Madison Square Garden</div>
					<div>New York, New York</div>
					<div><a href='#'>SEE WHERE TO EAT</a></div>
				</div>
			</div>
			<div class='clear'></div>
	 */
 try{
	
	 if(eventsData==null ||eventsData.length==0){
		 //show no results found when no data 
		YAHOO.util.Dom.get('noResults').innerHTML='Sorry no matches found.';
		YAHOO.util.Dom.setStyle("noResults",'display','block');
		return;
	 }
	//alert('page eventsData :'+eventsData.length);
	YAHOO.util.Dom.setStyle("noResults",'display','none');
	var eventListLeft=YAHOO.util.Dom.get('eventListLeft');
	var eventListRight=YAHOO.util.Dom.get('eventListRight');
	
	var eventRows=parseInt("1");
	if(eventsData.length >1)
		eventRows=divideIntRoundUp(parseInt(eventsData.length),parseInt("2") );
	//alert('eventRows='+eventRows);
	 for(var i=0;i<eventsData.length;i++){
		 var eventItem=document.createElement("DIV");
		 eventItem.setAttribute("id",'eventItem'+i);
		 eventItem.setAttribute("class",'eventItem');
		 eventItem.setAttribute("className",'eventItem');
		 // image div
		 var aElement1=document.createElement("DIV");
		 aElement1.setAttribute("id",'eventItemImageDiv'+i);
		 aElement1.setAttribute("class",'listItemThumbnail');
		 aElement1.setAttribute("className",'listItemThumbnail');
		 eventItem.appendChild(aElement1);
		 //add image to eventItemImageDiv
		 var aElement=document.createElement("IMG");
		 aElement.setAttribute("id",'eventItemImage'+i);
		 aElement.setAttribute("class",'eventImage');
		 aElement.setAttribute("className",'eventImage');
		 aElement.setAttribute("src",eventsData[i].imageUrl); //'/images/events/'+i+'.gif'
		 aElement1.appendChild(aElement);
		 //listItemDetails
		 var aElementDetails=document.createElement("DIV");
		 aElementDetails.setAttribute("class",'listItemDetails');
		 aElementDetails.setAttribute("className",'listItemDetails');
		 //event date
		 var aElement=document.createElement("DIV");
		 aElement.setAttribute("id",'eventItemTime'+i);
		 aElement.setAttribute("class",'itemDate');
		 aElement.setAttribute("className",'itemDate');
		// if(i == 0)
		// aElement.setAttribute("style","padding:0");
		 aElement.innerHTML=eventsData[i].eventTimeLong;
		 //add to aElementDetails
		 aElementDetails.appendChild(aElement);
		 //event hh:min AMPM
		  var aElement=document.createElement("DIV");
		 aElement.setAttribute("id",'eventItemHrMin'+i);
		 aElement.setAttribute("class",'itemTime');
		 aElement.setAttribute("className",'itemTime');
		 aElement.innerHTML=eventsData[i].eventTimeDetail;
		 //add to aElementDetails
		 aElementDetails.appendChild(aElement);
		 // add clear to eventItem to clear floating date and time
		 var aElement=document.createElement("DIV");
		 aElement.setAttribute("class","clear");
		 aElement.setAttribute("className","clear");
		 aElementDetails.appendChild(aElement);
		//event venue
		 var aElement=document.createElement("DIV");
		 aElement.setAttribute("id",'eventItemVenue'+i);
		 aElement.setAttribute("class",'itemHeadline');
		 aElement.setAttribute("className",'itemHeadline');
		 aElement.innerHTML=eventsData[i].venue;
		 aElementDetails.appendChild(aElement);
	
		 //city, state
		  var aElement=document.createElement("DIV");
		 aElement.setAttribute("id",'eventItemCity'+i);
		 aElement.setAttribute("class",'itemAddress');
		 aElement.setAttribute("className",'itemAddress');
		 aElement.innerHTML=eventsData[i].city+", "+eventsData[i].state;
		 aElementDetails.appendChild(aElement);
		 //link where to eat
		 var aElementDiv=document.createElement("DIV");
		 var aElement=document.createElement("A");
		 aElement.setAttribute("class",'eventItemLink');
		 aElement.setAttribute("className",'eventItemLink');
		 aElement.setAttribute("id",'eventItemLink'+i);
		 aElement.setAttribute("eventid",eventsData[i].id);
		 aElement.setAttribute("href","#");
		 
		 aElement.onclick= function(e) {return false;};
		 var linkText=document.createTextNode('SEE WHERE TO EAT');

		// add the text as a child of the link
		 aElement.appendChild(linkText);
		 aElementDiv.appendChild(aElement);
		 /*
		 //create a down arrow image and add as child to link
		 var linkImg=document.createElement("IMG");
		 linkImg.setAttribute("class",'eventItemLinkImage');
		 linkImg.setAttribute("className",'eventItemLinkImage');
		 linkImg.setAttribute("id",'eventItemLinkImg'+i);
		 linkImg.setAttribute("src","/images/events/"+g_siteid+"/general/btn-grayarrow.gif");
		 aElement.appendChild(linkImg);*/
		 
		 aElementDetails.appendChild(aElementDiv);
		
		 //all event information added to listItemDetails. so
		 //add listItemDetails to eventItem
		 eventItem.appendChild(aElementDetails);
		// add clear to eventItem
		 var aElement=document.createElement("DIV");
		 aElement.setAttribute("class","clear");
		 aElement.setAttribute("className","clear");
		 eventItem.appendChild(aElement);
		//fnally add eventItem to eventItemList Left or Right
			 if(i < eventRows)
				 eventListLeft.appendChild(eventItem);
			 else
				 eventListRight.appendChild(eventItem);
	    
	 } //even Data Loop
	 
	 //attach click event to eventItemLink elements
	 ///alert('now attach events to links');
	 //getElementsByClassName(className, tagName, rootNode)
	  var eventItemLinks = YAHOO.util.Dom.getElementsByClassName('eventItemLink', 'a');
	 
	// alert('eventItemLinks'+eventItemLinks.length);
	 for(var i=0;i<eventItemLinks.length;i++){
		 	//alert('eventItemImages[i].id'+eventItemImages[i].id);
		 	if(YAHOO.util.Dom.get(eventItemLinks[i])!=null){
			 	AttachEvent(eventItemLinks[i],'click',showOverlayForEvent,false);
			 	//also attach MouseUp events
			 	var venue=YAHOO.util.Dom.get('eventItemVenue'+i).innerHTML;
			 	var omnObject=new omnitureObject('eventItemLink', venue);
			 	YAHOO.util.Event.addListener(eventItemLinks[i], "mouseup",doOmniture, omnObject);
			 	
		 	}
	 }
	 
	 
 }
 catch(e){
 //	console.debug('error in population of events----'+e.message);
 }
} //func


function populatePaginatedStartAndEndDates(eventsData){
	if(eventsData!=null && eventsData.length>0 ){
	  startDate=eventsData[0].eventTime;
	  endDate=eventsData[eventsData.length-1].eventTime;
	  YAHOO.util.Dom.get('startDateDisplay').innerHTML=startDate;
	  YAHOO.util.Dom.get('endDateDisplay').innerHTML=endDate;
	  }
	  //hide /show prev link 
	  YAHOO.util.Dom.setStyle('pageNavButtons','display','block');
	  if(YAHOO.util.Dom.get('pageNo').value ==0){
	 	 YAHOO.util.Dom.setStyle('eventPagePrevLink','display','none');
	  } else {
	  	 YAHOO.util.Dom.setStyle('eventPagePrevLink','display','inline');
		}
	 //hide/show next link
	 if(YAHOO.util.Dom.get('lastPageNo').value ==null ){
	 	 YAHOO.util.Dom.setStyle('eventPageNextLink','display','inline');
	 }else{
	 	   var lastPage=parseInt( YAHOO.util.Dom.get('lastPageNo').value) -1;
	 	   // this is beocs pageNo is 0 based 
		  if( YAHOO.util.Dom.get('pageNo').value >= lastPage ){
		 	 YAHOO.util.Dom.setStyle('eventPageNextLink','display','none');
		  } else {
		  	 YAHOO.util.Dom.setStyle('eventPageNextLink','display','inline');
			}
	}
		
} //func

function populateCalendarMinMaxDates(minDt, maxDt){
	
	YAHOO.util.Dom.get("calendarStart").value=minDt;
	YAHOO.util.Dom.get("calendarEnd").value=maxDt;
}


