__date__    = "$Date: 12/13/07 6:47a $"
__version__ = "$Revision: 10 $"
__author__  = "$Author: Jarmao $"


/*
  Lightbox w/o Prototype
  Based upon Lokesh Dhakar's Lightbox JS (See http://huddletogether.com/projects/lightbox/)

  This script is released by 23 (http://www.23hq.com) under  the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
  (Steffen Tiedemann Christensen, steffen@23hq.com, http://blog.23hq.com)

  Usage:
  lightbox('/myurl/demo.html');
  lightbox('/myurl/demo.html', {height:300, width:500});
  lightbox('/myurl/demo.html', {params:'test=yes', left:10, top:10, height:300, width:500, callingObj:this, position:'relative'});
*/

var isIE = navigator.appName.indexOf("Microsoft") != -1;
var is_iphone = (_agent.indexOf("iphone") != -1);

// Config
//var loadingImgSrc = 'loading.gif'

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
function getPageScroll(){
    var yScroll;

    if (self.pageYOffset) {
  yScroll = self.pageYOffset;
    } else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict
  yScroll = document.documentElement.scrollTop;
    } else if (document.body) {// all other Explorers
  yScroll = document.body.scrollTop;
    }

    arrayPageScroll = new Array('',yScroll)
  return arrayPageScroll;
}



//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
  xScroll = document.body.scrollWidth;
  yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
  xScroll = document.body.scrollWidth;
  yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
  xScroll = document.body.offsetWidth;
  yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;
    if (self.innerHeight) { // all except Explorer
  windowWidth = self.innerWidth;
  windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
  windowWidth = document.documentElement.clientWidth;
  windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
  windowWidth = document.body.clientWidth;
  windowHeight = document.body.clientHeight;
    }

    // for small pages with total height less then height of the viewport
    if (yScroll < windowHeight){
  pageHeight = windowHeight;
    } else {
  pageHeight = yScroll;
    }

    // for small pages with total width less then width of the viewport
    if (xScroll < windowWidth) {
  pageWidth = windowWidth;
    } else {
  pageWidth = xScroll;
    }


    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) ;
    return arrayPageSize;
}


//
// getAbsoluteObjectX(obj)
//
function getAbsoluteObjectX(obj) {
    var x = obj.offsetLeft;
    while (obj.offsetParent) {
        obj = obj.offsetParent;
  x += obj.offsetLeft;
    }
    return(x);
}

//
// getAbsoluteObjectY(obj)
//
function getAbsoluteObjectY(obj) {
    var y = obj.offsetTop;
    while (obj.offsetParent) {
        obj = obj.offsetParent;
  y += obj.offsetTop;
    }
    return(y);
}


//
// getKey(key)
// Gets keycode. If 'x' is pressed then it hides the lightbox.
//

function getKey(e){
    if (e == null) { // ie
  keycode = event.keyCode;
    } else { // mozilla
  keycode = e.which;
    }
    key = String.fromCharCode(keycode).toLowerCase();
    /* perhaps for future use */
    //if (key == 'x') hideLightbox();
}


//
// listenKey()
//
function listenKey () { document.onkeypress = getKey; }

function showLightbox(clearoverlay) {
    ////log(lbX + ", " + lbY + ", " + lbW + ", " + lbH);

    // prep objects
    var objOverlay = document.getElementById('agi-overlay' + (clearoverlay ? '-clear' : ''));
    var objLightbox = document.getElementById('lightbox');
    var objLoadingImage = document.getElementById('loadingImage');

    objLightbox.style.overflow = lbOverflow;
    objLoadingImage.style.display = 'none';
    objLoadingImage.style.visibility = 'hidden';

    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();

    objLightbox.style.height = '';
    objLightbox.style.width = '';
 
    if (lbH!=undefined) objLightbox.style.height = lbH + "px";
    if (lbW!=undefined) objLightbox.style.width = lbW + "px";
    ////log("H: " + objLightbox.style.height + ", W: " + objLightbox.style.width);

    if (lbY==undefined) {lbY=20;}
    objLightbox.style.top = lbY + "px";

    objLightbox.style.visibility = 'hidden';
    objLightbox.style.display = 'block';

    if (lbX==undefined) {lbX = ((arrayPageSize[0] - objLightbox.offsetWidth) / 2);}
    ////log(arrayPageSize[0] + ", " + objLightbox.offsetWidth + ", " + lbX);

    objLightbox.style.left = lbX + "px";

    objLightbox.style.visibility = 'visible';

    ////log(lbX + ", " + lbY + ", " + lbW + ", " + lbH);


    // After load, update the overlay height as the new content might have
    // increased the overall page height.
    arrayPageSize = getPageSize();
    objOverlay.style.height = (arrayPageSize[1] + 'px');

    try {
      document.getElementById("agi-page").className = "agi-noprint";
    } catch (e){}
    //log(7);

    // Check for 'x' keypress
    listenKey();
}


//
// lightbox()
//
var lbX, lbY, lbW, lbH, lbOverflow;
function lightbox(target, P, html_string, clearoverlay) {
    clearoverlay = clearoverlay == undefined ? false : clearoverlay;
    if (target==undefined) return;
    if (P==undefined) {var P = new Object();}
    if (html_string == undefined) { html_string = "";}

    var params = P.params; var h = P.height; var w = P.width; var x = P.left; var y = P.top; var callingObj = P.callingObj; var position = P.position; var overflow = P.overflow;


    if (params==undefined) {params = '';}
    if (overflow==undefined) {overflow = 'auto';}
    if (position==undefined) {position = 'absolute';}

    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();

    if (position=="relative") {
  // Relative to obj
        if (!callingObj) {alert('Lightbox needs a callingObj when positioning relatively');}

        if (x==undefined) x=0;
        if (y==undefined) y=0;
        x += getAbsoluteObjectX(callingObj);
        y += getAbsoluteObjectY(callingObj);
    } else {
  // Absolute
        if (y==undefined) y=20;
        y += arrayPageScroll[1];
    }

    lbX = x;
    lbY = y;
    lbW = w;
    lbH = h;
    lbOverflow = overflow;

    initLightbox(clearoverlay);

    // prep objects
    var objOverlay = document.getElementById('agi-overlay' + (clearoverlay ? '-clear' : ''));
//    if(P.allowclick == 'no')
//        objOverlay.onclick = function () {return false;}
//    else
//        objOverlay.onclick = function () {hideLightbox(); return false;}
	try
	{
    	filter = getStyle('agi-overlay', 'filter');

    	if (filter && isIE)
    	{
    		if (filter.indexOf(imghost) == -1)
    		{
    			filter = filter.replace('/agbeta', imghost + '/agbeta');
    			objOverlay.style.filter = filter;
    		}
    	}

    } catch (e) {}

    var objLightbox = document.getElementById('lightbox');
    var objLoadingImage = document.getElementById('loadingImage');

    var arrayPageSize = getPageSize();
    var arrayPageScroll = getPageScroll();

    objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');
    objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');

    // show loading image ?
    var hide_loading = false;
    try
    {
        var main_print_html = document.getElementById('agi-cal-or-list').innerHTML;
        if(main_print_html.indexOf('loader.swf')>=0)
            hide_loading = true;
    }
    catch(e){}
    if(P.hideloading || hide_loading){
        objLoadingImage.style.display = 'none';
        objLoadingImage.style.visibility = 'hidden';
    }
    else{
        objLoadingImage.style.display = 'block';
        objLoadingImage.style.visibility = 'visible';
    }

    // set height of Overlay to take up whole page and show
    objOverlay.style.height = (arrayPageSize[1] + 'px');
    objOverlay.style.display = 'block';
  // hide select boxes in IE
  if (isIE)
  {
    var selects = document.getElementsByTagName("SELECT");
    for (var i=0; i < selects.length; i++)
    {
      selects[i].style.visibility = "hidden";
    }
  }

  if (html_string == "")
    {
        var successCallback = function(request) {
            onSuccess(request);

            if (P.postSuccess) {
                P.postSuccess(request);
            }

            if (P.allowclick) {
                var objOverlay = document.getElementById('agi-overlay');
                if (objOverlay)
                    objOverlay.onclick = function () {hideLightbox(); return false;}

                var objOverlayC = document.getElementById('agi-overlay-clear');
                if (objOverlayC)
                    objOverlayC.onclick = function () {hideLightbox(); return false;}
            }
        };


      var requester = new Requester(target, 'GET', true, true);
      requester.onsuccess = successCallback;
      requester.onerror = onError;
      requester.sendRequest(params);
    }
    else
    {
      objLightbox.innerHTML = stripScripts(html_string);
      showLightbox(clearoverlay);
      evalScripts(html_string);
      if (P.allowclick)
        objOverlay.onclick = function () {hideLightbox(); return false;}
    }
}

function onSuccess(request)
{
  var lightbox = document.getElementById('lightbox');
  lightbox.innerHTML = stripScripts(request.responseText);
  showLightbox();

  evalScripts(request.responseText);
}

function onSuccess_clickable(request)
{
  onSuccess(request);
  var objOverlay = document.getElementById('agi-overlay');
  if (objOverlay)
    objOverlay.onclick = function () {hideLightbox(); return false;}

  var objOverlay = document.getElementById('agi-overlay-clear');
  if (objOverlay)
      objOverlay.onclick = function () {hideLightbox(); return false;}
}

function onError(request)
{
  hideLightbox();
}

//
// hideLightbox()
//
function hideLightbox(options)
{
    var preHideCallback;
    var postHideCallback;

    if (options) {
        if (options.preHideCallback) {
            preHideCallback = options.preHideCallback;
        }

        if (options.postHideCallback) {
            postHideCallback = options.postHideCallback;
        }
    }

    if (preHideCallback) {
        var result = preHideCallback();
        if (result == false) {
            return false;
        }
    }

    // get objects
    var objOverlay = document.getElementById('agi-overlay');
    var objOverlayClr = document.getElementById('agi-overlay-clear');
    var objLightbox = document.getElementById('lightbox');
    var objLoadingImage = document.getElementById('loadingImage');

    if (objOverlay)
        objOverlay.onclick = function () {return false;}

  // display select boxes in IE
  if (isIE)
  {
    var selects = document.getElementsByTagName("SELECT");
    for (var i=0; i < selects.length; i++)
      selects[i].style.visibility = "visible";
  }
  else {
    try {document.getElementById('div_cust_section').style.display = 'block'}
    catch(ex) {};
  }

    // hide lightbox and overlay
    if (objOverlay)
        objOverlay.style.display = 'none';
    if (objOverlayClr)
        objOverlayClr.style.display = 'none';
    objLightbox.style.display = 'none';
    objLoadingImage.style.display = 'none';
    objLoadingImage.style.visibility = 'hidden';
    objLightbox.innerHTML = "";

    try {
      document.getElementById("agi-page").className = "";
    } catch (e){}

    // disable keypress listener
    document.onkeypress = '';

    if (postHideCallback) {
        postHideCallback();
    }
}




//
// initLightbox()
//
function initLightbox(clearoverlay)
{
  var objBody = document.getElementsByTagName("body").item(0);
  var arrayPageSize = getPageSize();
  var arrayPageScroll = getPageScroll();

  var sOverlayID = 'agi-overlay' + (clearoverlay ? '-clear' : '')

  if (!document.getElementById(sOverlayID))
  {
    // create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
    var objOverlay = document.createElement("div");
    objOverlay.setAttribute('id', sOverlayID);
    objOverlay.setAttribute('class', 'agi-noprint');
    objOverlay.setAttribute('className', 'agi-noprint');
    //objOverlay.onclick = function () {hideLightbox(); return false;}
    objOverlay.style.display = 'none';
    objOverlay.style.position = 'absolute';
    objOverlay.style.top = '0';
    objOverlay.style.left = '0';
    objOverlay.style.zIndex = '90';
    objOverlay.style.width = '100%';
    objBody.insertBefore(objOverlay, objBody.firstChild);
  }

  if (!document.getElementById('lightbox'))
  {
    // create lightbox div, same note about styles as above
    var objLightbox = document.createElement("div");
    objLightbox.setAttribute('id','lightbox');
    objLightbox.style.display = 'none';
    objLightbox.style.position = 'absolute';
    objLightbox.style.zIndex = '100';
    objBody.insertBefore(objLightbox, objOverlay.nextSibling);
  }
  if (!document.getElementById('loadingImage'))
  {
  /*
  //  var objLoadingImage = document.createElement("img");
  //  objLoadingImage.setAttribute('id','loadingImage');
  //  objLoadingImage.style.position = 'absolute';
  //  objBody.insertBefore(objLoadingImage, objBody.firstChild);
  */
    if (is_iphone)
    {
      var objLoadingImage = document.createElement("img");
      objLoadingImage.src = imghost + "/kiw/loading.gif";
    }
    else
    {
      var objLoadingImage = document.createElement("embed");
      objLoadingImage.setAttribute('src',imghost+'/kiw/loader.swf');
      objLoadingImage.setAttribute('name','FlashProduct');
      objLoadingImage.setAttribute('swLiveConnect',true);
      objLoadingImage.setAttribute('width',150);
      objLoadingImage.setAttribute('height',150);
      objLoadingImage.setAttribute('scale','noborder');
      objLoadingImage.setAttribute('quality','high');
      objLoadingImage.setAttribute('type','application/x-shockwave-flash');
      objLoadingImage.setAttribute('pluginspace','http://www.macromedia.com/go/getflashplayer');
      objLoadingImage.setAttribute('wmode','transparent');
    }
    objLoadingImage.setAttribute('id','loadingImage');
    objLoadingImage.style.position = 'absolute';
    objLoadingImage.style.zIndex = '150';
    objBody.insertBefore(objLoadingImage, objBody.firstChild);
  }
}

//
// addLoadEvent()
// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
//
function addLoadEvent(func)
{
  var oldonload = window.onload;
  if (typeof window.onload != 'function'){
      window.onload = func;
  } else {
    window.onload = function(){
    oldonload();
    func();
    }
  }

}

function resizeOverlay()
{
    var objOverlay = document.getElementById('agi-overlay');
    var arrayPageSize = getPageSize();

    if (arrayPageSize[1] > objOverlay.clientHeight)
    {
      var newHeight = arrayPageSize[1] + 10;
      objOverlay.style.height = (newHeight + 'px');
    }
}
