
function createRequestObject() {

   var req;
   if(window.XMLHttpRequest){
      req = new XMLHttpRequest();
   } else if(window.ActiveXObject) {
      req = new ActiveXObject("Microsoft.XMLHTTP");
   } else {
      alert('Problem creating the XMLHttpRequest object');
   }

   return req;

}

function handleDivTag(divtag){
    var divtag;
    return divtag;
}

var http = createRequestObject();
var divhandler = new handleDivTag(null);
var gallRight;

function getSelectBox(type, value) {
   var url = '/scripts/ajax/newSelect.php?select='+type+'&value='+value;
   http.open('get', url);
   http.onreadystatechange = handleResponse;
   divhandler.divtag = type+'Box';
   http.send(null);
}

function getAlertSelectBox(type, value, id) {
   var url = '/scripts/ajax/newAlertSelect.php?select='+type+'&value='+value+'&i='+id;
   http.open('get', url);
   http.onreadystatechange = handleResponse;
   divhandler.divtag = type+'Box'+id;
   http.send(null);
}

function showMap(type, idx, title){
   gallRight = document.getElementById('gallRight').innerHTML;
   var url = '/scripts/ajax/show_map.php?idx='+idx+'&type='+type;
   http.open('get', url);
   http.onreadystatechange = handleResponse;
   divhandler.divtag = 'gallRight';
   http.send(null);
}

function tourPhotoSwap(dir, tour_idx){
   show = resBoxCookie();
   var url = '/scripts/ajax/tour_photo_swap.php?tour_idx='+tour_idx+'&dir='+dir+'&show='+show;
   http.open('get', url);
   http.onreadystatechange = handleResponse;
   divhandler.divtag = 'tourDetails';
   http.send(null);
}

function hideMap(type, idx, title){
   document.getElementById('gallRight').innerHTML = gallRight;
   document.getElementById('lrgMap').style.display = 'none';
   document.getElementById('sortTours').style.display = '';
}

function showLrgMap(){
   var status = document.getElementById('lrgMap').style.display;
   if(status == 'none'){
   		document.getElementById('lrgMap').style.display = '';
	    document.getElementById('sortTours').style.display = 'none';
   }else{
   		document.getElementById('lrgMap').style.display = 'none';
	    document.getElementById('sortTours').style.display = '';
   }
}

function getGalleryPhoto(keyword,country,category,pictures_per_page,photo_idx,dir,current_page,total_pages){
   var url = '/scripts/ajax/gallery_photo_swap.php?keyword='+keyword+'&country='+country+'&category='+category+'&pictures_per_page='+pictures_per_page+'&photo_idx='+photo_idx+'&dir='+dir+'&current_page='+current_page+'&total_pages='+total_pages;
   http.open('get', url);
   http.onreadystatechange = handleResponse;
   divhandler.divtag = 'gallery';
   http.send(null);
}

function displayOptions(regions_idx, sort, interests ,country,tour_types_idx){
  if(document.getElementById('display_options').style.display == 'none'){
    document.getElementById('displayOptionsLink').innerHTML = '<img style="cursor:pointer" src="/images/displayOptionsHeader.gif" />';
    document.getElementById('display_options').style.display = '';
    //Get Contents
    var url = '/scripts/ajax/display_options.php?regions_idx='+regions_idx+'&sort='+sort+'&interests='+interests+'&country='+country+'&tour_types_idx='+tour_types_idx;
    http.open('get', url);
    http.onreadystatechange = handleResponse;
    divhandler.divtag = 'display_options';
    http.send(null);
  }else{
    document.getElementById('display_options').style.display = 'none';
    document.getElementById('displayOptionsLink').innerHTML = '<img style="cursor:pointer" src="/images/displayOptionsHeaderOff.gif" />';
  }
}

function post_picture(idx) {
   var url = '/gallery/members/post_picture.php?idx='+idx;
   http.open('get', url);
   http.onreadystatechange = toggleCheck;
   divhandler.divtag = idx;
   http.send(null);
}

function handleResponse() {

   if(http.readyState == 4 && http.status == 200){
      var response = http.responseText;
      if(response){
         document.getElementById(divhandler.divtag).innerHTML = response;
	  }
   }
}

function toggleCheck() {

   if(http.readyState == 4 && http.status == 200){
      var response = http.responseText;
      if(response == 1)
         document.getElementById(divhandler.divtag).value = 1;
	  else
         document.getElementById(divhandler.divtag).value = 0;
   }

}


var startList = function() {
  if (document.all&&document.getElementById) {
    function menulist(navRoot) {
      var i, node;
      if ( typeof ( navRoot ) != 'undefined' ) {
        for (i=0; i<navRoot.childNodes.length; i++) {
          node = navRoot.childNodes[i];
          if (node.nodeName=="UL") {
            menulist(node);
          }
          if (node.nodeName=="LI") {
            menulist(node);
            node.onmouseover=function() {
              for (var j=0; j<this.childNodes.length; j++) {
                inode = this.childNodes[j];
                if ( inode.nodeName=="UL" || inode.nodeName=="H2" ) { inode.className += " over"; }
              }
            }
            node.onmouseout=function() {
              for (var j=0; j<this.childNodes.length; j++) {
                inode = this.childNodes[j];
                if ( inode.nodeName=="UL" || inode.nodeName=="H2" ) { inode.className=this.className.replace(" over", ""); }
              }
            }
          }
        }
      }
    }
    var navRoot = document.getElementById('main_nav');
    if(navRoot){
      menulist(navRoot);
    }
  }
}

var _site_onload_handlers = [];
function add_onload(func) {
    _site_onload_handlers[_site_onload_handlers.length] = func;
}
window.onload = function() {
    for ( var i = 0; i < _site_onload_handlers.length; i++ ) {
        var func = _site_onload_handlers[i];
        if ( typeof( func ) == 'function' ) {
            func();
        } else if ( typeof( func ) == 'string' ) {
            eval( func );
        }
    }
}

function getCookieValue(cookie_name) {
	var cookie_value = undefined;
	var cookie_start = document.cookie.indexOf(cookie_name + '=');
	if (cookie_start != -1) {
		var cookie_end = document.cookie.indexOf(';', cookie_start);
		if (cookie_end == -1) {
			cookie_end = document.cookie.length;
		}
		cookie_value = document.cookie.substring(cookie_start + cookie_name.length + 1,
				cookie_end);
		cookie_value = unescape(cookie_value);
		try {
			cookie_value = eval(cookie_value);
		} catch (e) {
			//just leave the value as a string if it doesn't eval
		}
	}
	return cookie_value;
}

function setCookieValue(cookie_name, cookie_value, expire_date) {
	document.cookie = cookie_name + '=' + escape(cookie_value)
			+ ';expires=' + expire_date.toGMTString()
			+ ';path=/';
	return true;
}

function ppr(obj, recursed) {
	document.write('' + obj + "\n");
	if (!recursed) {
		recursed = [];
	}
	if (recursed.indexOf(obj) != -1) {
		document.write("<b>recursion</b>\n");
	} else if (typeof(obj) == 'object') {
		recursed.push(obj);
		document.write('<pre style="margin: 1em;">');
		for (var mem in obj) {
			document.write(mem + ' => ');
			ppr(obj[mem], recursed)
		}
		document.write('</pre>');
	}
}

function validateEmail() {
	var email = document.getElementById('email').value;
	if ( email.match(/^[\w\._\-]+@[\w\.\-]+\.[\w\.\-]+$/)) {
		return true;
	}else{
		alert('Please enter a valid email address.');
		return false;
	}
}

var smjr_foresee_shown = null;
var smjr_foresee_loaded = false;
var smjr_foresee_active = true;
/**
 * Check if the foresee functions are running
 *
 * Returns true if the check completes, false if the foresee has not yet loaded
 */
function isForeseeLoaded() {
	if (window.foresee
			&& window.foresee.isAlreadyShown
			&& smjr_foresee_shown == null) {
		//save this at beginning so it won't change when the foresee loads
		smjr_foresee_shown = window.foresee.isAlreadyShown();
	}
	if (!smjr_foresee_loaded) {
		if (window.foresee
				&& window.foresee.triggerParms
				&& window.foresee.triggerParms.displayMode
				&& window.foresee.isAlreadyShown
				&& !smjr_foresee_shown
				&& window.foresee.fsrIsCookieEnabled
				&& window.foresee.fsrIsCookieEnabled()) {
			if (window.foresee.rNum) {
				smjr_foresee_loaded = true;
				smjr_foresee_active = (window.foresee.fsrReadCookie(window.foresee.ckLoyaltyCount)
							>= window.foresee.triggerParms.lf)
						&& (window.foresee.rNum <= window.foresee.triggerParms.sp);
			} else {
				smjr_foresee_loaded = false;
			}
		} else {
			smjr_foresee_loaded = true;
			smjr_foresee_active = false;
		}
	}
	return smjr_foresee_loaded;
}
/**
 * Check if the foresee functions are active
 *
 * Returns true if the functions are active or have not yet loaded
 */
function isForeseeActive() {
	return smjr_foresee_active;
}

function addLeavingEvents(ev, path, remove, add, tour) {
	if (!path) {
		path = '/reservations/';
	}
	if (!remove) {
		remove = 'bookmark_remove_link';
	}
	if (!add) {
		add = 'bookmark_add_link';
	}
	if (!tour) {
		tour = 'reservation_filename';
	}
	// find all links on the page
	var links = document.getElementsByTagName('A');
	for (var i = 0; i < links.length; i++) {
		// only change links with location but no event
		if (!links[i].onclick
				&& links[i].href
				&& links[i].href.search('javascript:') != 0
				&& links[i].pathname.search(path) != 0) {
			// open the layer instead of following link
			links[i].onclick = function(e) {
				var href = e.currentTarget.href;
				var filename = document.getElementById(tour);
				if (filename && filename.innerHTML) {
					filename = filename.innerHTML;
				} else {
					filename = '';
				}
				window.location.href = '#';
				return !openLayerNow(2, function(transport) {
					// use link href as button redirect
					var remove_link = document.getElementById(remove);
					var add_link = document.getElementById(add);
					if (remove_link && remove_link.href) {
						remove_link.href += escape(href);
					}
					if (add_link && add_link.href) {
						add_link.href += escape(filename);
					}
				}, function(transport) {
					// go straight to link if layer didn't load
					window.location.href = href;
				});
			}
		}
	}
}

window.add_onload(startList);


