// -------
// GLOBALS
// -------
var relatedlinksurl1 = '/consumer/RelatedLinks.aspx?detail=' + id_num; // Initial call...
var relatedlinksurl2 = '/consumer/'; // Load secondary list...
var relatedlinksurl3 = '/consumer/searchdetails.aspx?'; // Click on secondary item...
/*
XML FORMAT
----------
<?xml version="1.0" encoding="utf-8"?>
<records>
	<item>
		<title>Attractions</title>
		<link>dynamic/relatedlinks/attractions.xml</link>
		<count>1</count>
	</item>
	<item>
		<title>Events</title>
		<link>dynamic/relatedlinks/events.xml</link>
		<count>2</count>
	</item>
	<item>
		<title>Lodging</title>
		<link>dynamic/relatedlinks/lodging.xml</link>
		<count>2</count>
	</item>
</records>

HTML FORMAT
-----------

  <h5><img src="/images/global/h4_nearby.gif" width="221" height="11" alt="Nearby..." /></h5>
    <ul id="Ul1" class="related-links">
        <li class="primary">Attractions <asp:Label runat="server" ID="lblattractions" CssClass="number">(21)</asp:Label>
            <ul>
                <li><a href="">Aullwood Audobon Center and Farm</a></li>
                <li><a href="">Bon Vie Bistro & Wine Bar</a></li>
                <li><a href="">Hyde Park Prime Steakhouse</a></li>
            </ul>
        </li>
        <li class="primary">Events <asp:Label runat="server" ID="Label1" CssClass="number">(21)</asp:Label></li>
        <li class="primary">Dining <asp:Label runat="server" ID="Label2" CssClass="number">(21)</asp:Label></li>
        <li class="primary">Shopping <asp:Label runat="server" ID="Label3" CssClass="number">(21)</asp:Label></li>
        <li class="primary">Lodging <asp:Label runat="server" ID="Label4" CssClass="number">(21)</asp:Label></li>
        <li class="primary">Special Offers <asp:Label runat="server" ID="Label5" CssClass="number">(21)</asp:Label></li>
    </ul> 
    
</div>			
*/

// -------
// UTILITY
// -------
function attachEventListener(target, eventType, functionRef, capture) {    
	if (typeof target.addEventListener != "undefined") {
		target.addEventListener(eventType, functionRef, capture);
	} else if (typeof target.attachEvent != "undefined") {
	    /* added by Michael
	    var functionString = eventType + functionRef;
	    target["e" + functionString] = functionRef;	    
	    target[functionString] = function(event) {
	        if (typeof event == "undefined") {
	            event = window.event;
	            }	        
	        target["e" + functionString]{event};
	        };	        
	    target.attachEvent("on" + eventType, target[functionString]};
	    /* end added code */
	
		// REM: Michael    
		target.attachEvent("on" + eventType, functionRef);
	} else {
		eventType = "on" + eventType;

		if (typeof target[eventType] == "function") {
			var oldListener = target[eventType];

			target[eventType] = function() {
				oldListener();

				return functionRef();
			};
		} else {
			target[eventType] = functionRef;
		}
	}	
	return true;	
}

function detachEventListener(target, eventType, functionRef, capture) {
	if (typeof target.removeEventListener != "undefined") {
		target.removeEventListener(eventType, functionRef, capture);
	} else if (typeof target.detachEvent != "undefined") {
		/* added by Michael 
		var functionString = eventType + functionRef;
		target.detachEvent("on" + eventType, target[functionString]);
		target["e" + functionString] = null;
		target[functionString] = null;
		/* end added code */
		
		// REM: Michael     
		target.detachEvent("on" + eventType, functionRef);
	} else {
		target["on" + eventType] = null;
	}
	return true;
}

function getEventTarget(event) {
  var targetElement = null;

  if (typeof event.target != "undefined") {
    targetElement = event.target;
  } else {
    targetElement = event.srcElement;
  }

  while (targetElement.nodeType == 3 && targetElement.parentNode != null) {
    targetElement = targetElement.parentNode;
  }

  return targetElement;
}

function ToggleDirectionsOverlay() {

    $('#divMapit').toggle();

}

function ShowLodging() {    
    if($("#tabs").tabs("length") > 2)
        $("#tabs").tabs("select", 2);
    else
        $("#tabs").tabs("select", 1);
    createMainMarker();
}

function Mapit(dest) {
    var address = $('#inputStartingAddress').val();    
    window.open("http://maps.google.com/?saddr=" + address + "&daddr="+dest);
    $('#inputStartingAddress').val('Enter Starting Address');
    ToggleDirectionsOverlay();    
}

// ----------
// INITIALIZE
// ----------
addEvents(window, 'load', rl_init);

function rl_init() {

	if ( (browser.isMac && browser.isIE) || (browser.isSafari && (browser.isSafari2 == false)) ) {
		// Incompatible (Display message?)
        
	} else {
    
	    var ao = newAjaxObject()
		ao.getAjaxRequest(relatedlinksurl1, "", "xml", rl_init_callback);
	}
}

function rl_init_callback(ajaxObj) {

	if (ajaxObj.reqObj.readyState == 4) { // If request of file completed
		if (ajaxObj.reqObj.status == 200 || window.location.href.indexOf("http") == -1) { // If request was successful or running script locally
			if (ajaxObj.filetype == "txt") {
				// ajaxObj.reqObj.responseText
			} else {
				// ajaxObj.reqObj.responseXML;
				rl_init_build(ajaxObj.reqObj);
			}
		} else {
			alert("There was a problem retrieving the XML data:\n" + ajaxObj.reqObj.statusText);
		}
	}
}

function rl_init_build(reqObj) {

	
	var root = document.getElementById("nearbyList");

	
	// <ul id="tabcategories">
	var ul = document.createElement('ul');
	ul.setAttribute('id', 'tabcategories');
	ul.className = 'related-links';    
	ul.id = 'tabcategories';

	// Build HTML
	var categories = reqObj.responseXML.getElementsByTagName("item");

    
    if(categories.length == 0)
        document.getElementById("loadingList").innerHTML = "Sorry, no attractions nearby.";
    else
    {
	    for (var i = 0; i < categories.length; i++) {
		    var title = getElementTextNS("","title",categories[i],0);
		    var link = getElementTextNS("", "link", categories[i],0);
		    var count = getElementTextNS("","count",categories[i],0);
		

        
		    var content = '';
		    if (count == null || count == '' || count == 0) {
			    // content = document.createTextNode(title);
		    } else {
			    content = document.createTextNode(title);

		        var url = '';
		        if (link.indexOf("http") == -1) {
			        // This is a relative URL
			        url = relatedlinksurl2 + link;
		        } else {
			        url = link;
		        }
    		
		        /**
		        * Build HTML
		        * ----------
		        * <li class="tab">
		        * 	<a href="javascript:void(0);" class="tab" onclick="rl_click(this,'attractions'); return false;">Attractions (2)</a>
		        * 	<br class="end" />
		        * 	<ul class="tablist">
		        * 		<li>Loading results...</li>
		        * 	</ul>
		        * </li>
		        */
    		
		        // <li class="tab">
		        var li = document.createElement("li");
		    
		        li.className = 'primary';
    		
		        // <a href="javascript:void(0);" class="tab" onclick="rl_click(this,'attractions'); return false;">Attractions (2)</a>
		        var a = document.createElement("a");
		        a.setAttribute('href','javascript:void(0);');
		        a.href = 'javascript:void(0);';
    		     
		        a.appendChild(content);
    		
    		    a.url = url;

                var contentNumber = document.createTextNode(" ("+count+")");
                var span = document.createElement("span");
                span.className = 'number';
                span.appendChild(contentNumber);

                a.appendChild(span);


                attachEventListener(a, 'click', rl_click, false);
		        li.appendChild(a);
    		
		        // <br class="end" />
		        //var br = document.createElement('br');
		        //br.setAttribute('class','end');
		        //br.className = 'end';
		        //li.appendChild(br);
    		
		        // <ul class="tablist" id="attractions">
		        var inner_ul = document.createElement('ul');		    		    
    		    inner_ul.style.display = 'none';

		        // <li>Loading results...</li>
		        var li_loading = document.createElement('li');
		        li_loading.appendChild(document.createTextNode('Loading results...'));
		        inner_ul.appendChild(li_loading);
    		
		        li.appendChild(inner_ul);
		        ul.appendChild(li);

		        if (title == "Lodging") {
		            var target = a;

		            while (target.nodeName.toLowerCase() != "a") {
		                target = target.parentNode;
		            }

		            var theList = target.parentNode.getElementsByTagName('ul')[0];
		            
		            $('#lnkLodging').click(function () {
		                LoadLodging(theList, a.url);		                
		            });
		        }

		    }
	    }
	
	    // alert( root.innerHTML );
	    root.innerHTML = '';

	    root.appendChild(ul);
    }
}

function LoadLodging(theList,url) {
    // Set variables
    var arrowOn = 'url(images/arrow_down_tabs.gif)';
    var arrowOff = 'url(images/arrow_right_tabs.gif)';
    var listOn = 'block';
    var listOff = 'none';
    
        // AJAX call (get data)
        var ao = newAjaxObject();
        ao.getAjaxRequest(url, "", "xml", rl_click_callback, theList);
        // Change arrow
        //target.style.backgroundImage = arrowOn;
        // Display results
        theList.style.display = listOn;
        theList.className = 'active';
        theList.parentNode.className = 'expanded';
   
    //if all the nodes where collapsed, show only the main item
    if ($('.expanded').length == 0) {
        ClearMapMarkers();
        createMarker('', true, '');
    }

}

// -------------
// PRIMARY CLICK
// -------------
function rl_click(event) {
        

	// Set variables
	var arrowOn = 'url(images/arrow_down_tabs.gif)';
	var arrowOff = 'url(images/arrow_right_tabs.gif)';
	var listOn = 'block';
	var listOff = 'none';
	
	var target = getEventTarget(event);

	while(target.nodeName.toLowerCase() != "a") {
		target = target.parentNode;
	}
	
	// var href = target.getAttribute("href");
	var theList = target.parentNode.getElementsByTagName('ul');

    //hide expanded node.
    if(theList[0].style.display != listOn)
    {
        $('.expanded').attr('className','primary');
        $('.active').css('display','none');
    }

	// Determine if results are currently displayed
	if (theList[0].style.display == listOn ) {
		// Change arrow
		//target.style.backgroundImage = arrowOff;
		// Display results
		theList[0].style.display = listOff;
        theList[0].className = '';
        theList[0].parentNode.className='primary';
	}
	else {
		// AJAX call (get data)
		var ao = newAjaxObject();
		ao.getAjaxRequest(target.url, "", "xml", rl_click_callback, theList[0]);
		// Change arrow
		//target.style.backgroundImage = arrowOn;
		// Display results
		theList[0].style.display = listOn;
        theList[0].className = 'active';
        theList[0].parentNode.className='expanded';
	}
	
    //if all the nodes where collapsed, show only the main item
    if($('.expanded').length == 0)
    {
        ClearMapMarkers();
        createMarker('',true,'');
        }
};

function rl_click_callback(ajaxObj) {
	if (ajaxObj.reqObj.readyState == 4) { // If request of file completed
		if (ajaxObj.reqObj.status == 200 || window.location.href.indexOf("http") == -1) { // If request was successful or running script locally
			if (ajaxObj.filetype == "txt") {
				// ajaxObj.reqObj.responseText;
			} else {
				rl_click_build(ajaxObj.reqObj,ajaxObj.callbackargs);
			}
		} else {
			alert("There was a problem retrieving the XML data:\n" + ajaxObj.reqObj.statusText);
		}
	}
}

function rl_click_build(reqObj, ul) {
	// Clear target list
	
	// Remove Existing Items
   	while (ul.childNodes.length > 0) {
   		ul.removeChild(ul.childNodes[ul.childNodes.length - 1]);
   	}
	
	// Build HTML
	var categories = reqObj.responseXML.getElementsByTagName("item");
	for (var i = 0; i < categories.length; i++) {
		var title = getElementTextNS("","title",categories[i],0);
		var link = getElementTextNS("", "link", categories[i],0);
		var count = getElementTextNS("","count",categories[i],0);
        var id = link.substring(link.lastIndexOf("=")+1,link.length);
        var letter = String.fromCharCode("A".charCodeAt(0) + i);

        if(i > 24) letter = i-24;

		//TODO: code here to create childs.
		var content = '';
		if (count == null || count == '' || count == 0) {
			isCategory = false;
			content = document.createTextNode(letter + ". " + title);
		} else {
			content = document.createTextNode(letter + ". " + title+" ("+count+")");
		}
		
		var url = ''
		if (link.indexOf("http") == -1) {
			// This is a relative URL
			url = relatedlinksurl3 + link;
		} else {
			url = link;
		}
		
		/**
		* Build HTML
		* ----------
		* <ul class="tablist"><li><a href="url">content</li></ul>
		*/
        

		createMarker(id,false,letter);
        
		var li = document.createElement("li");
		
		var a = document.createElement("a");
		a.setAttribute('href', 'javascript:displayPopup(' + id + ')');
		a.href = 'javascript:displayPopup(' + id + ')';
        a.setAttribute('onclick','displayPopup('+id+')');
        
		a.appendChild(content);
		
		li.appendChild(a);
	
		ul.appendChild(li);
	}
}


