
//©2010 Erobo Software 
//Visit http://www.erobosoftware.com for free scripts and libraries
//1-05-2010 - added drag capabilities.
//1-22-2010 - added option for fade in effect.

//Credits:
//http://www.xul.fr/javascript/ ->style sheet, gradient function, main method logic
//http://www.webreference.com/programming/javascript/mk/column2/ [Mark Kahn] ->basic drag drop functions

//fade in global
var undoGradient = false;
//lightbox content explicit
var lighboxContent = "";
var lighboxContentContent = "";

function gradient(id, level){
  var box = document.getElementById(id);
  box.style.opacity = level;
  box.style.MozOpacity = level;
  box.style.KhtmlOpacity = level;
  box.style.filter = "alpha(opacity=" + level * 100 + ")";
  if(undoGradient == false){
    box.style.display="block";
  }
  return;
}

function fadein(id){
  var level = 0;
  while(level <= 1)
  {
    setTimeout( "gradient('" + id + "'," + level + ")", (level* 1000) + 10);
    level += 0.01;
  }
}

// Open the lightbox
function openbox(formtitle, fadin, boxwidth, boxheight, boxtitlewidth, boxtitleheight){

  var screenWidthSpaceAvail, iniHeight, screenHeightSpaceAvail, alt_ua_ie;
  var currHeight, disableSelections, yScroll, windowHeight;
  
  if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1) {
    screenWidthSpaceAvail = document.documentElement.clientWidth;
    iniHeight = document.documentElement.clientHeight;
    currHeight = document.documentElement.scrollTop;
    alt_ua_ie = true;
	
  }else if(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("chrome")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("safari")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = true;
	
  }else {
    screenWidthSpaceAvail = document.documentElement.clientWidth;
    iniHeight = document.documentElement.clientHeight;
    currHeight = document.documentElement.scrollTop;
    alt_ua_ie = true;
  }

  //determining the height code from quirksmode.org
  if (window.innerHeight && window.scrollMaxY) {	
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    yScroll = document.body.scrollHeight;
  } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    yScroll = document.body.offsetHeight;
  }
  
  if (self.innerHeight) {	// all except Explorer
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowHeight = document.body.clientHeight;
  }	
	
  // for small pages with total height less then height of the viewport
  if(yScroll < windowHeight){
    screenHeightSpaceAvail = windowHeight;
  } else { 
    screenHeightSpaceAvail = yScroll;
  }
  //end of quirksmode.org code for determining height

  undoGradient = false; //reset global for gradient

  var boxContainer = document.getElementById('boxcontainer'); 
  
  var box = null;
  
  if(document.getElementById('box') == null){
    box = document.createElement('div');
    box.setAttribute("id", "box");
  }else{
    box = document.getElementById('box');
  }

  box.style.width = boxwidth + "px";
  box.style.height = boxheight + "px";
  box.style.position = "absolute";
  box.style.top = currHeight + (iniHeight / 2) - (boxheight / 2) + "px";
  box.style.left = (screenWidthSpaceAvail / 2) - (boxwidth / 2) + "px";
  
  if(lighboxContent == ""){
  lighboxContent = boxContainer.innerHTML;
  box.innerHTML = "<div width=\"100%\">" + lighboxContent + "<\/div>";
  boxContainer.innerHTML = "";
  
  }else{
    box.innerHTML = lighboxContent;
  }
  
  if(document.getElementById('box') == null){
    document.body.appendChild(box);
  }
 
  box.style.zIndex = "9990";
  
  if(document.getElementById("filter") == null){
    var mydiv = document.createElement('div');
    mydiv.setAttribute("id", "filter");
    document.body.appendChild(mydiv);
  }
  
  document.getElementById('filter').style.display='block';
  document.getElementById('filter').style.width= screenWidthSpaceAvail + "px";
  document.getElementById('filter').style.height= screenHeightSpaceAvail + "px";
  document.getElementById('filter').style.opacity =  0.5;
  document.getElementById('filter').style.filter =  "alpha(opacity=50)";
  document.getElementById('filter').style.zIndex = "9980";
  
  var btitle = document.getElementById('boxtitle');
  
  btitle.style.width = boxtitlewidth + "px";
  btitle.style.height = boxtitleheight + "px";
  btitle.innerHTML = formtitle;
  
  //btitle.style.cursor = "move";
  
  document.onmousemove = mouseMove;
  document.onmouseup   = mouseUp;

  var dragObject  = null;
  var mouseOffset = null;

  function getMouseOffset(target, ev){

    ev = ev || window.event;
    var docPos    = getPosition(target);
    var mousePos  = mouseCoords(ev);

    return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
  }

  function getPosition(e){
    var left = 0;
    var top  = 0;

    while (e.offsetParent){
      left += e.offsetLeft;
      top  += e.offsetTop;
      e     = e.offsetParent;
    }

    left += e.offsetLeft;
    top  += e.offsetTop;

    return {x:left, y:top};
  }

  function mouseCoords(ev){
    if(ev.pageX || ev.pageY){
      return {x:ev.pageX, y:ev.pageY};
    }
    
    return {
      x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
      y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
  }

  function mouseMove(ev){
    ev           = ev || window.event;
    var mousePos = mouseCoords(ev);

    if(dragObject){
      dragObject.style.position = 'absolute';
      dragObject.style.top      = (mousePos.y - mouseOffset.y) + "px";
      dragObject.style.left     = (mousePos.x - mouseOffset.x) + "px";

      return false;
    }
  }
  function mouseUp(){
    dragObject = null;
    if (typeof box.onselectstart!="undefined"){
	  box.onselectstart=null;
	} else if (typeof box.style.MozUserSelect!="undefined"){
	  box.style.MozUserSelect="text"
	}
	  
	disableSelections = false
  }

  function makeDraggable(item){
    if(!item) return;
    item.onmousedown = function(ev){
      dragObject  = this;
      mouseOffset = getMouseOffset(this, ev);
      return false;
    }
  }
  
  btitle.onmousedown = function (){
  
    if(disableSelections == false){
      if (typeof box.onselectstart!="undefined"){
	    box.onselectstart=function(){return false}
	  } else if (typeof box.style.MozUserSelect!="undefined"){
	    box.style.MozUserSelect="none"
	  }
    }
    
    //makeDraggable(box)
  
    disableSelections = true;
    
  }
 
  if(fadin)
  {
   gradient("box", 0);
   fadein("box");
  }
  else
  {   
    box.style.display='block';
  }    
}




// Open the lightbox
function openboxContact(formtitle, fadin, boxwidth, boxheight, boxtitlewidth, boxtitleheight){
	
  var screenWidthSpaceAvail, iniHeight, screenHeightSpaceAvail, alt_ua_ie;
  var currHeight, disableSelections, yScroll, windowHeight;
  
  if(navigator.userAgent.toLowerCase().indexOf("msie")!=-1) {
    screenWidthSpaceAvail = document.documentElement.clientWidth;
    iniHeight = document.documentElement.clientHeight;
    currHeight = document.documentElement.scrollTop;
    alt_ua_ie = true;

  }else if(navigator.userAgent.toLowerCase().indexOf("firefox")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("chrome")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("safari")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = false;
  }else if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1) {
    screenWidthSpaceAvail = window.innerWidth;
    iniHeight = window.innerHeight;
    currHeight = window.pageYOffset;
    alt_ua_ie = true;
	
  }else {
    screenWidthSpaceAvail = document.documentElement.clientWidth;
    iniHeight = document.documentElement.clientHeight;
    currHeight = document.documentElement.scrollTop;
    alt_ua_ie = true;
  }

  //determining the height code from quirksmode.org
  if (window.innerHeight && window.scrollMaxY) {	
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    yScroll = document.body.scrollHeight;
  } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    yScroll = document.body.offsetHeight;
  }
  
  if (self.innerHeight) {	// all except Explorer
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowHeight = document.body.clientHeight;
  }	
	
  // for small pages with total height less then height of the viewport
  if(yScroll < windowHeight){
    screenHeightSpaceAvail = windowHeight;
  } else { 
    screenHeightSpaceAvail = yScroll;
  }
  //end of quirksmode.org code for determining height

  undoGradient = false; //reset global for gradient

  var boxContainerContact = document.getElementById('boxContactContainer'); 
  
  var box = null;
  
  if(document.getElementById('box') == null){
    box = document.createElement('div');
    box.setAttribute("id", "box");
  }else{
    box = document.getElementById('box');
  }

  box.style.width = boxwidth + "px";
  box.style.height = boxheight + "px";
  box.style.position = "absolute";
  box.style.top = currHeight + (iniHeight / 2) - (boxheight / 2) + "px";
  box.style.left = (screenWidthSpaceAvail / 2) - (boxwidth / 2) + "px";
  
  if(lighboxContentContent == ""){
	  lighboxContentContent = boxContainerContact.innerHTML;
	  box.innerHTML = "<div width=\"100%\">" + lighboxContentContent + "<\/div>";
	  boxContainerContact.innerHTML = "";
  
  }else{
    box.innerHTML = lighboxContentContent;
  }
  
  if(document.getElementById('box') == null){
    document.body.appendChild(box);
  }
 
  box.style.zIndex = "9990";
  
  if(document.getElementById("filter") == null){
    var mydiv = document.createElement('div');
    mydiv.setAttribute("id", "filter");
    document.body.appendChild(mydiv);
  }
  
  document.getElementById('filter').style.display='block';
  document.getElementById('filter').style.width= screenWidthSpaceAvail + "px";
  document.getElementById('filter').style.height= screenHeightSpaceAvail + "px";
  document.getElementById('filter').style.opacity =  0.5;
  document.getElementById('filter').style.filter =  "alpha(opacity=50)";
  document.getElementById('filter').style.zIndex = "9980";
  
  var btitle = document.getElementById('boxContactTitle');
  
  btitle.style.width = boxtitlewidth + "px";
  btitle.style.height = boxtitleheight + "px";
  btitle.innerHTML = formtitle;
  
  //btitle.style.cursor = "move";
  
  document.onmousemove = mouseMove;
  document.onmouseup   = mouseUp;

  var dragObject  = null;
  var mouseOffset = null;

  function getMouseOffset(target, ev){

    ev = ev || window.event;
    var docPos    = getPosition(target);
    var mousePos  = mouseCoords(ev);

    return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
  }

  function getPosition(e){
    var left = 0;
    var top  = 0;

    while (e.offsetParent){
      left += e.offsetLeft;
      top  += e.offsetTop;
      e     = e.offsetParent;
    }

    left += e.offsetLeft;
    top  += e.offsetTop;

    return {x:left, y:top};
  }

  function mouseCoords(ev){
    if(ev.pageX || ev.pageY){
      return {x:ev.pageX, y:ev.pageY};
    }
    
    return {
      x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
      y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
  }

  function mouseMove(ev){
    ev           = ev || window.event;
    var mousePos = mouseCoords(ev);

    if(dragObject){
      dragObject.style.position = 'absolute';
      dragObject.style.top      = (mousePos.y - mouseOffset.y) + "px";
      dragObject.style.left     = (mousePos.x - mouseOffset.x) + "px";

      return false;
    }
  }
  function mouseUp(){
    dragObject = null;
    if (typeof box.onselectstart!="undefined"){
	  box.onselectstart=null;
	} else if (typeof box.style.MozUserSelect!="undefined"){
	  box.style.MozUserSelect="text"
	}
	  
	disableSelections = false
  }

  function makeDraggable(item){
    if(!item) return;
    item.onmousedown = function(ev){
      dragObject  = this;
      mouseOffset = getMouseOffset(this, ev);
      return false;
    }
  }
  
  btitle.onmousedown = function (){
  
    if(disableSelections == false){
      if (typeof box.onselectstart!="undefined"){
	    box.onselectstart=function(){return false}
	  } else if (typeof box.style.MozUserSelect!="undefined"){
	    box.style.MozUserSelect="none"
	  }
    }
    
    //makeDraggable(box)
  
    disableSelections = true;
    
  }
  
  if(fadin)
  {
   gradient("box", 0);
   fadein("box");
  }
  else
  {   
    box.style.display='block';
  }    
}

function dragBoxBody(){
  var box1 = document.getElementById('box'); 
  box1.style.left = 1  + "px";
}

// Close the lightbox
function closebox(){
   undoGradient = true;
   document.getElementById('box').style.display='none';
   document.getElementById('filter').style.display='none';
}




