
function observeAddItemsToTrip() {


    try {
        var items = document.getElementsByClassName("tripAddLink");
        items.each(function(item) {
            item.observe("click", function(ev) {
                Event.stop(ev);
                addItemToTrip(item.id);
            });
        });
    } catch(ex) {
        alert("ERROR: observeAddItemsToTrip" + ex);
    }


}

function fetchError(request) {
	hideSpinner();
	alert('ERROR:' + request);
}

function removeItemFromTrip(id) {

    var updateDiv = "bucketWrapper";
    var url = "/ajax/removeFromTrip.ha";
    var params =  "mainInfoId=" + id + "&sType=browsesites";

    var ajaxParams = { method: 'post', parameters: params, onComplete: addItemComplete, onFailure: fetchError, evalScripts: true };
    new Ajax.Updater( updateDiv , url, ajaxParams);


}

/* I don't think we're using this.
* I think the add is in the details.js file attached.
*
function addItemToTrip(id) {

    function addItemComplete() {
        var link = $(id);
        var parentN = link.parentNode;

        parentN.innerHTML = "<a href='removeItemFromTrip(" + id + ")'>remove</a>";

    }


  // alert("add to trip: " + id);

    var updateDiv = "bucketWrapper";
    var url = "/ajax/addToTrip.ha";
    var params =  "mainInfoId=" + id + "&sType=browsesites";

    var ajaxParams = { method: 'post', parameters: params, onComplete: addItemComplete, onFailure: fetchError, evalScripts: true };
	new Ajax.Updater( updateDiv , url, ajaxParams);

}
*/

/*
* Prototype API
* Used to expand and contract the criteria lists
* when first called, it shows the moreListItems, hides the moreLink, and shows the lessLink
* next call does the opposite using prototypes toggle function.
*/
function moreFilterList(element) {
	$(element).getElementsByClassName('moreListItem').invoke('toggle');
	$(element).getElementsByClassName('lessLink').invoke('toggle');
	$(element).getElementsByClassName('moreLink').invoke('toggle');
}


function showPopup(windowName, popupHeight, popupWidth) {

	document.getElementById(windowName).style.display = "block";
	var documentHeight = document.documentElement.clientHeight;
	var documentWidth = document.body.clientWidth;
	if(documentHeight == "0") {
		documentHeight = "768";
	}
	var topPos = (documentHeight - popupHeight)/2 + parseInt(getScrollY());
	var leftPos = (documentWidth - popupWidth)/2;

	document.getElementById(windowName).style.top = topPos + "px";
	document.getElementById(windowName).style.left = leftPos + "px";

}

function getScrollY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
	{
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfY ];
}

function closePopup(windowName) {
	document.getElementById(windowName).style.display = "none";
}

//var geocoder = new GClientGeocoder();
var address;
var searchPoint;

var street;
var cityStateZip;

var locationForm;
var locationDisplay;

var ldStreet;
var ldCityStateZip;

function observeLocationForm() {

    locationDisplay = $("locationDisplay");
    ldStreet = $("displayStreet");
    ldCityStateZip = $("displayCityStateZip");
    locationForm = $("locationForm");

    locationDisplay.hide();

    locationForm.observe("submit", function(ev) {
        Event.stop(ev);
        addressSearch();
    });
    
}



function addressSearch() {

    resetSearchForm();
    showSpinner();

    searchPoint = null;

    street = locationForm.street.value;
    cityStateZip = locationForm.cityStateZip.value;

    address = "";
    if(street != "") {
        address = street;
    }

    if(cityStateZip == "") {
        alert("City, State or Postal Code is required.");
        return;
    }

    address = street + " " + cityStateZip;

    geocoder.getLatLng( address, handleAddressSearch );

    ldStreet.innerHTML = street;
    ldCityStateZip.innerHTML = cityStateZip;

    locationForm.hide();
    locationDisplay.show();


}



function mainInfoFetchComplete() {
    hideSpinner();
}

function mainInfoFilter(params) {

    showSpinner();

    var searchForm = $("searchForm");

    var updateDiv = "itemList";

    var url = "/browse/ajax/listItems.ha";

    params += "&type=" + itemType;

    var ajaxParams = { method: 'post', parameters: params, onFailure: fetchError, onComplete: mainInfoFetchComplete, evalScripts: true };
	new Ajax.Updater( updateDiv , url, ajaxParams);

}

function handleAddressSearch(point) {

    if (!point) {
        alert("Address: '" + address + "' not found");
        hideSpinner();
    } else {
        searchPoint = point;

    }

    var params = "latitude=" + searchPoint.lat() +
                "&longitude=" + searchPoint.lng() +
                "&distanceSort=true" +
                "&searchPointStr=" + address +
                "&street=" + street +
                 "&cityStateZip=" + cityStateZip + 
                 "&type=" + itemType;


   document.location = "?" + params; 

    //mainInfoFilter(params);

}


function resetSearchForm() {
    var searchForm = $("searchForm");
    searchForm.query.value = "";
}


function editLocation() {

    locationDisplay.hide();
    locationForm.show();

}


function showSpinner() {


    var sp = $("spinner");

    try {
        var innerHeight;
        var pageYOffset;
        if (window.innerHeight) {
            innerHeight = window.innerHeight;
            pageYOffset = window.pageYOffset;
        } else {
            innerHeight = document.body.clientHeight;
            pageYOffset = document.documentElement.scrollTop;
        }

        var spTop = (innerHeight / 2 - 40) + pageYOffset;
        sp.style.position = "absolute";
        sp.style.left = "450px";
        sp.style.top = spTop + "px";
        sp.style.display = "block";
    } catch(ex) {
        alert("SPINNER ERROR: " + ex);
    }

}

function hideSpinner() {
   var sp = $("spinner");
    sp.style.display = "none";
}