///////////
// IMAGE //
///////////

function showImage(imgtag) {
  //alert('showImage='+imgtag.src);
  var filename = str = imgtag.src.substr(imgtag.src.lastIndexOf("/")+1);
  if (filename == 'blank.gif') {
     //alert('clicked on nothing!');
     return;
  }
  
  //alert('filename='+filename);
  var url="explorerToolAjax?action=image&filename="+filename+"&random="+Math.random();
  http.open('get', url);
  http.onreadystatechange = handleResponseShowImage;
  http.send(null);
}

function handleResponseShowImage() {
  if(http.readyState == 4){
    var response = http.responseText;
    //alert('response='+response);
    
    // code for IE
	if (window.ActiveXObject)
	  {
	  var doc=new ActiveXObject("Microsoft.XMLDOM");
	  doc.async="false";
	  doc.loadXML(response);
	  }
	// code for Mozilla, Firefox, Opera, etc.
	else
	  {
	  var parser=new DOMParser();
	  var doc=parser.parseFromString(response,"text/xml");
	  }

	 var x=doc.documentElement;
    
    document.getElementById('big').src='image_database/480x320/'+x.getAttribute('filename');
    document.getElementById('big').onclick = function () {imageOnClick(x.getAttribute('filename'),x.getAttribute('width'),x.getAttribute('height'))}
    document.getElementById('imageName').innerHTML = x.getAttribute('name');
    document.getElementById('imageDescription').innerHTML = x.getAttribute('description');
	document.getElementById('imageRelatedPages').innerHTML='';
    
    var links = x.firstChild;
    
    var countrytext  = '';
    var holidaytext = '';
    
    //alert('about to do links');
    for (i=0;i<links.childNodes.length;i++) {
      var link = links.childNodes[i];
      if (link.getAttribute('type') == 'holiday') { 
        holidaytext=holidaytext+'<li><a href="'+link.getAttribute('url')+'">'+link.getAttribute('name')+'</a></li>';
      }
      if (link.getAttribute('type')=='country') { 
        countrytext=countrytext+'<li><a href="'+link.getAttribute('url')+'">'+link.getAttribute('name')+'</a></li>';
      }
    }     

    var totaltext= '';
    if (holidaytext.length>0)
    	totaltext=totaltext+'<strong>Itineraries</strong><ul>'+holidaytext+'</ul>';
    if (countrytext.length>0)
       	totaltext=totaltext+'<strong>Countries</strong><ul>'+countrytext+'</ul>';
    
    document.getElementById('imageRelatedPages').innerHTML=totaltext;
    
  }
}

/////////////
// SEARCH  //
/////////////

function doSearch() {

  //alert('show gallery');

  var metadata_var = document.getElementById('metadata').value;

  var webpage_id_var = null;

  var itin = document.getElementById("search_holiday").value;
  var country = document.getElementById("search_country").value;
  var region = document.getElementById("search_region").value;
  var site = document.getElementById("search_site").value;

  //alert("itin:"+itin)
  //alert("country:"+country);  
  //alert("region:"+region);  

  if (itin.length>0 && !(itin==null) && !(itin=='null') && !(itin=='ALL')) {
    //alert("*itin set*");
    webpage_id_var = itin;
  }
  else if (country.length>0 && !(country==null) && !(country=='null') && !(country=='ALL')) {
    //alert("*country set*");  
    webpage_id_var = country;
  }
  else if (region.length>0 && !(region==null) && !(region=='null') && !(region=='ALL')) {
    //alert("*region set*");  
    webpage_id_var = region;
  }
  else if (site.length>0 && !(site==null) && !(site=='null') && !(site=='ALL')) {
    //alert("*site set*");  
    webpage_id_var = site;
  }
  else {
    //alert("*all sites set*");  
    webpage_id_var = 1;
  }

  var url="explorerToolAjax?action=search&id="+webpage_id_var+"&metadata="+metadata_var+"&size="+size+"&random="+Math.random();
  //alert("showGallery:url="+url);
  http.open('get', url);
  http.onreadystatechange = handleGalleryResponse;
  http.send(null);

}

function handleGalleryResponse() {

  //alert("handleGalleryResponse");

  if(http.readyState == 4){
    var response = http.responseText;
    //alert('response='+response);
    if (response.length>0) {
    
    //alert('response='+response);
    // code for IE
	if (window.ActiveXObject)
	  {
	  var doc=new ActiveXObject("Microsoft.XMLDOM");
	  doc.async="false";
	  doc.loadXML(response);
	  }
	// code for Mozilla, Firefox, Opera, etc.
	else
	  {
	  var parser=new DOMParser();
	  var doc=parser.parseFromString(response,"text/xml");
	  }

	var x=doc.documentElement;
    
    var begin = x.getAttribute('begin');
    var listsize = x.getAttribute('listsize');
    
    document.getElementById('begin').value=begin;
    document.getElementById('listsize').value=listsize;    
    document.getElementById('pageinfo').innerHTML='Page&nbsp;&nbsp;'+(1+(begin/size))+'&nbsp;&nbsp;of&nbsp;&nbsp;'+(Math.round((listsize/size)+0.5))+'&nbsp;&nbsp;&nbsp;('+listsize+' images)';
    
    for (i=0;i<24;i++) {
    	//alert('i='+i);
    	document.getElementById('i'+(i+1)).src='images/blank.gif';
    }
    
	//load the gallery src attributes
	for (i=0;i<24;i++) {
    	//alert('i='+i);
      if (i<x.childNodes.length) {
	  var srcval = 'image_database/110x110/'+x.childNodes[i].getAttribute('filename');
 	  //var onclickval = x.childNodes[i].getAttribute('id');
 	  //alert('onclickval='+onclickval);
 	  document.getElementById('i'+(i+1)).src=srcval;
      }
	}
     
    if  (document.getElementById('big').src == '' || document.getElementById('big').src==null)
        showImage(document.getElementById('i1'));   
          
  }
  }
  
}

/////////////
// PAGE    //
/////////////

function doPage(delta) {

  //alert('show gallery');

  var begin_var_string = document.getElementById('begin').value;
  //alert("*begin_var_string="+begin_var_string);
  var begin_var = parseInt(begin_var_string);
  //alert("**begin_var="+begin_var);
  if (isNaN(begin_var))
     begin_var=0;
  //alert("***begin_var="+begin_var);

  var listsize = parseInt(document.getElementById("listsize").value);
  //alert("listsize="+listsize);

  //alert("begin_var_orig="+begin_var);
  begin_var=0+begin_var+delta;		
  //alert("begin_var_postdelta="+begin_var);
  
  if (begin_var>=0 && begin_var<listsize) {
	  var url="explorerToolAjax?action=page&begin="+begin_var+"&size="+size+"&random="+Math.random();
	  //alert("showGallery:url="+url);
	  http.open('get', url);
	  http.onreadystatechange = handleGalleryResponse;
	  http.send(null);
  }
  else {
  	  //alert('cannot page');
  }

}

///////////////
// DROPDOWNS //
///////////////

function changeDropDowns(id) {
  var url="explorerToolAjax?action=dropdown&id="+id+"&random="+Math.random();
  http.open('get', url);
  http.onreadystatechange = handleDropDownResponse;
  http.send(null);
}

function handleDropDownResponse() {
  if(http.readyState == 4){
  
    var response = http.responseText;
    //alert('response='+response);
    // code for IE
	if (window.ActiveXObject)
	  {
	  var doc=new ActiveXObject("Microsoft.XMLDOM");
	  doc.async="false";
	  doc.loadXML(response);
	  }
	// code for Mozilla, Firefox, Opera, etc.
	else
	  {
	  var parser=new DOMParser();
	  var doc=parser.parseFromString(response,"text/xml");
	  }

	var x=doc.documentElement;
    
    //iterate over the lists
    //alert('x.childNodes.size='+x.childNodes.length);
    var allNode = 1;
    for (i=0;i<x.childNodes.length;i++) {
      var list = x.childNodes[i];
      //alert(list.getAttribute('name'));
      var li = document.getElementById('search_'+list.getAttribute('name'));
      li.length=0;
      li.options[0]=new Option("All",allNode);
      
      for (z=0;z<list.childNodes.length;z++) {
        var item = list.childNodes[z];
        //alert(item.getAttribute('name'));
        li.options[z+1]=new Option(item.getAttribute("name"),item.getAttribute("id"));
        if (item.getAttribute("selected")=='selected') {
	        li.options[z+1].selected = true;
	        allNode = item.getAttribute("id");
	     }
      }
    }     
	     
  }
}

//////////
// MISC //
//////////

var size = 24;

function init() {

  document.getElementById('search_submit').onclick = function() { doSearch(null); }
  document.getElementById('next').onclick = function() { doPage(size); }
  document.getElementById('prev').onclick = function() { doPage(-size); }
  document.getElementById('search_site').onchange = function() { changeDropDowns(document.getElementById('search_site').value); }
  document.getElementById('search_region').onchange = function() { changeDropDowns(document.getElementById('search_region').value); }
  document.getElementById('search_country').onchange = function() { changeDropDowns(document.getElementById('search_country').value); }

}

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function getURLParam(strParamName){
    //alert('window.location.search.length='+window.location.search.length);
    if (window.location.search.length==0)
      return null;
	var ary=window.location.search.substr(1).split("&");
	for (i=0;i<ary.length;i++) {
		ary[i]=ary[i].split("=");
		//alert('ary[i]='+ary[i]);
	}
	var qStr=new Array();
	for (i=0;i<ary.length;i++) {
		ary[i][0]=ary[i][0].replace(/\+/g," ");
		ary[i][0]=unescape(ary[i][0]);
		ary[i][1]=ary[i][1].replace(/\+/g," ");
		ary[i][1]=unescape(ary[i][1]);
		qStr[ary[i][0]]=ary[i][1];
	}
  
return qStr[strParamName];
}

addLoadEvent(function() {
  init();
  var webpage_id = getURLParam('webpage_id');
  //alert('webpage_id='+webpage_id);
  
  if (webpage_id != null) {
	 changeDropDowns(webpage_id);
     setTimeout("doSearch();",1000);   
  }
  else {
     changeDropDowns(999999);
     setTimeout("doSearch();",1000);   
  }
  
});

function imageOnClick(filename,width,height) {
      window.open('image_database/'+filename, 'xseanx', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width='+width+',height='+height+'\'');

}