/*
Created By: Chris Campbell
Website: http://particletree.com
Date: 2/1/2006

Inspired by the lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
*/

/*-------------------------------GLOBAL VARIABLES------------------------------------*/

var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;

/*-----------------------------------------------------------------------------------------------*/

//Browser detect script origionally created by Peter Paul Koch at http://www.quirksmode.org/
var activated = false;

function getBrowserInfo() {
	if (checkIt('konqueror')) {
		browser = "Konqueror";
		OS = "Linux";
	}
	else if (checkIt('safari')) browser 	= "Safari"
	else if (checkIt('omniweb')) browser 	= "OmniWeb"
	else if (checkIt('opera')) browser 		= "Opera"
	else if (checkIt('webtv')) browser 		= "WebTV";
	else if (checkIt('icab')) browser 		= "iCab"
	else if (checkIt('msie')) browser 		= "Internet Explorer"
	else if (!checkIt('compatible')) {
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";

	if (!version) version = detect.charAt(place + thestring.length);

	if (!OS) {
		if (checkIt('linux')) OS 		= "Linux";
		else if (checkIt('x11')) OS 	= "Unix";
		else if (checkIt('mac')) OS 	= "Mac"
		else if (checkIt('win')) OS 	= "Windows"
		else OS 								= "an unknown operating system";
	}
}

function checkIt(string) {
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

/*-----------------------------------------------------------------------------------------------*/
//var L = jQuery.noConflict();
//window.onload = _J(document).ready(function() {
//$(document).ready(function() {
//jQuery.noConflict();
//jQuery(document).ready(function(){
//  initialize();
//  getBrowserInfo();
//});
//    //Event.observe(window, 'load', initialize, false);
    //Event.observe(window, 'load', getBrowserInfo, false);
    Event.observe(window, 'unload', Event.unloadCache, false);

  var lightbox = Class.create();
  var pageid;

  lightbox.prototype = {

   yPos: 0,
   xPos: 0,

   initialize: function(ctrl) {
    this.content = ctrl.href;
    this.type = ctrl.rel;
    Event.observe(ctrl, 'click', this.activate.bindAsEventListener(this), false);
    ctrl.onclick = function() { return false; };
   },

   // Turn everything on - mainly the IE fixes
   activate: function() {
    if (browser == 'Internet Explorer') {
     this.getScroll();
     this.prepareIE('100%', 'hidden');
     this.setScroll(0, 0);
     this.hideSelects('hidden');
    }
    this.displayLightbox("block");
   },

   // Ie requires height to 100% and overflow hidden or else you can scroll down past the lightbox
   prepareIE: function(height, overflow) {
    bod = document.getElementsByTagName('body')[0];
    bod.style.height = height;
    bod.style.overflow = overflow;

    htm = document.getElementsByTagName('html')[0];
    htm.style.height = height;
    htm.style.overflow = overflow;
   },

   // In IE, select elements hover on top of the lightbox
   hideSelects: function(visibility) {
    selects = document.getElementsByTagName('select');
    for (i = 0; i < selects.length; i++) {
     selects[i].style.visibility = visibility;
    }
   },

   // Taken from lightbox implementation found at http://www.huddletogether.com/projects/lightbox/
   getScroll: function() {
    if (self.pageYOffset) {
     this.yPos = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop) {
     this.yPos = document.documentElement.scrollTop;
    } else if (document.body) {
     this.yPos = document.body.scrollTop;
    }
   },

   setScroll: function(x, y) {
    window.scrollTo(x, y);
   },

   displayLightbox: function(display) {
    //set width and height for point of interest window
    // Feature was removed as per meeting with Kirsten on the 8th of July 2009
    //          if (this.type == "poi") {
    //            $('lightbox').style.width = "654px";
    //            $('lightbox').style.height = "193px";
    //            $('lightbox').style.top = "220px";
    //            $('lightbox').style.left = "117px";

    //            //reallocate close button
    //            $('contentClose').style.top = "208px";
    //            $('contentClose').style.left = "762px";
    //            //$('lightbox').className = "POI";
    // alert(this.type);
    //if (this.type == "newsletter") {
    //alert(window.location.hash.substring(window.location.hash.indexOf("pid") + 4));
    if (window.location.hash.substring(window.location.hash.indexOf("pid") + 4) == "248" || this.type == "newsletter") {
     //alert("this is newsletter");
     $('lightbox').style.width = "400px";
     $('lightbox').style.height = "350px";
     $('lightbox').style.top = "140px";
     $('lightbox').style.left = "235px";

     //reallocate close button
     $('contentClose').style.top = "128px";
     $('contentClose').style.left = "626px";
    }
    else {
     //alert("this is NOT");
     $('lightbox').style.width = "803px";
     $('lightbox').style.height = "378px";
     $('lightbox').style.top = "140px";
     $('lightbox').style.left = "47px";

     //reallocate close button
     $('contentClose').style.top = "126px";
     $('contentClose').style.left = "840px";
    }

    $('overlay').style.display = display;
    $('lightbox').style.display = display;

    //hide close button
    $('contentClose').className = "hidden";
    if (display != 'none') this.loadInfo();


    //stop back slider when LB is opened and not stopped via main page
    if (!activated && !autoSlideStopped) {
     //Animateobj is defined as a global variable in easySlider.js file
     Animateobj.Stop();
     activated = true;
     document.getElementById("btnStartTimer").className = '';
     document.getElementById("btnStopTimer").className = 'hidden';
    }
   },

   // Begin Ajax request based off of the href of the clicked linked
   loadInfo: function() {
    var myAjax = new Ajax.Request(
        this.content,
        { method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this) }
        );
    //Update Page Url
    pageid = this.content.substring(this.content.indexOf("=") + 1);
    window.location.hash = "#pid=" + pageid;
   },

   // Display Ajax response
   processInfo: function(response) {
    var info = "<iframe id='lbContent' src='" + this.content + "'>" + response.responseText + "</iframe>";
    new Insertion.Before($('lbLoadMessage'), info)
    $('lightbox').className = "done";

    //show close button
    $('contentClose').className = "";

    this.actions();

   },

   // Search through new links within the lightbox, and attach click event
   actions: function() {
    lbActions = document.getElementsByClassName('lbAction');
    for (i = 0; i < lbActions.length; i++) {
     Event.observe(lbActions[i], 'click', this[lbActions[i].rel].bindAsEventListener(this), false);
     lbActions[i].onclick = function() { return false; };
    }

   },

   // Example of creating your own functionality once lightbox is initiated
   insert: function(e) {
    link = e.target ? e.target : e.srcElement
    Element.remove($('lbContent'));

    var myAjax = new Ajax.Request(
			  link.href,
			  { method: 'post', parameters: "", onComplete: this.processInfo.bindAsEventListener(this) }
	   );
    //pageid = this.content.substring(this.content.indexOf("=") + 1);
    //window.location.hash = "#pid=" + pageid;
    //alert("insrted page id = " + pageid);
    //window.location.reload();
   },

   // Example of creating your own functionality once lightbox is initiated
   deactivate: function() {
    if (Element) Element.remove($('lbContent'));
    if (browser == "Internet Explorer") {
     this.setScroll(0, this.yPos);
     this.prepareIE("auto", "auto");
     this.hideSelects("visible");
    }

    this.displayLightbox("none");
    window.location.hash = '';
    //      //hide close button
    //      $('contentClose').className = "hidden";
    //      $('contentClose').style.display = 'none';

    //Start auto slider if stopped when LB closed and not stopped via main link
    if (activated && !autoSlideStopped) {
     Animateobj.Start();
     activated = false;
     document.getElementById("btnStopTimer").className = '';
     document.getElementById("btnStartTimer").className = 'hidden';
    }
   }
  }

  /*-----------------------------------------------------------------------------------------------*/

  // Onload, make all links that need to trigger a lightbox active
  function initialize() {
    //alert("initialise was called");
    addLightboxMarkup();
    var cnt = 0;
    lbox = document.getElementsByClassName('lbOn');
    for (i = 0; i < lbox.length; i++) {
      valid = new lightbox(lbox[i]);
      cnt = i;
    }
  }

  function initializeDiv(divId) {
    var cnt = 0;
    var lboxDiv = document.getElementById(divId);
    lbox = lboxDiv.getElementsByClassName('lbAction');
    for (i = 0; i < lbox.length; i++) {
      valid = new lightbox(lbox[i]);
      cnt = i;
    }
  }

  // Add in markup necessary to make this work. Basically two divs:
  // Overlay holds the shadow
  // Lightbox is the centered square that the content is put into.
  function addLightboxMarkup() {
    // bod 			= document.getElementsByTagName('body')[0];
    bod = document.getElementById('container')
    overlay = document.createElement('div');
    overlay.id = 'overlay';
    lb = document.createElement('div');
    lb.id = 'lightbox';
    lb.className = 'loading';
    lb.innerHTML = '<div id="lbLoadMessage">' +
				    '<p>Loading</p>' +
		          '</div>';
    //bod.appendChild(lb);
    if (bod) {
      bod.insertBefore(lb, document.getElementById('slider'));
      bod.appendChild(overlay);
    }

  }

//}
