/////////////////////////////////////////////////////
// AWE Gallery JavaScript
// copyright 2007
// by Jeff Ward (jeff d.o.t. ward at gmail)
/////////////////////////////////////////////////////
// Copying or using this code is prohibited without
// written consent from the author.
/////////////////////////////////////////////////////
// This file contains the functions called by the
// display features of the gallery.
/////////////////////////////////////////////////////
var lin = /linux/i.test(navigator.userAgent);
var ie  = /msie/i.test(navigator.userAgent);
var ie6 = /msie.6/i.test(navigator.userAgent);

function _iePng(yk){yk.style.width=yk.offsetWidth+"px";yk.style.height=yk.offsetHeight+"px";if(!yk.style.behavior){yk.style.behavior='url("png.htc")';}}

function pageLoad() {
  if (lin) {
    var q = document.getElementsByTagName('div');
    for (var i=0; i<q.length; i++) {
      if (q[i].style) {
        q[i].style.lineHeight="1.2";
      }
    }
  }
  if (ie) {
    var FO;FO=document.body.getElementsByTagName('img');for(var i=0;i<FO.length;i++){if(FO[i].style&&ie){_iePng(FO[i]);}}
//    var q = document.getElementsByTagName('img');
//    for (var i=0; i<q.length; i++) {
//      if (q[i].style) {
//        if (/\.png/i.test(q[i].src)) {
//          q[i].style.height = q[i].offsetHeight+"px";
//          q[i].style.width  = q[i].offsetWidth+"px";
//          q[i].style.behavior = "url('png.htc')";
//        }
//      }
//    }
  }
  addShadows();
  addMenus();

  var z = document.getElementsByTagName('span');
  for (var i=0; i<z.length; i++) {
    var q = z[i];
    if (q.className=="lnk") {
      if (!q.ommouseover && !q.onmouseout) {
        q.onmouseover = function() {
          this.bakColor = this.style.color;
          this.style.color = "#446";
        };
        q.onmouseout  = function() {
          this.style.color = this.bakColor;
        }
      }
    }
  }

  var q = document.getElementById('start_focus');
  if (q) {
    q.focus();
  }

  if (typeof sef == 'function') { sef(); }

  //var x = document.getElementById('add_to_cart');
  //if (x) {
  //  if (img_sizes) {
  //    x.onclick = function(e) {
  //      var sp = img_sizes.split(',');
  //      var obj = new Object;
  //      for (var l=0; l<sp.length; l++) {
  //        var pr = sp[l].match(/\$[\d\.]+/)[0];
  //        var nm = sp[l].replace(/\$[\d\.]+/, '');
  //        var itm = nm.replace(/[^A-Za-z0-9]/g, '');
  //        var i = nm+' - <b style="color: #181">'+pr+'</b>';
  //        obj[i] = "index.php?page=cart&img="+img_num+"&add="+itm;
  //      }
  //      obj['Info about '+artist+'\'s Prints'] = "index.php?page=prints&aid="+artist_id;
  //      var pos = getMouseXY(e);
  //      createDDMenu(obj, pos);
  //    }
  //  }
  //}
}

function addShadows() {
  var l = new Array;
  var q = document.getElementsByTagName('img');
  for (var i=0; i<q.length; i++) {
    if (q[i].className) {
      if (/shadow_b/i.test(q[i].className)) {
        fadeMO(q[i], 'borderColor', 0.4, 0, 240);
      }
      if (/_sm/i.test(q[i].src)) {
        q[i].ext_tl = 5;
        q[i].ext_br = -3;
      } else {
        q[i].ext_tl = 5;
        q[i].ext_br = -1;
      }
      if (/shadow/i.test(q[i].className)) {
        l.push(q[i]);
      }
    }
  }
  //var q = document.getElementsByTagName('div');
  //for (var i=0; i<q.length; i++) {
  //  if (q[i].className) {
  //    if (/shadow/i.test(q[i].className)) {
  //      q[i].ext_tl = 10;
  //      q[i].ext_br = 0;
  //      l.push(q[i]);
  //    }
  //  }
  //}
  for (var i=0; i<l.length; i++) {
    var img = l[i];
    //img.style.visibility = "hidden";
    //q[i].style.border = "1px solid #f00";
    var contDiv = document.createElement('div');
    var p = img.parentNode;
    contDiv.style.position = "relative";
    contDiv.style.width  = img.width;
    contDiv.style.height = img.height;
    contDiv.style.marginBottom = "8px";
    p.insertBefore(contDiv, img);
    p.removeChild(img);
    contDiv.appendChild(img);
    img.style.position = "relative";
    img.style.zIndex = "2";

    var ext_tl = img.ext_tl;
    var ext_br = img.ext_br;
    var posx = [-ext_tl,img.width+ext_br];
    var posy = [-ext_tl,img.height+ext_br];
    var s  = ['tl', 'tr', 'bl', 'br'];
    for (var j=0; j<4; j++) {
      var z = document.createElement('div');
      z.style.position = "absolute";
      z.style.width  = "20px";
      z.style.height = "20px";
      //z.style.border = "1px solid #f00";
      z.style.left = posx[j % 2];
      z.style.top  = posy[Math.floor(j / 2)];
      contDiv.appendChild(z);
      var bi = document.createElement('img');
      bi.src="images/s_"+s[j]+".png";
      bi.style.border ="0px";
      bi.style.height ="20px";
      bi.style.width  ="20px";
      if (j==0) {
        var tb = document.createElement('img');
        tb.src="images/s_t.png";
        tb.style.height = "20px";
        tb.style.border ="0px";
        tb.style.width  = (img.width+(ext_tl+ext_br-20))+"px";
        tb.style.left   = "20px";
        tb.style.position = "absolute";
        if (ie6) { tb.style.behavior = "url('png.htc')"; }
        z.appendChild(tb);
        var lb = document.createElement('img');
        lb.src="images/s_l.png";
        lb.style.height = (img.height+(ext_tl+ext_br-20))+"px";
        lb.style.border ="0px";
        lb.style.width  = "20px";
        lb.style.top    = "20px";
        lb.style.position = "absolute";
        if (ie6) { lb.style.behavior = "url('png.htc')"; }
        z.appendChild(lb);
      }

      if (j==3) {
        var bb = document.createElement('img');
        bb.src="images/s_b.png";
        bb.style.height = "20px";
        bb.style.border ="0px";
        bb.style.width  = (img.width+(ext_tl+ext_br-20))+"px";
        bb.style.left   = (-(img.width+(ext_tl+ext_br-20)))+"px";
        bb.style.position = "absolute";
        if (ie6) { bb.style.behavior = "url('png.htc')"; }
        z.appendChild(bb);
        var rb = document.createElement('img');
        rb.src="images/s_r.png";
        rb.style.border ="0px";
        rb.style.height = (img.height+(ext_tl+ext_br-20))+"px";
        rb.style.width  = "20px";
        rb.style.top    = (-(img.height+(ext_tl+ext_br-20)))+"px";
        rb.style.position = "absolute";
        if (ie6) { rb.style.behavior = "url('png.htc')"; }
        z.appendChild(rb);
      }
      if (ie6) { bi.style.behavior = "url('png.htc')"; }
      z.appendChild(bi);
    }
  }
}

function ship_upd(obj) {
  var v = obj.options[obj.selectedIndex].innerHTML;
  if (/local/i.test(v)) {
    document.getElementById('tship').style.display = "none";
    document.getElementById('tnoship').style.display = "";
    document.getElementById('samt').value = document.getElementById('snamt').value;
    document.getElementById('snm').value = "AWE: Local Pickup";
  } else {
    document.getElementById('tship').style.display = "";
    document.getElementById('tnoship').style.display = "none";
    document.getElementById('samt').value = document.getElementById('soamt').value;
    document.getElementById('snm').value = "AWE: Shipping and handling";
  }
}

function dd() {
  var d = document.getElementsByTagName('div');
  for (var i=0; i<d.length; i++) {
    if (d[i].style) {
      d[i].style.border = "1px solid #f00";
    }
  }
}

function setup_img(obj) {
  var w = obj.offsetWidth;
  var h = obj.offsetHeight;
  obj.parentNode.style.width  = (w+110)+"px";
  obj.parentNode.style.height = (h+110)+"px";
  obj.style.position = "relative";
  obj.style.top = "55px";
  obj.parentNode.style.visibility = "";
}

function hcenter(obj, hp) {
  var h  = obj.offsetHeight;
  obj.parentNode.style.position = "relative";
  obj.parentNode.style.top = Math.floor((hp-h)/2)+"px";
}

function addMenus() {
  var m = document.getElementsByTagName('span');
  var b = new Array();
  for (var i=0; i<m.length; i++) {
    if (m[i].id) {
      if (/top_menu_/.test(m[i].id)) {
        b.push(m[i]);
      }
    }
  }
  for (var i=0; i<b.length; i++) {
    if (b[i].innerHTML == "location") {
      b[i].onclick = function(e) {
        var obj = {
          'Gallery Location':'index.php?page=location',
          'Contact Us':'index.php?page=contact'
        };
        var pos = getMouseXY(e);
        createDDMenu(obj, pos);
      }
    } else if (b[i].innerHTML == "artists") {
      b[i].onclick = function(e) {
        var obj = getArtistsObj();
        var pos = getMouseXY(e);
        createDDMenu(obj, pos);
      }
    } else {
      b[i].onclick = function() {
        var loc = this.innerHTML;
        loc = loc.replace(/ /, '_');
        window.location = "index.php?page="+loc;
      }
    }
  }
}

function statementMenus(e) {
  var obj = getArtistsObj();
  for (var i=0; i<obj.length; i++) {
    obj[i] = obj[i].replace(/page=artists/, "page=statement");
  }
  var pos = getMouseXY(e);
  createDDMenu(obj, pos);
}


function createDDMenu(obj, pos, sort) {
  var d = document.createElement('div');
  d.style.position  = "absolute";
  d.style.top       = pos['y']+"px";
  d.style.left      = pos['x']+"px";
  d.style.border    = "2px solid #000";
  d.style.padding   = "0px";
  d.style.backgroundColor = "rgb(240, 240, 240)";
  d.style.zIndex    = 50;
  d.over = 0;
  d.del  = 0;
  //d.style.opacity = "0.94";

  var items = [];
  var elems = {};
  for (var i in obj) {
    var l1 = document.createElement('div');
    l1.className = "topbtn";
    l1.style.fontSize = "18px";
    l1.style.padding  = "2px 8px";
    l1.style.margin   = "0px";
    fadeMO(l1, 'backgroundColor', 0.38, 240, 200);
    l1.htgt = obj[i];
    l1.onclick = function() {
      if (typeof this.htgt == 'function') {
        this.htgt();
      } else {
        window.location = this.htgt;
      }
      kill_menu();
    }
    l1.innerHTML = i;
    items.push(i);
    elems[i] = l1;
  }

  if (sort) {
    items.sort();
  }

  var kill_menu = function()
  {
    d.parentNode.removeChild(d); // remove menu
    window.onmousedown = null;
  }

  for (var i in items) {
    if (i && items[i]) {
      d.appendChild(elems[items[i]]);
    }
  }

  d.onmouseover = function() { this.del = 1; this.over = 1; }
  d.onmouseout = function() {
    this.over = 0;
    var d = this;
    setTimeout(function() {
                 if (d.del && !d.over) {
                   if (d) {
                     if (d.parentNode) {
                       d.del = 0;
                       resize(1, 0, kill_menu, 0.7 );
                     }
                   }
                 }
               }, 1000);
  }

  window.onmousedown = function()
  {
    if (d && !d.over) {
      kill_menu();
    }
  }

  d.style.visibility = "hidden";
  document.body.appendChild(d);

  var nh = d.offsetHeight;
  var fw = d.offsetWidth;

  for (var i=0; i<d.childNodes.length; i++) {
    if (d.childNodes[i].style) {
      d.childNodes[i].style.width = fw+"px";
    }
  }

  d.style.overflow = "hidden";
  d.style.height = "0px";
  d.style.width  = "0px";

  var resize = function(x, tgt, ff, spd) {
    var nx = (tgt-x)*spd+x;
    d.style.height = Math.floor(nh*nx)+"px";
    d.style.width  = Math.floor(fw*nx)+"px";
    d.style.visibility = "";
    if (Math.abs(nx-tgt) > 0.01) {
      setTimeout(function() { resize(nx, tgt, ff, spd); }, 40);
    } else {
      if (typeof ff == 'function') { ff(); }
    }
  }
  setTimeout(function() { resize(0, 1, null, 0.6); }, 50);

}


function fadeMO(obj, prp, sf, sc, fc) {

  var c0 = (typeof sc == 'number')?sc:0;
  var c1 = (typeof fc == 'number')?fc:255;

  obj.cur = 0;

  var bc = function(spd) {
    var x = obj.cur;
    obj.act = 1;
    var nx = (obj.tgt-x)*spd+x;
    var c = Math.floor(c0+(c1-c0)*nx);
    if (/bordercolor/i.test(prp)) {
      obj.style.borderColor = "rgb("+c+","+c+","+c+")";
    } else if (/backgroundcolor/i.test(prp)) {
      obj.style.backgroundColor = "rgb("+c+","+c+","+c+")";
    }
    obj.cur = nx;
    if (Math.abs(nx-obj.tgt) > 0.01) {
      setTimeout(function() { bc(spd); }, 40);
    } else {
      obj.act = 0;
    }
  }

  obj.onmouseover = function() {
    obj.tgt = 1;
    if (!obj.act) { bc(sf); }
  }

  obj.onmouseout  = function() {
    obj.tgt = 0;
    if (!obj.act) { bc(sf); }
  }
}


function getMouseXY(e) {
  var x = 0;
  var y = 0;
  if (!e) var e = window.event;
  if (e.pageX || e.pageY) {
    x = e.pageX;
    y = e.pageY;
  }
  else if (e.clientX || e.clientY) {
    x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
  }
  return {'x':x, 'y':y};
}

