// JavaScript Document﻿
var homepageData = '';
var theFilterForm;
var params = { wmode:"transparent", allowScriptAccess:"always", menu:"false" };
swfobject.embedSWF("swf/masthead-china.swf", "masthead", "980", "442", "10.0.0", false, "", params, "");

$(function() {
	var datafile = 'homepage.xml?noCache='+new Date().getTime();
	var alldurations = "alldurations", allactivities = "allactivities";
	$.ajax({
		type: 'GET',
		url: datafile,
		dataType: 'xml',
		success: function(data, textStatus) {
			
			homepageData = data;
			
			theFilterForm = $('form#filterForm').filterForm({
				onHotelsFiltering: function(container) {
					var obj = this;
					if (obj.getSelectedValue('city').length == 0 || obj.getSelectedValue('city') == 'default') {
						location.reload(true);
						return false;
					}
					else {
						return true;
					}
				},
				onHotelsFiltering: function(container) {
					container.addClass('loading');
				},
				onHotelsFiltered: function(container, hotelsData, textStatus) {
					var selectedCity = this.getSelectedValue('city');
					
					$('select[name=synxisCode]').val($("option."+selectedCity).val());
					
					/* update box header, header image, more link */
					$(homepageData).find('city[name='+selectedCity+']').each(function() {
						var $hotels 	= $(this).find('hotels');
						var $masthead = $(this).find('masthead');
						var title 		= $hotels.find('title').text(),
								mainImage = $hotels.find('mainImage').text(),
								moreUrl 	= $hotels.find('moreUrl').text(),
								masthead	= { type: $masthead.find('type').text(), src: $masthead.find('src').text() };
						
						$('h2', container).html(title);
						var hotelMainImage = $('img.header', container).attr('src', mainImage);
						$('.more a', container).attr('href', moreUrl).attr('target', '_blank');
						
						if (selectedCity == 'default') {
							hotelMainImage.attr('usemap','#Map');
						}
						else {
							hotelMainImage.removeAttr('usemap');
						}
						
						/* update masthead image or swf */
						switch (masthead.type) {
							case 'flash':
								swfobject.embedSWF( masthead.src, "masthead", "980", "442", "10.0.0", false, "", params, "" );
							break;
							case 'image':
								if ($('object#masthead').length) {
									// if the flash masthead exist, replace with normal masthead
									$('object#masthead').replaceWith('<div id="masthead"></div>');
								}
								
								$('#masthead').css({'background-image':'url('+masthead.src+')','visibility':'visible'});
							break;
						}
					});
					
					/* update content within the box */
					$(hotelsData).find('hotel').filter(function(index) {
						return index < 1;
					}).each(function() {
						var description = $('description', this).text();
						$('.details', container).html(description);
					});
					
					setTimeout(function() {
						container.removeClass('loading');
					}, 1000);
				},
				onPromotionsFiltering: function(container) {
					container.addClass('loading');
				},
				onPromotionsFiltered: function(container, promotionsData, textStatus) {
					
					var selectedCity = this.getSelectedValue('city');
					var selectedDuration = this.getSelectedValue('duration');
					
					/* update box header, header image, more link */
					$(homepageData).find('city[name='+selectedCity+']').each(function() {
						var $hotels 	= $(this).find('promotions');
						var title 		= $hotels.find('title').text(),
								mainImage = $hotels.find('mainImage').text(),
								moreUrl 	= $hotels.find('moreUrl').text();
						
						$('h2', container).html(title);
						$('img.header', container).attr('src', mainImage);
						$('.more a', container).attr('href', moreUrl).attr('target','_blank');
					});
					
					var html = '<ul>';
					
					var promoItems = $(promotionsData).find('promotion')
					.filter(function() {
						if (selectedCity == 'default')
							return $(this).find('city:contains("beijing,shanghai,wuxi,chengdu,qingdao,xiamen")').length;
						else if (selectedCity != 'default')
							return $(this).find('city:contains("'+selectedCity+'")').length > 0;
					})
					.filter(function() { // If duration is not chosen, list all promotions. Else list only the selected duration.
						if (selectedDuration.length)
							return $(this).find('duration:contains("'+selectedDuration+'")').length || $(this).find('duration:contains("'+alldurations+'")').length;
						else
							return true;
					})
					.filter(function() { // Make sure the promotion has not expired
						var expiryDate = new Date($(this).attr('expiryDate'));
						return !(expiryDate < new Date());
					})
					.filter(function(index) { // Display up to 3 items
						return index < 3;
					})
					.each(function() {
						var $promotion 	= $(this);
						var name 				= $promotion.find('name').text(),
								thumbnail 	= parseUri($promotion.find('thumbnail').text()).file,
								blurb 			= $promotion.find('blurb').text(),
								url 				= $promotion.find('url').text(),
								anchorId		= $promotion.find('anchorId').text();
						
						html += '<li>';
						html += '<img src="img/'+thumbnail+'" alt="" class="thumbnail" />';
						html += '<div class="description">';
						html += '<h3>'+name+'</h3>';
						html += '<p>'+blurb+' <span class="readmore">[<a onclick="return trackPromotion(this, \'relative\');" href="'+url+'" target="_blank">更多</a>]</span></p>';
						html += '</div>';
						html += '</li>';
					});
					
					html += '</ul>';
					
					trace("No. of promoItems: "+promoItems.length);
					
					if (promoItems.length == 0) {
						$('.details', container).html('<p class="error">该地点没有符合您搜索条件的最新促销。</p>');
					}
					else {
						$('.details', container).html(html);
					}
					setTimeout(function() {
						container.removeClass('loading');
					}, 1000);
				},
				onEventsFiltering: function(container) {
					container.addClass('loading');
				},
				onEventsFiltered: function(container, eventsData, textStatus) {
					var selectedDuration = this.getSelectedValue('duration');
					var selectedActivity = this.getSelectedValue('activity');
					var selectedCity = this.getSelectedValue('city');
					
					/* update box header, header image, more link */
					$(homepageData).find('city[name='+selectedCity+']').each(function() {
						var $hotels 	= $(this).find('events');
						var title 		= $hotels.find('title').text(),
								mainImage = $hotels.find('mainImage').text(),
								moreUrl 	= $hotels.find('moreUrl').text();
						
						$('h2', container).html(title);
						$('img.header', container).attr('src', mainImage);
						$('.more a', container).attr('href', moreUrl);
					});
					
					var html = '<ul>';
					
					var eventItems = $(eventsData).find('event')
					.filter(function() {
						if (selectedDuration.length) 
							return $(this).find('duration:contains("'+selectedDuration+'")').length || $(this).find('duration:contains("'+alldurations+'")').length;
						else
							return true;
					})
					.filter(function() {
						if (selectedActivity.length) 
							return $(this).find('activity:contains("'+selectedActivity+'")').length || $(this).find('activity:contains("'+allactivities+'")').length;
						else
							return true;
					})
					.filter(function() {
						var eventDate = new Date($(this).find('date').text());
						return !(eventDate < new Date());
					})
					.filter(function(index) { // Display up to 3 items
						return index < 3;
					})
					.each(function() {
						var $event 			= $(this);
						var name 				= $event.find('name').text(),
								thumbnail 	= parseUri($event.find('thumbnail').text()).file,
								blurb 			= $event.find('blurb').text(),
								url 				= $event.find('url').text(),
								anchorId		= $event.find('anchorId').text();
						
						html += '<li>';
						html += '<img src="img/'+thumbnail+'" alt="" class="thumbnail" />';
						html += '<div class="description">';
						html += '<h3>'+name+'</h3>';
						html += '<p>'+blurb+' <span class="readmore">[<a onclick="return trackEvent(this);" href="events/'+selectedCity+'.html#'+selectedCity+'-event-'+anchorId+'">更多</a>]</span></p>';
						html += '</div>';
						html += '</li>';
					});
					
					html += '</ul>';
					if (eventItems.length == 0) {
						$('.details', container).html('<p class="error">该地点没有符合您搜索条件的城市聚焦与活动。</p>');
					}
					else {
						$('.details', container).html(html);
					}
					
					setTimeout(function() {container.removeClass('loading');},1000);
				},
				onPlacesOfInterestsFiltering: function(container) {
					container.addClass('loading');
				},
				onPlacesOfInterestsFiltered: function(container, POIsData, textStatus) {
					var selectedActivity = this.getSelectedValue('activity');
					var selectedCity = this.getSelectedValue('city');
					
					/* update box header, header image, more link */
					$(homepageData).find('city[name='+selectedCity+']').each(function() {
						var $hotels 	= $(this).find('POIs');
						var title 		= $hotels.find('title').text(),
								mainImage = $hotels.find('mainImage').text(),
								moreUrl 	= $hotels.find('moreUrl').text();
						
						$('h2', container).html(title);
						$('img.header', container).attr('src', mainImage);
						$('.more a', container).attr('href', moreUrl);
					});
					
					var html = '<ul>';
					
					var POIItems = $(POIsData).find('POI')
					.filter(function() {
						if (selectedActivity.length)
							return $(this).find('activity:contains("'+selectedActivity+'")').length || $(this).find('activity:contains("'+allactivities+'")').length;
						else
							return true;
					})
					.filter(function(index) { // Display up to 3 items
						return index < 3;
					})
					.each(function() {
						var $POI 				= $(this);
						var name 				= $POI.find('name').text(),
								thumbnail 	= parseUri($POI.find('thumbnail').text()).file,
								blurb 			= $POI.find('blurb').text(),
								url 				= $POI.find('url').text(),
								anchorId		= $POI.find('anchorId').text();
						
						html += '<li>';
						html += '<img src="img/'+thumbnail+'" alt="" class="thumbnail" />';
						html += '<div class="description">';
						html += '<h3>'+name+'</h3>';
						html += '<p>'+blurb+' <span class="readmore">[<a onclick="return trackPOI(this);" href="places-of-interests/'+selectedCity+'.html#'+selectedCity+'-poi-'+anchorId+'">更多</a>]</span></p>';
						html += '</div>';
						html += '</li>';
					});
					
					html += '</ul>';
					if (POIItems.length == 0) {
						$('.details', container).html('<p class="error">该地点没有符合您搜索条件的城市纵览。</p>');
					}
					else {
						$('.details', container).html(html);
					}
					
					setTimeout(function() {container.removeClass('loading');},1000);
				},
				onSubmitting: function() {
					var selectedCity = this.getSelectedValue('city');
					
					// if no city is selected, show error message instead of filter
					if (selectedCity == 'default') {
						$.scrollTo('#body-content', 500, { 
							onAfter: function() {
								$('#selectCity').fadeIn('slow').animate({opacity:1.0},3000).fadeOut('slow');
							}
						});
					}
					else {
						this.filter();
					}
				}
			});
		}
	});
	
	$('div.more a').click(function() {
		if (this.hash == '#city') {
			$.scrollTo('#body-content', 500, { 
				onAfter: function() {
					$('#selectCity').fadeIn('slow').animate({opacity:1.0},3000).fadeOut('slow');
				}
			});
		}
	});
	
	//theFilterForm
	$('#Map area').click(function() {
		var href = $(this).attr('href');
		
		if (parseUri(href).protocol) {
			return true;
		}
		else {
			var clickedCity = href.replace('#','');
			trace(clickedCity);
			
			theFilterForm.setSelectedValue('city', clickedCity);
			theFilterForm.filter();
			
			return false;
		}
	});
	
});

function trackPromotion(obj, part) {
	if (typeof part === 'undefined') {
		return track(parseUri(obj.href).anchor);
	}
	else {
		return track(parseUri(obj.href)[part]);
	}
}

function trackEvent(obj) {
	return track(parseUri(obj.href).anchor);
}

function trackPOI(obj) {
	return track(parseUri(obj.href).anchor);
}

function trackPromotionMore(obj) {

	var tracingString = "";

	tracingString = parseUri(obj.href).path;
		
	//trace("tracingStringPromotion: " + tracingString);
	
	return track(tracingString);	
}

function trackEventMore(obj) {

	var tracingString = "";
	var fileName = parseUri(obj.href).file;
	fileName = fileName.replace(".html", "");
	
	if((fileName == "default") || (fileName == "index")) {
		tracingString = "-event-default";
	} else {
		tracingString = fileName + "-event-default";	
	}

	//trace("tracingStringEvent: " + tracingString);
	
	return track(tracingString);
}

function trackPOIMore(obj) {

	var tracingString = "";
	var fileName = parseUri(obj.href).file;
	fileName = fileName.replace(".html", "");
	
	if((fileName == "default") || (fileName == "index")) {
		tracingString = "-poi-default";
	} else {
		tracingString = fileName + "-poi-default";	
	}

	//trace("tracingStringEvent: " + tracingString);
	
	return track(tracingString);
}

function track(value) {
	var s=s_gi('millenniumhotelstst');
	s.dc=122;
	s.visitorNamespace='millenniumhotels';
	s.linkTrackVars='events,eVar27';
	s.linkTrackEvents='event22';
	s.events='event22';
	s.eVar27=value;
	s.tl(this,'o');
	return true;
}
