if (document.getElementById) {
	
// Search Results: Expand/Collapse, .hover ==================================

addEvent(window, "load", function() {
	if (Element.hasClassName($("page-container"), "search-results-section")) {
		
		// Hide Lists
		var contentOrderedLists = $("content").getElementsByTagName("ol");
		
		for (var i = 0; i < contentOrderedLists.length; i++) {
			if (Element.hasClassName(contentOrderedLists[i], "deals-search-results-listing")) {
				
/*
				if (Element.hasClassName($("page-container"), "anywhere-page")) {
					contentOrderedLists[i].style.display = "none";
				}
*/
				
				var listItems = contentOrderedLists[i].getElementsByTagName("li");
				
				for (var j = 0; j < listItems.length; j++) {
					addEvent(listItems[j], "mouseover", function() {
						Element.addClassName(this, "hover");
						
						if (Element.hasClassName(this, "even-child")) {
							Element.addClassName(this, "even-child-hover");
						} else if (Element.hasClassName(this, "odd-child")) {
							Element.addClassName(this, "odd-child-hover");
						}
					});

					addEvent(listItems[j], "mouseout", function() {
						Element.removeClassName(this, "hover");
						Element.removeClassName(this, "even-child-hover");
						Element.removeClassName(this, "odd-child-hover");
					});
					
					
					if ((j % 2) == 0) {
						// Even
						Element.addClassName(listItems[j], "even-child");
					} else {
						// Odd
						Element.addClassName(listItems[j], "odd-child");
					}
				
					var listItemParagraphs = listItems[j].getElementsByTagName("p");
				
					for (var k = 0; k < listItemParagraphs.length; k++) {
						if (Element.hasClassName(listItemParagraphs[k], "low-price-guarantee") || Element.hasClassName(listItemParagraphs[k], "tooltip") || Element.hasClassName(listItemParagraphs[k], "valueContent")) {
							addEvent(listItemParagraphs[k], "mouseover", function() {
								Element.addClassName(this.parentNode, "hover");
								Element.addClassName(this.parentNode.parentNode, "inner-hover");
							});

							addEvent(listItemParagraphs[k], "mouseout", function() {
								Element.removeClassName(this.parentNode, "hover");
								Element.removeClassName(this.parentNode.parentNode, "inner-hover");
							});
						
//							break;
						}
					}
				}
			}
		}
		
		// Swap hide-link's to show-link's and attach events
		var contentH5s = $("content").getElementsByTagName("h5");
		
		for (var i = 0; i < contentH5s.length; i++) {
			var headerLink = contentH5s[i].getElementsByTagName("a")[0];

			Element.removeClassName(headerLink, "show-link");			
			Element.addClassName(headerLink, "hide-link");
						
			addEvent(headerLink, "click", hideSearchResultGroup);
		}
	}
});

function showSearchResultGroup(e) {
	Element.removeClassName($(this.href.substring(this.href.indexOf("#") + 1, this.href.length)), "deals-search-results-listing-collapsed");
	
	Element.removeClassName(this, "show-link");
	Element.addClassName(this, "hide-link");
	
	removeEvent(this, "click", showSearchResultGroup);
	addEvent(this, "click", hideSearchResultGroup);
	
	if (window.event) {
		window.event.returnValue = false;
	} else if (e && e.preventDefault) {
		e.preventDefault();
	}

	this.onclick = function() { return false; }; // for old versions of Safari
}

function hideSearchResultGroup(e) {
	Element.addClassName($(this.href.substring(this.href.indexOf("#") + 1, this.href.length)), "deals-search-results-listing-collapsed");
	
	Element.removeClassName(this, "hide-link");
	Element.addClassName(this, "show-link");
	
	removeEvent(this, "click", hideSearchResultGroup);
	addEvent(this, "click", showSearchResultGroup);

	if (window.event) {
		window.event.returnValue = false;
	} else if (e && e.preventDefault) {
		e.preventDefault();
	}

	this.onclick = function() { return false; }; // for old versions of Safari	
}
	
// Last Minute Deals: Split Lists ===========================================

addEvent(window, "load", function() {	
	// Get the list
	var otherLMDs = $("other-last-minute-deals");
	
	if (otherLMDs) {
		slice_list(otherLMDs, {
			min_lists: 3,
			max_lists: 3//,
		});
	}
});
	
// Last Minute Deals: Collapse/Expand =======================================

addEvent(window, "load", function() {
	if (Element.hasClassName($("page-container"), "last-minute-deals-page") && $("content")) {
		
		var contentDivs = $("content").getElementsByTagName("div");
		var sixPack = $("deals-six-pack");
		
		for (var i = 0; i < contentDivs.length; i++) {
			if (Element.hasClassName(contentDivs[i], "deals-pack") && contentDivs[i].parentNode != sixPack) {
				//Element.addClassName(contentDivs[i], "deals-pack-collapsed");
				
				addEvent(contentDivs[i].getElementsByTagName("h3")[0].getElementsByTagName("a")[0], "click", expandLMDPack);
			}
		}
	}
});

function expandLMDPack(e) {	
	this.getElementsByTagName("span")[0].innerHTML = "<img src='/images/promotions/common/ajax-loader.gif' /> +";
	
	var promoDiv = document.createElement('div');
	promoDiv.setAttribute("id", 'promos_' + this.parentNode.parentNode.id);
	this.parentNode.parentNode.appendChild(promoDiv);
	
	var campaignId = this.parentNode.parentNode.id;
	getCampaignData(this.getElementsByTagName("span")[0], promoDiv, this.parentNode.parentNode, campaignId);
	
	removeEvent(this, "click", expandLMDPack);
	addEvent(this, "click", collapseLMDPack);
	
	if (window.event) {
		window.event.returnValue = false;
	 } else if (e && e.preventDefault) {
		e.preventDefault();
	 }

	 this.onclick = function() { return false; }; // for old versions of Safari
}

function getCampaignData(destEl, promoDiv, parentNode, campaign) {
    var request = getXHR();
    httpRequest(request, "POST", "/promoAjaxGetLmdCampaign.do", true, 
        function() { populateCampaignData(request, destEl, promoDiv, parentNode); },
        function() { handleError(destEl); },
        "campaignId=" + campaign);
}

// Ajax callback method
function populateCampaignData(request, destEl, promoDiv, parentNode) {
    if(request.readyState == 4) {
        if(request.status == 200) {
            var data = request.responseText;
            //alert(data);
            destEl.innerHTML = "&ndash;";
            promoDiv.innerHTML = validateResponse(data);
            Element.removeClassName(parentNode, "deals-pack-collapsed");
        } else {
            handleError(destEl);
        }
    }
}

// Ajax error callback
function handleError(destEl) {
    destEl.innerHTML = "+";
    alert("An error occurred retrieving properties for this destination.");
}

// Check for valid response from ajax call
function validateResponse(data) {
    if (data.indexOf("deals-listing") >= 0) {
        return data;
    } else {
        return "<ul class='deals-listing'></ul>";
    }
}

function collapseLMDPack(e) { 
    Element.addClassName(this.parentNode.parentNode, "deals-pack-collapsed"); 
    this.getElementsByTagName("span")[0].innerHTML = "+";

    // Remove the Promo Div
	var promoDiv = document.getElementById('promos_' + this.parentNode.parentNode.id); 		
	this.parentNode.parentNode.removeChild(promoDiv);

	
	removeEvent(this, "click", collapseLMDPack); addEvent(this, "click", expandLMDPack);

	if (window.event) { 		
	    window.event.returnValue = false; 
	} else if (e && e.preventDefault) { 
	    e.preventDefault(); 
	}

	this.onclick = function() { return false; }; // for old versions of Safari
}
	
} // end document.getElementById check

// sIFR Rules ===============================================================

if(typeof sIFR == "function" && !sIFR.UA.bIsIEMac) {
	
	// Deals Pack headers
	sIFR.replaceElement("div#page-container.landing-page div#page div#content div.deals-pack h3 span", named({
		sFlashSrc:      "/images/promotions/sifr/trade-gothic-lt-bold.swf",
		sColor:         "#FFFFFF",
		sBgColor:       "#B40014",
		sWmode:         "transparent"}
	));
}

//******* Ajax Methods *************

// Returns an XmlHttpRequest object
function getXHR() {
    var request = null;  

    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			request = new XMLHttpRequest();
        } catch(e) {
			request = null;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	request = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		request = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		request = null;
        	}
		}
    }

    //Very unlikely, but we test for a null request
    //if neither ActiveXObject was initialized
    if(!request)  {
        alert("Your browser does not permit the use of all "+
              "of the features of this page!");
    }
    
    return request;    
}

/* Wrapper function for making an XmlHttpRequest
 Parameters:
  request: The XmlHttpRequest object
  reqType: The HTTP request type such as GET or POST.
  url: The URL of the server program.
  asynch: Whether to send the request asynchronously or not.
  respHandle: The name of the function that will handle the response.
  errHandle: The actual function that will handle errors
  Any seventh parameters represented as arguments[6] are the data a
  POST request is designed to send. */
function httpRequest(request,reqType,url,bool,respHandle,errHandle) {
    try {
        /* Specify the function that will handle the HTTP response */
        request.onreadystatechange=respHandle;
        request.open(reqType,url,bool);
        //if the reqType parameter is POST, then the
        //7th argument to the function is the POSTed data
        if(reqType.toLowerCase() == "post") {
            request.setRequestHeader("Content-Type",
                        "application/x-www-form-urlencoded; charset=UTF-8");
            request.send(arguments[6]);
        }   else {
            request.send(null);
        }

    } catch (errv) {
        errHandle.call();
    }
}

