YAHOO.namespace("results");

YAHOO.results.offers = new Array();
YAHOO.results.mapPanel = null;




YAHOO.results.initMap = function() {
	YAHOO.results.mapPanel.on("expand", function(cmp) {
		YAHOO.results.markAsMaximized("map_maximized");
	});
	YAHOO.results.mapPanel.on("collapse", function(cmp) {
		YAHOO.results.markAsMinimized("map_maximized");
	});
	
	if(YAHOO.results.getCookie("map_maximized") == "true") {
		YAHOO.results.mapPanel.expand();
	} else {
		YAHOO.results.mapPanel.collapse();
	}
}


YAHOO.results.registerOffer = function(offerId) {
	YAHOO.results.offers.push(offerId);
}

YAHOO.results.restorePageState = function() {
	for (i = 0; i < YAHOO.results.offers.length; i++) {
		if (YAHOO.results.getCookie(YAHOO.results.offers[i]) == "true") {
			YAHOO.results.maximizeOnUI(YAHOO.results.offers[i]);
		} else {
			YAHOO.results.minimizeOnUI(YAHOO.results.offers[i]);
		}
	}
}

YAHOO.results.minimizeAll = function() {
	for (i = 0; i < YAHOO.results.offers.length; i++) {
		YAHOO.results.minimize(YAHOO.results.offers[i]);
	}
}

YAHOO.results.maximizeAll = function() {
	for (i = 0; i < YAHOO.results.offers.length; i++) {
		YAHOO.results.maximize(YAHOO.results.offers[i]);
	}
}

YAHOO.results.minimize = function(uniqueId) {
	YAHOO.results.markAsMinimized(uniqueId);
	YAHOO.results.minimizeOnUI(uniqueId);
}

YAHOO.results.maximize = function(uniqueId) {
	YAHOO.results.markAsMaximized(uniqueId);
	YAHOO.results.maximizeOnUI(uniqueId);
}

YAHOO.results.maximizeOnUI = function(uniqueId) {
	document.getElementById("priceTable_" + uniqueId).style.display = "block";
	document.getElementById("maximizeBox_" + uniqueId).style.display = "none";
	document.getElementById("minimizeBox_" + uniqueId).style.display = "block";
}

YAHOO.results.minimizeOnUI = function(uniqueId) {
	document.getElementById("priceTable_" + uniqueId).style.display = "none";
	document.getElementById("minimizeBox_" + uniqueId).style.display = "none";
	document.getElementById("maximizeBox_" + uniqueId).style.display = "block";
}

YAHOO.results.markAsMaximized = function(uniqueId) {
	YAHOO.results.setCookie(uniqueId, true);
}

YAHOO.results.markAsMinimized = function(uniqueId) {
	YAHOO.results.setCookie(uniqueId, false);
}

YAHOO.results.setCookie = function(name, value) {
	document.cookie = "offer_" + name + "=" + value;
}

YAHOO.results.getCookie = function(name) {
	if (document.cookie.length > 0) {
		name = "offer_" + name;
		start = document.cookie.indexOf(name + "=");
		if (start != -1) {
			start = document.cookie.indexOf("=", start) + 1;
			end = document.cookie.indexOf(";", start);
			if (end == -1) {
				end = document.cookie.length;
			}
			return unescape(document.cookie.substring(start, end));
		}
	}
	return "";
}

YAHOO.results.clearAllCookies = function() {
	hasMoreOffers = true;
	start = 0;
	end = 0;
	while (hasMoreOffers) {
		start = document.cookie.indexOf("offer_");
		if (start != -1) {
			end = document.cookie.indexOf("=", start);
			if (end != -1) {
				name = unescape(document.cookie.substring(start, end));
				YAHOO.results.clearCookie(name);
			}
		} else {
			hasMoreOffers = false;
		}
	}
	YAHOO.results.clearCookie("map_maximized");
}

YAHOO.results.clearCookie = function(name) {
	date = new Date();
	date.setTime(date.getTime() - 1);
	document.cookie = name + "=; expires=" + date.toGMTString();
}

YAHOO.results.send = function(hotelId) {
	YAHOO.results.xss.send("mapFrame", hotelId);
}

Event.observe(document, "xss:message", function(e) {
	var params = e.memo.msg.split("|");
	var hotelCode = params[0];
	var cityCode = params[1];
	var supplierCode = params[2];
	YAHOO.results.showHotelPopup(hotelCode, cityCode, supplierCode);
});


YAHOO.results.showHotelPopup = function(hotelCode, cityCode, supplierCode) {
	url = parent.location.protocol
			+ "//"
			+ parent.location.host
			+ parent.location.pathname
			+ parent.location.search
			+ "&_eventId=showOffers&hotelCode="
			+ hotelCode
			+ "&cityCode="
			+ cityCode
			+ "&supplierCode="
			+ supplierCode;
	YAHOO.results.openPopup('modalPanel', url);
}

YAHOO.results.openPopup = function(frameId, url) {
	innerFrameId = frameId + "_frame";
	var frame = parent.document.getElementById(innerFrameId);
	if (frame == null) {
		frame = parent.document.createElement("iframe");
		frame.id = innerFrameId;
		frame.name = innerFrameId;
		frame.frameBorder = 0;
		var content = "#" + frameId + " .x-window-body";
		parent.$$(content)[0].appendChild(frame);
	}
    frame.src = url;
}

YAHOO.results.initCheckAllCheckBox = function(filterIndex, checked, label) {
    Ext.onReady(function(){
        var checkAllCmp = new Ext.form.Checkbox({
			id: "filter_all_check_" + filterIndex + "_cmp",
			checked: checked,
			boxLabel: label,
			renderTo: "filter_all_check_" + filterIndex
        });
		checkAllCmp.on("check", function(cmp, checked) {
			Ext.each(Ext.query('#filter_' + filterIndex + '_checkbox_cnt input[type="checkbox"]'), function(chBox) {
				var currCmp = Ext.getCmp(chBox.id);
				currCmp.suspendEvents(false);
				currCmp.setValue(checked);
				currCmp.resumeEvents();
			});
		});
    });
}

YAHOO.results.initOtherCheckBoxes = function(filterIndex) {
	Ext.onReady(function(){
		Ext.each(Ext.query('#filter_' + filterIndex + '_checkbox_cnt input[type="checkbox"]'), function(chBox) {
			Ext.getCmp(chBox.id).on("check", function(cmp) {
				var checked = true;
				Ext.each(Ext.query('#filter_' + filterIndex + '_checkbox_cnt input[type="checkbox"]'), function(chBox2) {
					if (!Ext.getCmp(chBox2.id).getValue()) {
						checked = false;
					}
				});
				var checkAllCmp = Ext.getCmp("filter_all_check_" + filterIndex + "_cmp");
				checkAllCmp.suspendEvents(false);
				checkAllCmp.setValue(checked);
				checkAllCmp.resumeEvents();
			});
		});
	});
}
