addLoadEvent(propertymaplink);
addLoadEvent(saveSearch);


if (typeof sg == "undefined") {
    var sbase = "/vebra";
} else {
    var sbase = "/" + sg;
}


function propertymaplink () 
{

	if (!document.getElementById) return false;
	if (document.getElementById("noresults")) return false;
	if (!document.getElementById("rs-mapnojs")) return false;
	var rsmaplinkahref = document.createElement("a")
	rsmaplinkahref.setAttribute("href", sbase + "/property/search/map/" + dbt);
	rsmaplinkahref.setAttribute("title", "View a map of your results");
	if (!rsmaplinktextExt) {
	    rsmaplinktextExt = 'Property map'; 
	} 
	var rsmaplinktext = document.createTextNode(rsmaplinktextExt);
      rsmaplinkahref.appendChild(rsmaplinktext);
	var refine = document.getElementById("rs-mapnojs");
  if (refine.hasChildNodes())
  {
      removeChildNodes(refine);
  }
  refine.appendChild(rsmaplinkahref);
  refine.setAttribute("id","rs-map");
  return false;
}

function removeChildNodes(pNode)
{
	    var cN = pNode.childNodes;
	    for(var j=0; j< cN.length; j++)
	    {
		    pNode.removeChild(cN[0]);
	    }
}

function saveSearch() {
	if (!document.getElementById) return false;
	if (!document.getElementById("s-savesearch")) return false;
  var saveSearchContainer = document.getElementById("s-savesearch");
  saveSearchContainer.className = "ajax";
  
  var saveSearch = document.getElementById("save-search-container");
  var saveHeading = saveSearch.getElementsByTagName("h3")[0];
  saveSearch.removeChild(saveHeading);
  
  var viewSavedSearch = document.getElementById("view-search-container");
  var viewSavedSearchHeading = viewSavedSearch.getElementsByTagName("h3")[0];
  viewSavedSearch.removeChild(viewSavedSearchHeading);
  
    
  var saveSearchAnchorText = saveHeading.firstChild.nodeValue;
  var viewSavedSearchAnchorText = viewSavedSearchHeading.firstChild.nodeValue;
  
  var spanTextArray = new Array(saveSearchAnchorText,viewSavedSearchAnchorText);
  var UL = document.createElement("ul");
      UL.setAttribute("id","s-savesearch-navigation");
  var i;
  for (i in spanTextArray)
  {
    var LI = document.createElement("li");
        var liID;
        
        if (spanTextArray[i] == 'View saved searches') liID = 's-viewsearch-link' 
        else liID = 's-savesearch-link';
        
        LI.setAttribute("id", liID);
    var Span = document.createElement("span");
        //Anchor.setAttribute("class", "");
        
    var spanText = document.createTextNode(spanTextArray[i]);
        LI.appendChild(Span);
        Span.appendChild(spanText); 
        UL.appendChild(LI);
        
        
  }
  
  saveSearchContainer.insertBefore(UL,saveSearch);
        
  var saveSearchLink = document.getElementById("s-savesearch-link");
  var viewSearchLink = document.getElementById("s-viewsearch-link");
  saveSearchLink.onclick = function() {
			viewSearchLink.firstChild.removeAttribute("class");
			saveSearchLink.firstChild.setAttribute("class","active");
      var str = saveSearchContainer.className;
      if ( str.match("showSaveSearch")){
        saveSearchContainer.className = "ajax";
        saveSearchLink.firstChild.removeAttribute("class");
      }
      else {
        saveSearchContainer.className = "ajax showSaveSearch";
      }
  }
   
  viewSearchLink.onclick = function() {
			saveSearchLink.firstChild.removeAttribute("class");
			viewSearchLink.firstChild.setAttribute("class","active");
      var str = saveSearchContainer.className;
      if ( str.match("showViewSavedSearch")){
        saveSearchContainer.className = "ajax";
        viewSearchLink.firstChild.removeAttribute("class");
      }
      else {
        saveSearchContainer.className = "ajax showViewSavedSearch";
      }
  }
  
  var savedSearchContainer = document.getElementById("view-search-container");
  var actionsLi = savedSearchContainer.getElementsByTagName("li");
  // attach the onclick handler to the anchors within the search container LIs 
	for (i=0; i < actionsLi.length; i++)
	{
		var current = actionsLi[i];
		if(current.className.substring(0,2) == "s-")
		{	
			var url = current.getElementsByTagName("a")[0];
			url.onclick = function(){
				// pass the parent LI's id and this LI's classname
				callAjax(this.parentNode.parentNode.parentNode.getAttribute("id").substr(2),this.parentNode.className);
				return false;
			};
		}
	}
	setDefaultOnClickHandler();
  
  }

function setDefaultOnClickHandler() 
{
	var savedSearchContainer = document.getElementById("view-search-container");
	var actionsPara = savedSearchContainer.getElementsByTagName("p");
	for (i=0; i < actionsPara.length; i++) 
	{
		if(actionsPara[i].className == "setdefault")
		{
			if(actionsPara[i].getElementsByTagName("a").length > 0)
				{
					var url = actionsPara[i].getElementsByTagName("a")[0];
					url.onclick = function(){ //alert(this.parentNode.parentNode.getAttribute("id").substr(2));
						callAjax(this.parentNode.parentNode.getAttribute("id").substr(2),this.parentNode.className);
						return false;
				};
			}
		}
		
  }
}

function getXMLHTTPRequest()
{
    var request = false;
    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest()
    }
    else
    {
        if(window.ActiveXObject)
        {
            try
            {
                request = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(err1)
            {
                try
                {
                    request = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(err2)
                {
                    request = false;
                }
            }
        }
    }
    return request;
}

var myRequest = new getXMLHTTPRequest();



function callAjax(selectedSearchID, searchaction)
{

    var urlaction = (searchaction == 'setdefault') ? searchaction : searchaction.substr(2);
    var url = sbase + "/" + "ajax/savedsearch/" + urlaction + "/" + selectedSearchID;
    
    myRequest.open("GET", url, true);
    myRequest.onreadystatechange = function()
		{
		    
				if(myRequest.readyState == 4)
				{
						
						if(myRequest.status == 200)
						{
		                   
		            // get array of currently active searches
								var searches = myRequest.responseXML.getElementsByTagName('search');
		            
		            // search ID as required in xhtml page
								var xhtmlSearchID = "s-" + selectedSearchID;

								// get index of the current search ID from the searchIDsArray array
								//var idIndex = searchIDsArray(searches).indexOf(selectedSearchID);
								
								/* get index of the current search ID from the searchIDsArray array
								replicates indexOf for IE bug - cannot use indexOf with strings!!!*/
								var idIndex = xbIndexOf(searchIDsArray(searches), selectedSearchID);
								
								switch ( searchaction )
								{
									case 's-subscribe' : 
										// test to see if any searches array is empty
										if(searches.length == 0)
										{
											//if empty, delete search(es) and replace with text
											deleteSearch(xhtmlSearchID,searches);
										}
										// test to see if the selected search exists
										if(idIndex == -1)
										{
											//delete search and re-set default search and default onclick actions
											deleteSearch(xhtmlSearchID,searches,searchaction);
										}
										else
										{
											var searchContainer = document.getElementById(xhtmlSearchID);
											var actionsLi = searchContainer.getElementsByTagName("li");
											for (i=0; i < actionsLi.length; i++) 
											{
												if (actionsLi[i].className == "s-subscribe")
												{
													actionsLi[i].className = "s-unsubscribe";
													actionsLi[i].getElementsByTagName("a")[0].href = "/stags/ajax/savedsearch/unsubscribe/" + selectedSearchID;
													var newAnchorText = document.createTextNode("Unsubscribe");
													var oldAnchorText = actionsLi[i].getElementsByTagName("a")[0].firstChild;
													actionsLi[i].getElementsByTagName("a")[0].setAttribute("title", "Unsubscribe to receive daily email updates for this saved search");
													actionsLi[i].getElementsByTagName("a")[0].replaceChild(newAnchorText, oldAnchorText);
													return;
												}
											}
										}
										break;
									case 's-unsubscribe' :
										// test to see if any searches array is empty
										if(searches.length == 0)
										{
											//if empty, delete search(es) and replace with text
											deleteSearch(xhtmlSearchID,searches);
										}
										// test to see if the selected search exists
										if(idIndex == -1)
										{
											//delete search and re-set default search and default onclick actions
											deleteSearch(xhtmlSearchID,searches,searchaction);
										}
										else
										{
											var searchContainer = document.getElementById(xhtmlSearchID);
											var actionsLi = searchContainer.getElementsByTagName("li");
											for (i=0; i < actionsLi.length; i++) 
											{
												if (actionsLi[i].className == "s-unsubscribe")
												{
													actionsLi[i].className = "s-subscribe";
													actionsLi[i].getElementsByTagName("a")[0].href = "/stags/ajax/savedsearch/subscribe/" + selectedSearchID;
													var newAnchorText = document.createTextNode("Subscribe");
													var oldAnchorText = actionsLi[i].getElementsByTagName("a")[0].firstChild;
													actionsLi[i].getElementsByTagName("a")[0].setAttribute("title", "Subscribe to receive daily email updates for this saved search");
													actionsLi[i].getElementsByTagName("a")[0].replaceChild(newAnchorText, oldAnchorText);
													return;
												}
											}
										}
										break;
									case 's-delete' :
										// test to see if any searches array is empty
										if(searches.length == 0)
										{
											//if empty, delete search(es) and replace with text
											deleteSearch(xhtmlSearchID,searches);
										}
										// test to see if the selected search exists
										else if(idIndex == -1)
										{
											//delete search and re-set default search and default onclick actions
											deleteSearch(xhtmlSearchID,searches,searchaction);
										}
										break;
									case 'setdefault' :
										// test to see if any searches array is empty
										if(searches.length == 0)
										{
											//if empty, delete search(es) and replace with text
											deleteSearch(xhtmlSearchID,searches);
										}
										// test to see if the selected search exists
										if(idIndex == -1)
										{
											//delete search and re-set default search and default onclick actions
											deleteSearch(xhtmlSearchID,searches,searchaction);
										}
										else
										{
											defaultSearch(searches,searchaction);
											setDefaultOnClickHandler();
										}
										break;
								}			// switch
								

						} // if status 200

				 } /// if ready state
				 
				 
		} // function
    myRequest.send(null);
}

function deleteSearch(xhtmlSearchID,searches,searchaction)
{
	// deletes selected search
	if (searches.length > 0)
	{
		var deletedSearch = document.getElementById(xhtmlSearchID);
		deletedSearch.parentNode.removeChild(deletedSearch);
		defaultSearch(searches,searchaction);
		setDefaultOnClickHandler();
		// update input#searchname value
		var nextSearchName = myRequest.responseXML.getElementsByTagName('profile')[0].getAttribute("next_searchname");
		var searchName = document.getElementById("searchname");
		searchName.value = nextSearchName;
		return;
	}
	// sets paragraph and text if no searches
	else
	{
		viewSearchContainer = document.getElementById("view-search-container");
		
		var l = viewSearchContainer.childNodes.length;
		for (var n=0; n < l; n++)
		{
			var ch = viewSearchContainer.firstChild;
			viewSearchContainer.removeChild(ch);
		}    
		var newPara = document.createElement("p");
		var newText = document.createTextNode("You have not saved any searches");
		newPara.appendChild(newText);
		viewSearchContainer.appendChild(newPara);
		return;
	}
}

/* Creates an array of search id's from the returned searches in the xml */
function searchIDsArray(searches)
{
	var sid = [];
	for (cs=0; cs < searches.length; cs++)
	{
		var currentID = searches[cs].getAttribute("id");
		sid.push(currentID);
	}
return sid;
}

function xbIndexOf(array, testValue)
{
	var index = '-1';
	if(array.length > 0)
	{
		for (ai=0;ai < array.length; ai++)
		{
			if(array[ai] == testValue)
			{
				index = ai;
			}
		}
	}
	return index;
}

function defaultSearch(searches,searchaction)
{
	//loop through searches array
	for (i=0; i < searches.length; i++) 
	{
		
			var currentReturnedSearch = searches[i].getAttribute("id");
			// check to see if returned search in xml	is the default				
			if (searches[i].getAttribute("default") == '1') 
			{															
					xhtmlSearchID = 's-' + currentReturnedSearch;
					// if search returned == search returned in xml, remove children from p.setdefault and replace with text, 'Default search'

					var searchContainer = document.getElementById(xhtmlSearchID);
					var actionsPara = searchContainer.getElementsByTagName("p");
					for (j=0;j < actionsPara.length; j++)
					{
						if (actionsPara[j].className == 'setdefault')
						{
							
							var l = actionsPara[j].childNodes.length;
							for (var n=0; n < l; n++) 
							{
								var ch = actionsPara[j].firstChild;
								actionsPara[j].removeChild(ch);
							}
							var newText = document.createTextNode("Default search");
							actionsPara[j].appendChild(newText);
						}
					}
			}
			
			else
			{
					// check other searches and change p.setdefault to have anchor
					currentXhtmlSearchID = 's-' + currentReturnedSearch;
					var searchContainer = document.getElementById(currentXhtmlSearchID);
					var actionsPara = searchContainer.getElementsByTagName("p");
					for (j=0;j < actionsPara.length; j++)
					{
						if (actionsPara[j].className == 'setdefault')
						{
							
							var l = actionsPara[j].childNodes.length;
							for (var n=0; n < l; n++) 
							{
								var ch = actionsPara[j].firstChild;
								actionsPara[j].removeChild(ch);
							}
							var setDefaultUrl = sbase + "/" + "savedsearch/default/" + currentReturnedSearch + "/results";
							
							var newAnchor = document.createElement("a")
									newAnchor.setAttribute("href", setDefaultUrl);
									newAnchor.setAttribute("title", "Set this as the default search");
							var newAnchorText = document.createTextNode("Set as default search");
									newAnchor.appendChild(newAnchorText);
									actionsPara[j].appendChild(newAnchor);
									
						}
					}
			}

	} // for 
}