$import                     = function(script){document.write("<script type=\"text/javascript\" src=\""+script+"\"></script>");}

String.prototype.beginsWith = function(string){return(this.indexOf(string)==0);};
String.prototype.endsWith   = function(string){return((this.length>0)&&((this.lastIndexOf(string)+string.length)==this.length));};
String.prototype.trim       = function(){return(this.replace(/^\s+|\s+$/g,""));};

String.prototype.encode64   = function(){var base64="";var chars=new Array(3);var encodings=new Array(4);var i=0;do{chars[0]=this.charCodeAt(i++);chars[1]=this.charCodeAt(i++);chars[2]=this.charCodeAt(i++);encodings[0]=chars[0]>>2;encodings[1]=((chars[0]&3)<<4)|(chars[1]>>4);encodings[2]=((chars[1]&15)<<2)|(chars[2]>>6);encodings[3]=chars[2]&63;if(isNaN(chars[1])){encodings[2]=encodings[3]=64;}else if(isNaN(chars[2])){encodings[3]=64;}base64+=BASE_64.charAt(encodings[0])+BASE_64.charAt(encodings[1])+BASE_64.charAt(encodings[2])+BASE_64.charAt(encodings[3]);}while(i<this.length);return(base64);}
String.prototype.decode64   = function(){var base64="";var chars=new Array(3);var encodings=new Array(4);var i=0;input=this.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{encodings[0]=BASE_64.indexOf(input.charAt(i++));encodings[1]=BASE_64.indexOf(input.charAt(i++));encodings[2]=BASE_64.indexOf(input.charAt(i++));encodings[3]=BASE_64.indexOf(input.charAt(i++));chars[0]=(encodings[0]<<2)|(encodings[1]>>4);chars[1]=((encodings[1]&15)<<4)|(encodings[2]>>2);chars[2]=((encodings[2]&3)<<6)|encodings[3];base64+=String.fromCharCode(chars[0]);if(encodings[2]!=64){base64+=String.fromCharCode(chars[1]);}if(encodings[3]!=64){base64+=String.fromCharCode(chars[2]);}}while(i<input.length);return(base64);}

// import GUI components
$import("./scripts/UI.js");

var BASE_URI;
var BASE_64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

window.onload = function()
{
 if(document.getElementsByTagName("base")[0] != null)
  BASE_URI = document.getElementsByTagName("base")[0].href;

 if(document.getElementById("search-form") != null)
 {
  var searchForm = new UI.Form("search-form");
      searchForm.addEventHandler("onsubmit", searchHandler);
 }

 var navigationMenu = new UI.Menu("primary-navigation");
     navigationMenu.add(new UI.Menu.MenuItem("home"));
     navigationMenu.add(new UI.Menu.MenuItem("monitoring"));
     navigationMenu.add(new UI.Menu.MenuItem("tracking"));
     navigationMenu.add(new UI.Menu.MenuItem("bird-gallery"));
     navigationMenu.add(new UI.Menu.MenuItem("project-info"));
     navigationMenu.add(new UI.Menu.MenuItem("partner"));
     navigationMenu.add(new UI.Menu.MenuItem("contact"));

 setNavigationMenuHandlers = function(menuItems)
 {
  if(menuItems == null)
   menuItems = navigationMenu.getMenuItems();

  for(var i = 0; i < menuItems.length; i++)
  {
   menuItems[i].addEventHandler("onmouseover", menuHandler);
   menuItems[i].addEventHandler("onmouseout",  menuHandler);
  }
 }
 setNavigationMenuHandlers();

 var anchors = document.getElementsByTagName("a"); 
 for(var i = 0; i < anchors.length; i++)
 {
  if(anchors[i].getAttribute("href") &&
    (anchors[i].getAttribute("rel") == "external" || anchors[i].getAttribute("rel") == "map")) 
   anchors[i].target = "_blank";
 }

 ImageViewer.load("thumbnail");
 ImageViewer.load("gallery-image");
 ImageViewer.addEventHandler("onclick", thumbnailHandler);
}

searchHandler = function(source, event)
{
 return false;
}

menuHandler = function(source, event)
{
 var pageSelectorId = document.getElementsByTagName("body")[0].id;
 if(pageSelectorId.endsWith(source.getId()))
  return;

 var selector = source.getComponent().getElementsByTagName("div")[0];
 if(selector.className == "selector" || selector.className == "multi-line-selector")
 {
  if(selector.style.visibility != "visible")
   selector.style.visibility = "visible";
  else
   selector.style.visibility = "hidden";
 }
}

function thumbnailHandler(source, event)
{
 var thumbnail = source.src;

 var image = thumbnail

 /***** BEGIN Fix (IE) *****/
 image  = image.replace(/%20/g, " ");
 /***** END Fix (IE) *****/

 /***** BEGIN Fix (ALL: relative paths) *****/
 image = image.substring(0, image.lastIndexOf("/") + 1) + "_" + image.substring(image.lastIndexOf("/") + 1);
 /***** END Fix (ALL: relative paths) *****/

 var queryString = "image=" + image;
// var viewer = "./scripts/viewer.htm?" + queryString.encode64();

 /***** BEGIN Fix (IE) *****/
 if(Browser.isIE())
  window.open("./scripts/viewer.htm?" + queryString.encode64(), "", "left=0,top=0");
 else
  window.open("./scripts/viewer.htm?" + queryString.encode64(), "", "left=0,top=0,scrollbars=yes");
 /***** END Fix (IE) *****/
}
