// JavaScript Document 


var historyLoad = false;
var slideshow=new Array();
var searchI;
var itemDetail = false;
var regionID = 0;
var themeID = 0;
var memberID = 0;
var svcTypeID = 0;
var pageType = 'search';

function adjustItemsPerPage(svcType){
	//logIt('adjustItemsPerPage pageType:'+pageType+' svcTypeID:'+svcTypeID);
	if(pageType == 'search'){
		if($('perPageInput') == null && $('divPerPage') != null){
			//logIt('adjustItemsPerPage setItemsPerPage');
			//setItemsPerPage
			$('divPerPage').update('<div id="divPerPage" name="divPerPage"><input id="perPageInput" name="perPageInput" type="button" onclick="javascript:setItemsPerPage();" value="'+itemsPerPageCookie+' Items Per Page" style="font-size:9px; background:#0D205D; color:#FFFFFF"/></div>');
		}
		if(svcType == 0) return;
		var itemCnt = new Number($F('itemCount'+svcType));
		//logIt('adjustItemsPerPage itemCnt:'+itemCnt+' itemsPerPageCookie:'+itemsPerPageCookie);
	
		if(itemCnt <= itemsPerPageCookie){
		//logIt('itemCnt <= itemsPerPageCookie');
			$('perPageInput').hide();
		}else{
			$('perPageInput').show();
		}
	}/*else{//service
		if($('perPageInput') != null) $('perPageInput').hide();	
	}*/
}

function myTabberAutomatic(resp){
	tabberAutomatic();
}
		
function myOnTabSelected(tabId){
	var svcType = new Number(tabId.replace('detailDivTab',''));//don't override the global svcTypeID
	adjustItemsPerPage(svcType);
}

function getDropDownValues(){
	var dd = $('itemID1');
	if(dd == undefined) return;//where are the dropDowns?
	
	if(dd.selectedIndex == 0){
		dd = $('itemID0');
	}
	regionID = dd.options[dd.selectedIndex].id;
	var dd = $('themeSelect');
	themeID = dd.options[dd.selectedIndex].id;
	//logIt('getDropDownValues regionId:'+regionID+' themeId:'+themeID);
}

function nextPage(sr,er,typeId){
	getDropDownValues();
	var divName = 'detailDiv'+typeId;
	var diff = er - sr + 1;
	sr += diff;
	er += diff;
	var urlString='itemsDetailDivOne.cfm?regionId='+regionID+'&typeId='+typeId+'&sr='+sr+'&er='+er+
	'&themeId='+themeID+'&memberID='+memberID+'&perPage='+itemsPerPageCookie;
	new Ajax.Updater(divName, urlString);
}

function prevPage(sr,er,typeId){
	getDropDownValues();
	var divName = 'detailDiv'+typeId;
	var diff = er - sr;
	er = sr - 1;
	sr = er - itemsPerPageCookie + 1;
	var urlString='itemsDetailDivOne.cfm?regionId='+regionID+'&typeId='+typeId+'&sr='+sr+'&er='+er+
	'&themeId='+themeID+'&memberID='+memberID+'&perPage='+itemsPerPageCookie;
	new Ajax.Updater(divName, urlString);
}

function whichPage(sr,er,typeId){
	var dd = $('itemID1');
	if(dd.selectedIndex == 0){
		dd = $('itemID0');
	}
	var regionId = dd.options[dd.selectedIndex].id;
	var dd = $('themeSelect');
	var themeId = dd.options[dd.selectedIndex].id;
	var divName = 'detailDiv'+typeId;
	var urlString='itemsDetailDivOne.cfm?regionId='+regionId+'&typeId='+typeId+'&sr='+sr+'&er='+er+
	'&themeId='+themeId+'&memberID='+memberID+'&perPage='+itemsPerPageCookie;
	new Ajax.Updater(divName, urlString);
}

function redirectIt(){
	//assumes getDropDownValues() has already been called
	var urlString = 'items.cfm?regionID='+regionID+'&themeID='+themeID+'&typeID='+svcTypeID+'&memberID='+memberID+
		'&pageType='+pageType;
	window.location.replace(urlString);
}
function submitDropDowns(){
	selectIt();
}

function selectIt(dd){
	getDropDownValues();
	svcTypeID = 0;
	pageType = 'search';//might be coming from loadService which has set svcTypeId, that we should capture for default tab
//TODO: PAGETYPE?
	/*Since this dropdown is on many pages, if we are not on items.cfm, we'll redirect there*/
	if(window.location.href.indexOf('items.cfm') == -1){
		redirectIt();
	}else{
		//if region change or sent here by something else
		var urlString = 'itemsDetailDivAll.cfm?';
		var divName = 'divContentRight';
		if(dd != undefined && dd.name == 'itemID0'){//top dropdown changed, so repopulate most of the page
			urlString = 'itemsDivContent.cfm?';
			divName = 'divContent';
		}else if(pageType == 'service'){
			urlString = 'itemsService.cfm?';
			divName = 'divContent';
		}
		postDiv(divName,urlString);
	}
}

function postDiv(divName,urlString){
	postWaitMsg('divContentRight');			
	urlString += 'regionID='+regionID+'&themeID='+themeID+'&typeID='+svcTypeID+'&memberID='+memberID+
		'&perPage='+itemsPerPageCookie+'&pageType='+pageType;
	if(pageType == 'service') new Ajax.Updater(divName, urlString, {onComplete:loadServiceHeader});
	else new Ajax.Updater(divName, urlString, {onComplete:myTabberAutomatic});
}

function postWaitMsg(divName){
	$(divName).update('<div id="'+divName+'"><span class="pageheader1">One moment please...</span></div>');
	addHistory();
}
	
function postItemDetail(itemID,mId,typeID){
	defaultTitle = "";//so that first tab is selected
	defaultTab = 0;//don't select tab based on title, but just make the first tab selected
	itemDetail = true;
	var divName = 'divContentRight';
	var urlString = 'itemsDetails.cfm?itemID='+itemID+'&typeID='+typeID+'&memberID='+mId;
	new Ajax.Updater(divName, urlString,{onComplete:postSlideShow});
	svcTypeID = typeID;
	addHistory(itemID,mId);
}

function postSlideShow(resp){
	var t = resp.responseText;
	var imageCount = Number(textBetween(t,'imageCount" value="','"'));
	//alert('postBodyWithTabs:'+imageCount);
	slideshow.length = 0;
	for(var i = 1; i <= imageCount; i++){
		var fldName = 'image'+i+'" value="';
		var imgName = textBetween(t,fldName,'"');
		//alert('addImage:'+imgName);
		slideshow_add_image(slideshow,imgName);
	}
	tabberAutomatic();
}

function textBetween(t,searchBegin,searchEnd){
	var s = t.indexOf(searchBegin);
	var ss = t.indexOf(searchEnd,(s+searchBegin.length));
	var returnString = t.substring((s+searchBegin.length),ss);
	return returnString;
}
	
function loadPageSearch(){
	//logIt('loadPageSearch');
	pageType = 'search';
	
	var names = 'itemID0,itemID1,selectTheme';
	var ddNames = names.split(',');
	for(var i = 0; i < ddNames.length; i++){
		var dd = $(ddNames[i]);
		if(dd != undefined && dd.selectedIndex != 0){
			//alert('loadPageSearch ddName:'+ddNames[i]+' selectIt');
			selectIt(dd);
			return;
		}
		
	}
	//alert('loadPageSearch no ddName selectIt');
	selectIt();
}

function loadService(svcType){
	pageType = 'service';
	svcTypeID = svcType;
	
	switch(svcTypeID){
		case 4:
			defaultTitle = 'Rail';
			break;
		case 2:
			defaultTitle = 'Cruises';
			break;
		case 5:
			defaultTitle = 'Cuisine';
			break;
		case 1://hotels
		case 6://offers
		case 9://groups
		default:
			defaultTitle = 'Hotels';
			break;
	}
	
	if(window.location.href.indexOf('items.cfm') == -1){
		redirectIt();
	}else{
		//if region change 
		var urlString='itemsService.cfm?';
		var divName = 'divContent';
		postDiv(divName,urlString);
	}
}

function loadServiceHeader(resp){
	tabberAutomatic();
	urlString='flash_header_change.cfm?size=small&typeID='+svcTypeID;
	new Ajax.Updater('flashHeader', urlString);
}

function initializeHistory() {
	 //if(dhtmlHistory != undefined) return;
	 
	 //logIt('hash:'+window.location.hash);
	 //var historyData = dhtmlHistory.get(key);
	
	// initialize our DHTML history
	dhtmlHistory.initialize();
	// subscribe to DHTML history change events
	dhtmlHistory.addListener(historyChange);
	//addHistory();
	
	// if this is the first time we have
	// loaded the page...
	/*if (dhtmlHistory.isFirstLoad()) {
	   // start adding history
	   dhtmlHistory.add("1", 
						"Hello World "
						+ "Data");
	   dhtmlHistory.add("2", 33);
	   dhtmlHistory.add("3", true);
	   dhtmlHistory.add("4", true);
	
	   var searchObject = new Object();
	   searchObject.value1 = 
						 "This is value1";
	   searchObject.value2 = 
						 "This is value2";
	   searchObject.value3 = new Array();
	   searchObject.value3[0] = 
						 "This is array[0]";
	   searchObject.value3[1] = 
						 "This is array[1]";
	
	   dhtmlHistory.add("searchObject", 
						searchObject);
	}*/
 }
 
 /** Our callback to receive history change events. */
 function historyChange(newLocation, historyData) {
	//logIt('historyChange: '+JSON.stringify(historyData));
	if (newLocation.substring(0,12) == "searchObject") {
		if(historyData != undefined){
			historyLoad = true;
			searchI = Number(newLocation.substring(12,newLocation.length));
			svcTypeID = historyData.svcTypeID;
			regionID = historyData.regionID;
			pageType = historyData.pageType;
			themeID = historyData.themeID;
			//memberID = historyData.memberID;//don't set the global var or all searches will return only this member's
			defaultTitle = historyData.defaultTitle;
			
			if(historyData.itemID != 0){
				postItemDetail(historyData.itemID,historyData.memberID,svcTypeID);
			}else{
				var urlString = 'itemsDivContent.cfm?';
				var divName = 'divContent';
				if(pageType == 'service') {
					urlString = 'itemsService.cfm?';
				}
				postDiv(divName,urlString);
		   }
		}
	}
}
 
function addHistory(itemId,memberID){
   if(dhtmlHistory != undefined && !historyLoad){
	   if(searchI == undefined) searchI = 1;
       var key = 'searchObject'+searchI++;
	   while(historyStorage.hasKey(key) == true){
		   //logIt('hasKey:'+key);
		   key = 'searchObject'+searchI++;
	   };
	   var searchObject = new Object();
	   searchObject.svcTypeID = svcTypeID;
	   searchObject.regionID = regionID;
	   searchObject.pageType = pageType;
	   searchObject.themeID = themeID;
	   searchObject.memberID = memberID;
	   searchObject.defaultTitle = defaultTitle;
	   if(itemId != undefined) {
		   searchObject.pageType = 'search';
		   searchObject.itemID = itemId;
	   } else {
		   searchObject.itemID = 0;
	   }
	   dhtmlHistory.add(key, searchObject);
	   //logIt('addHistory key:'+key+' :'+JSON.stringify(searchObject));
   }
   if(historyLoad) historyLoad = false;
}
