//____________________________________________________________________
function i_Event(xEvent,EVDBServer,panelsetOwnerObj,loginScreen_h){
	
	var self				= this;
	var user				= EVDBServer.user;
	
	var printButton;
	var XHTML_h;
	
	var panelset			= new Panelset(panelsetOwnerObj);
	panelset.createPanel('details');
	panelset.createPanel('map');
	panelset.createPanel('photos');
	panelset.createPanel('edit');
	
	window.app.photoPane	= panelset.panels.photos;
	
	createXHTML();
	
	this.__defineGetter__('XHTML_h',function(){return XHTML_h;});
	
	//----------------------------------------------------------------
	function createXHTML(){
	
		var container_h		= document.createHElement('div',null,'eventContainer');
		xEvent.bindLoadStateToAttribute(container_h,'connected');
		
		// create print button
		printButton		= new i_Button('printButton',null,'Print event');
		container_h.appendChild(printButton.XHTML_h);
		printButton.handleClick = function(){window.app.printEvent();};
		
		// create title
		var eventBanner_h	= container_h.createChild('div',null,'eventBanner');
		var eventTitle_h	= eventBanner_h.createChild('h1',null,'eventBannerTitle');
		xEvent.title.bindValueToInnerHTML(eventTitle_h);
		eventTitle_h.addEventListener('click',function(){panelset.panels.details.select();},false);
		
		// create navigation 
		var navigation_h	= container_h.createChild('div',null,'eventNavigation');
		var detailsTab_h	= createTab('Details','details','left');
		var mapTab_h		= createTab('Map','map');
		var photosTab_h		= createTab('Photos','photos');
		var editTab_h		= createTab('Edit','edit','right');
		
		// create inner curved border panel
		var eventLiner_h	= container_h.createChild('div',null,'eventLiner');
		eventLiner_h.appendBorders('/_components/images/borders/small_off_white/','smallOffWhite');
		
		// attach and populate panelset
		eventLiner_h.appendChild(panelset.XHTML_h);
		populateDetailsPanel();
		populateMapPanel();
		xEvent.flickrFeed.addEventListener('load',populatePhotosPanel);
		panelset.panels.photos.addEventListener('select',populatePhotosPanel);
		populateEditPanel();

		XHTML_h				= container_h;
		
		//------------------------------------------------------------
		function createTab(text_str,panelName_str,extremity_str){
			
			switch(extremity_str){
				case 'left':
					var imgPath_str		= '/_components/images/borders/tab_left/';
					var tabClass_str	= 'leftTabContainer';
					var imgContainerClass_str = 'leftTab';
					break;
				case 'right':
					imgPath_str			= '/_components/images/borders/tab_right/';
					tabClass_str		= 'rightTabContainer';
					imgContainerClass_str = 'rightTab';
					break;
				default:
					imgPath_str			= '/_components/images/borders/tab_centre/';
					tabClass_str		= 'middleTabContainer';
					imgContainerClass_str = 'centreTab';
					break;
			}
			var tab_h		= navigation_h.createChild('div','navTab '+tabClass_str);
			tab_h.appendBorders(imgPath_str,imgContainerClass_str);
			tab_h.createChild('div','navText',null,text_str);
			panelset.panels[panelName_str].createSelector(tab_h);
			return tab_h;
		};
		//------------------------------------------------------------
	};
	//----------------------------------------------------------------
	function populateDetailsPanel(){
		
		var parent_h			= panelset.panels.details.XHTML_h;
		
		// create summary table
		var time_h				= parent_h.createChild('div',null,'eventStartTime');
		xEvent.startTimeProp.bindValueToInnerHTML(time_h);
		
		// create event description
		var description_h		= parent_h.createChild('p');
		xEvent.description.bindValueToInnerHTML(description_h);
		
	};
	//----------------------------------------------------------------
	function populatePeoplePanel(){
		
		var parent_h			= panelset.panels.people.XHTML_h;
		parent_h.id				= 'peoplePanel';
		
		var loginScreenContainer_h = parent_h.createChild('div','loginScreenContainer');
		
		var loginPrompt_h		= parent_h.createChild('div',null,'peopleLoginPrompt');
		var login_btn			= new i_Button('attendeeLoginButton',null,'Login to Eventful');
		login_btn.handleClick 	= displayLoginScreen;
		
		loginPrompt_h.appendChild(login_btn.XHTML_h);
		loginPrompt_h.createChild('p',null,null,'Login to <a href="http://eventful.com">Eventful</a> to add or remove yourself from this event');
		user.addEventListener('login',handleLoginChange);
		user.addEventListener('logout',handleLoginChange);
		
		var attendeeTable_h		= parent_h.createChild('table',null,'attendeeTable');
		
		xEvent.attendeeSet.addEventListener('load',handleAttendeeLoad);
		
		//------------------------------------------------------------
		function handleAttendeeLoad(){
			
			attendeeTable_h.innerHTML = '';
			var attendees_arr	= xEvent.attendeeSet.attendees;
			for(var index=0; index<attendees_arr.length; index++){
				var tr_h		= attendeeTable_h.createChild('tr');
				var attendee	= attendees_arr[index];
				var name_str	= attendee.first_name+' '+attendee.last_name;
				tr_h.createChild('td',null,null,name_str);
				var link_h		= tr_h.createChild('a',null,null,attendee.link_url);
				link_h.href		= attendee.link_url;
			}
		};
		//------------------------------------------------------------
		function displayLoginScreen(){
			
			loginScreenContainer_h.setAttribute('active',true);
			loginScreenContainer_h.appendChild(loginScreen_h);
		};
		//------------------------------------------------------------
		function handleLoginChange(){
			
			loginPrompt_h.setAttribute('active',!user.loggedIn);
			if(user.loggedIn){
				loginScreenContainer_h.setAttribute('active',false);
			}
		};
	};	//------------------------------------------------------------
	//----------------------------------------------------------------
	function populateMapPanel(){
		
		var parent_h			= panelset.panels.map.XHTML_h;
		
		// create map (offscreen initially)
		var mapContainer_h		= parent_h.createChild('div','gMap');
		var venueMap			= new VenueMap(xEvent,mapContainer_h);
		panelset.panels.map.addEventListener('select',function(){venueMap.initialise();});
		panelset.panels.map.addEventListener('deselect',function(){venueMap.deactivate();});
		
		// add and bind text properties
		var locationName_h		= parent_h.createChild('h2');
		var address_h			= parent_h.createChild('p');
		var urlContainer_h		= parent_h.createChild('div');
		var url_h				= urlContainer_h.createChild('a');
		
		parent_h.createChild('h2',null,null,'Description/directions');
		var description_h		= parent_h.createChild('p');
		
		xEvent.venue.url.bindValueToInnerHTML(url_h);
		xEvent.venue.url.bindValueToAttribute(url_h,'href');
		xEvent.venue.name.bindValueToInnerHTML(locationName_h);
		xEvent.venue.address.bindValueToInnerHTML(address_h);
		xEvent.venue.description.bindValueToInnerHTML(description_h);
	};
	//----------------------------------------------------------------
	function populatePhotosPanel(){
		
		if(panelset.panels.photos.selected){
			var parent_h			= panelset.panels.photos.XHTML_h;
			parent_h.innerHTML		= '';
			if(xEvent.flickr_tag!=''){
				var flickrItems 	= xEvent.flickrFeed.items;
			}else{
				flickrItems			= new Array();
			}
	
			// create RSS feed and flickr logo
			var banner_h			= parent_h.createChild('div',null,'photoBanner');
			var flickrLogoLink_h	= banner_h.createChild('a',null,'flickrLogoLink');
			flickrLogoLink_h.href	= 'http://www.flickr.com';
			var flickrImg_h			= flickrLogoLink_h.createChild('img','flickrLogo');
			flickrImg_h.src			= '/_components/images/flickr_logo.gif';
			flickrImg_h.alt			= 'Flickr photo management';
			var feedLink_h			= banner_h.createChild('a','flickrFeed',null,'Photo stream');
			xEvent.flickrFeedURL.bindValueToAttribute(feedLink_h,'href');
			
			if(flickrItems.length>0){
				var explanation_h	= parent_h.createChild('p','introduction','null','Below are the most recently uploaded images from this event. You can add your own photos to this set at ');
				createTagPageLink(explanation_h,'Flickr');
				explanation_h.appendChild(document.createTextNode('.'));
			}
			
			// add invitation to upload photos
			var invitation_h		= parent_h.createChild('p',null,null,'Flickr is a website for uploading and sharing photos. To make sure they appear here, just remember to tag your uploads with the word ');
			var tag_h				= invitation_h.createChild('em','flickrTag');
			xEvent.flickr_tag.bindValueToInnerHTML(tag_h);
			invitation_h.appendChild(document.createTextNode('.'));
			
			// add photos
			var photoContainer_h	= parent_h.createChild('div',null,'thumbnailContainer');
			for(var index=0; index<flickrItems.length; index++){
				var flickrItem		= flickrItems[index];
				var container_h		= photoContainer_h.createChild('div','thumbnail_container');
				var img				= container_h.createChild('img');
				img.src				= flickrItem.imageSrcs.medium;
				img.title			= flickrItem.title;
				container_h.flickrItem = flickrItem;
				container_h.addEventListener('click',function(){window.app.zoomFlickrItem(this.flickrItem);},false);
			}
			
			// add 'no-photo' explanation
			if(flickrItems.length==0){
				parent_h.createChild('p',null,null,'<em>No photos available yet</em>');
			}else{
				// add anchor to ensure that bottom of container is pulled down despite photos being floated
				var link_h				= createTagPageLink(parent_h,'See more photos from this tag at Flickr...');
				link_h.id				= 'more_photos_link';
			}
		}
		
		//------------------------------------------------------------
		function createTagPageLink(parent_h,text_str){
			
			var link_h				= parent_h.createChild('a',null,null,text_str);
			xEvent.flickrLinkURL.bindValueToAttribute(link_h,'href');
			return link_h;
		};
		//------------------------------------------------------------
	};
	//----------------------------------------------------------------
	function populateEditPanel(){
		
		var editPanel				= panelset.panels.edit
		var iEdit					= new i_EditEvent(xEvent,editPanel,EVDBServer,loginScreen_h);
		panelset.panels.edit.XHTML_h.appendChild(iEdit.XHTML_h);
		
		// hide print button when editing
		editPanel.addEventListener('select',function(){setPrintButtonDisplay(false);window.app.updateLoginDisplay()});
		editPanel.addEventListener('deselect',function(){setPrintButtonDisplay(true);});
	};	
	//----------------------------------------------------------------
	function createNewsItemXHTML(newsItem,parent_h){
		
		var item_h				= parent_h.createChild('div','item');
		item_h.createChild('div','date',null,newsItem.date);
		item_h.createChild('h3',null,null,newsItem.title);
		item_h.createChild('p',null,null,newsItem.content);
	};
	//----------------------------------------------------------------
	function setPrintButtonDisplay(display_bool){
		
		if(display_bool){
			printButton.XHTML_h.style.display = 'block';
		}else{
			printButton.XHTML_h.style.display = 'none';
		}
	};
};	//________________________________________________________________
//____________________________________________________________________