// ***********************************************
// ** Coastlight.Com V7 JavaScript support file **
// ** Copyright © 1997-2011 Coastlight.Com      **
// ** Updated: 10/06/2011 by Chris Meister      **
// ***********************************************

/* Generate Flash object section */
function ShowFlashObject(image) {
  document.write('<object type="application/x-shockwave-flash" data="' + image + '" class="flash">\n');
  document.write('  <param name="movie" value="' + image + '">\n');
  document.write('  <param name="bgcolor" value="#ffffff">\n');
  document.write('  <param name="quality" value="best">\n');
  document.write('  <param name="loop" value="false">\n');
  document.write('  <param name="menu" value="false">\n');
  document.write('  <param name="scale" value="exactfit">\n');
  document.write('  <param name="wmode" value="transparent">\n');
  document.write('  <param name="allowscriptaccess" value="samedomain">\n');
  document.write('</object>\n');
}

/* Open popup box */
function PopOpen() {
  if (document.getElementById('popup')) {
    var object = document.getElementById('popup');
    object.className = (object.className == 'popup')?'popup fadein':'popup';
  }
}

/* Turn popup page */
function GoToPage(thispage,nextpage) {
  document.getElementById('pop-' + thispage).style.display = 'none';
  document.getElementById('pop-' + nextpage).style.display = 'inline';
}

/* Render server side queries */
function PopQuery(tag) {
  document.getElementById('popup').innerHTML = '<div class="loader"></div>';
  var xmlHttp = null;
  if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); }
  else if (window.ActiveXObject) { xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0'); }
  var url = location.pathname;
  var val = 'q=' + encodeURIComponent(tag);
  xmlHttp.open('POST',url,true);
  xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  xmlHttp.setRequestHeader('Content-length',val.length);
  xmlHttp.setRequestHeader('Connection','close');
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById('popup').innerHTML = xmlHttp.responseText; }
  }
  xmlHttp.send(val);
  return false;
}

/* Show image lightbox */
function LightBox(image,width,height,caption,geodata) {
  var object = document.getElementById('lightbox');
  var navi = LinkRel(image);
  var random = new Date().getTime();
  var output = '<div class="slide" style="width:' + width + 'px;">';
  output += '<div class="close" title="Close" onclick="document.getElementById(\'lightbox\').style.display=\'\';return false;"></div>';
  output += '<map name="navi' + random + '">';
  output += '<area shape="rect" coords="0,0,' + width + ',80" href="#" alt="" title="Close" onclick="document.getElementById(\'lightbox\').style.display=\'\';return false;">';
  output += '<area shape="rect" coords="0,80,' + (width/2) + ',' + (height-80) + '" href="#" alt="" title="Previous" onclick="' + navi[0] + '">';
  output += '<area shape="rect" coords="' + (width/2) + ',80,' + width + ',' + (height-80) + '" href="#" alt="" title="Next" onclick="' + navi[1] + '">';
  output += '<area shape="rect" coords="0,' + (height-80) + ',' + width + ',' + height + '" href="#" alt="" title="Close" onclick="document.getElementById(\'lightbox\').style.display=\'\';return false;">';
  output += '</map>';
  output += '<img src="' + image + '" alt="" width="' + width + '" height="' + height + '" style="visibility:hidden;padding-bottom:5px;" id="imgload" usemap="#navi' + random + '">';
  if (geodata) {
    // output += '<img src="http://maps.google.com/maps/api/staticmap?center=' + geodata + '&amp;zoom=6&amp;size=140x70&amp;maptype=roadmap&amp;markers=size:mid%7Ccolor:red%7Clabel:%7C' + geodata + '&amp;sensor=false" alt="" title="" style="width:140px;height:70px;padding-left:10px;float:right;">';
    output += '<iframe src="library/templates/mapsAPI.php?geodata=' + geodata + '" width="140" height="70" frameborder="0" scrolling="no" style="margin-left:10px;float:right;visibility:hidden;" onload="this.style.visibility=\'visible\';"></iframe>';
  }
  output += base64Decode(caption) + '</div>';
  object.innerHTML = output;
  object.style.display = 'inline';
  object.style.height = '0px';
  object.style.height = getDocHeight() + 'px';
  document.getElementById('imgload').onload = function() { document.getElementById('imgload').style.visibility = 'visible'; }
}

/* Show blog lightbox */
function BlogLightBox(tag) {
  var object = document.getElementById('lightbox');
  if (!tag) {
    object.innerHTML = '<div class="loader" style="height:280px;margin:0px auto;"></div>';
    object.style.display = 'inline';
  } else {
    document.getElementById('post').style.visibility = 'hidden';
    document.getElementById('post').style.opacity = 0;
  }
  object.style.height = '0px';
  object.style.height = getDocHeight() + 'px';

  var xmlHttp = null;
  if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); }
  else if (window.ActiveXObject) { xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0'); }
  var url = "library/templates/blogAPI.php?q=" + encodeURIComponent(tag);
  xmlHttp.open('GET',url,true);
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
      var output = '<div class="slide" style="width:640px;padding:7px 10px;">';
      output += '<div class="close" title="Close" onclick="document.getElementById(\'lightbox\').style.display=\'\';return false;"></div>';
      output += '<div style="background-color:#eeeeee;text-align:justify;color:black;visibility:visible;opacity:1;" id="post">' + xmlHttp.responseText + '</div>';
      output += '</div>';
      object.innerHTML = output;
    }
  }
  xmlHttp.send(null);
  return false;
}

/* Close image lightbox */
document.onclick = check;
function check(e) {
  var target = (e && e.target) || (event && event.srcElement);
  var object = document.getElementById('lightbox');
  target == object?object.style.display = '':null;
}

/* Get related links */
function LinkRel(image) {
  var results = new Array();
  var objects = document.getElementsByTagName('a');
  for (var i=0;i<objects.length;i++) { if (objects[i].rel == 'lightbox') { results.push(objects[i]); } }
  for (var i=0;i<results.length;i++) {
    if (results[i].getAttributeNode('onclick').value.indexOf(image) != -1) {
      var prev = (results[i-1])?results[i-1].getAttributeNode('onclick').value:'return false';
      var next = (results[i+1])?results[i+1].getAttributeNode('onclick').value:'return false';
      return(new Array(prev,next));
    }
  }
}

/* Get document height */
function getDocHeight() {
  var D = document;
  return Math.max(
    Math.max(D.body.scrollHeight,D.documentElement.scrollHeight),
    Math.max(D.body.offsetHeight,D.documentElement.offsetHeight),
    Math.max(D.body.clientHeight,D.documentElement.clientHeight)
  );
}

/* Decodes data encoded with MIME base64 */
function base64Decode(str) {
  var result = '';
  var x = 0;
  var y = 0;
  var z = 0;
  var count = -1;
  for (var i=0;i<str.length;i++) {
    var c = str.charAt(i);
    if ('A' <= c && c <= 'Z') { x = str.charCodeAt(i) - 65; }
    else if ('a' <= c && c <= 'z') { x = str.charCodeAt(i) - 97 + 26; }
    else if ('0' <= c && c <= '9') { x = str.charCodeAt(i) - 48 + 52; }
    else if (c == '+') { x = 62; }
    else if (c == '/') { x = 63; }
    else continue;
    count++;
    switch(count % 4) {
      case 0:
        y = x;
        continue;
      case 1:
        z = (y << 2) | (x >> 4);
        y = x & 0x0F;
        break;
      case 2:
        z = (y << 4) | (x >> 2);
        y = x & 0x03;
        break;
      case 3:
        z = (y << 6) | x;
        y = 0;
        break;
    }
    result = result + String.fromCharCode(z);
  }
  return result.toString();
}
