//////////////////////////////////////
// OVERLAY - taken largely from http://www.pjhyett.com/posts/190-the-lightbox-effect-without-lightbox
//////////////////////////////////////
function showOverlay(elem) {
  $('overlay'+elem).show();
  center('box'+elem);
  return false;
}

function hideOverlay(elem){
  $('box'+elem).hide();
  $('overlay'+elem).hide();
  return false;
}

function center(element){
    try{
        element = $(element);
    }catch(e){
        return;
    }

    var my_width  = 0;
    var my_height = 0;

    if ( typeof( window.innerWidth ) == 'number' ){
        my_width  = window.innerWidth;
        my_height = window.innerHeight;
    }else if ( document.documentElement && 
             ( document.documentElement.clientWidth ||
               document.documentElement.clientHeight ) ){
        my_width  = document.documentElement.clientWidth;
        my_height = document.documentElement.clientHeight;
    }
    else if ( document.body && 
            ( document.body.clientWidth || document.body.clientHeight ) ){
        my_width  = document.body.clientWidth;
        my_height = document.body.clientHeight;
    }

    element.style.position = 'absolute';
    element.style.zIndex   = 99;

    var scrollY = 0;

    if ( document.documentElement && document.documentElement.scrollTop ){
        scrollY = document.documentElement.scrollTop;
    }else if ( document.body && document.body.scrollTop ){
        scrollY = document.body.scrollTop;
    }else if ( window.pageYOffset ){
        scrollY = window.pageYOffset;
    }else if ( window.scrollY ){
        scrollY = window.scrollY;
    }

    var elementDimensions = Element.getDimensions(element);

    var setX = ( my_width  - elementDimensions.width  ) / 2;
    var setY = ( my_height - elementDimensions.height ) / 2 + scrollY;

    setX = ( setX < 0 ) ? 0 : setX;
    setY = ( setY < 0 ) ? 0 : setY;

    element.style.left = setX + "px";
    element.style.top  = setY + "px";

    element.style.display  = 'block';
}


//////////////////////////////////////////////////////////////////////////////////
// BLIND DOWN FLASH MESSAGE
//////////////////////////////////////////////////////////////////////////////////
var slide_flash=true;
function check_flash() {
  if ($('flash')) { 
    $('flash').show();
    // new Effect.BlindDown('flash', {duration:.5});
    if (slide_flash){
      setTimeout("Effect.SlideUp('flash', {duration:.5})", 5000);
    }
  }
}
Event.observe(window,"load",check_flash);


//////////////////////////////////////////////////////////////////////////////////
// CLEANUP FOR HTML IN INPLACE_EDITOR
//////////////////////////////////////////////////////////////////////////////////
Object.extend(Ajax.InPlaceEditor.prototype, {
    onLoadedExternalText: function(transport) {
        Element.removeClassName(this.form, this.options.loadingClassName);
        this.editField.disabled = false;
        this.editField.value = transport.responseText;
        Field.scrollFreeActivate(this.editField);
    }
});
Object.extend(Ajax.InPlaceEditor.prototype, {
    getText: function() {
        return this.element.childNodes[0] ? this.element.childNodes[0].nodeValue : '';
    }
});

//////////////////////////////////////////////////////////////////////////////////
// GIF ANIM FOR FILE UPLOAD
//////////////////////////////////////////////////////////////////////////////////
var loaderhtml = "<div class='loader'></div>";
var loaded=false;
var theform;

function hideFormFields() {
  var form = theform;
  form.getInputs().each(function(n) { 
    switch(n.readAttribute('type')) {
      case 'file':
        if ( BrowserDetect.browser != "Explorer") {
          new Insertion.After(n,loaderhtml);
        }
        n.hide();
        break;
      case 'submit':
        if (!n.readAttribute("onclick")) {
          n.disable();
          n.value="Submitting...";
          n.style.fontStyle="Italic";
        }
        break;
    }
  });
}

Event.observe(window,"load",function(n1){
 if(!loaded) {
  Element.getElementsBySelector(document, 'form').each(function(form){
    if (!form.readAttribute("onsubmit")) {
      // form.writeAttribute("onsubmit","return false;");
      Event.observe(form,"submit",function(myevent) {
        theform=form;
        if (/AppleWebKit|MSIE/.test(navigator.userAgent)) {
          new Ajax.Request("/ping/close", { asynchronous:false });
        }
        // form.submit();
        if ( BrowserDetect.browser != "Safari") {
          hideFormFields();
        }
      });
    }
  });
  // fix for firefox not showing the loading gif if it wasn't loaded/viewable yet
  if ( BrowserDetect.browser != "Explorer") {
    var objBody = document.getElementsByTagName("body").item(0);
    new Insertion.After(objBody.immediateDescendants().last(),loaderhtml);
    // new Insertion.After(Element.getElementsBySelector(document, 'body').eachimmediateDescendants().last(),loaderhtml);
    objBody.immediateDescendants().last().hide();
  }

//////////////////////////////////////////////////////////////////////////////////
// TOGGLER
//////////////////////////////////////////////////////////////////////////////////

  Element.getElementsBySelector(document, '.toggle').each(function(x){
    var legend = x.descendants().first();
    var title = legend.innerHTML;
    // legend.id = title+'_legend';
    var rnd = Math.random();
  	var rnd_key = String (rnd).substr(1,6);
    legend.id = rnd_key;
    var legid = legend.id;
    var hider = "<span id='"+legid+"_hider' class='toggle_hider'><a href='#' id='"+legid+"_hider_link'>"+title+"</a></span>";
    var shower = "<a href='#' class='toggle_shower' id='"+legid+"_shower'>"+title+"</a>";
    legend.innerHTML = shower;
    x.hide();
    // x.id = title+"_toggle";
    new Insertion.After(x,hider);
    Event.observe($(legid+"_hider_link"),"click",function(y){
      x.show();
      new Effect.Highlight(x);
      $(legid+"_hider").hide();
      y.stop();
      return false;
    })
    Event.observe($(legid+"_shower"),"click",function(y){
      x.hide();
      $(legid+"_hider").show();
      y.stop();
      return false;
    })
	});


  loaded=true;
}
});


//////////////////////////////////////////////////////////////////////////////////
// CALLBACK DURING SORT TO HANDLE PADDING ON LAST ELEMENT IN LIST
//////////////////////////////////////////////////////////////////////////////////
function update_sort_classes(id, count, options) {
  var selector = (options && options["selector"]) ? options["selector"] : "div";
  var first = (options && options["first"]) ? options["first"] : false;
  var index=0;
  $(id).getElementsBySelector(selector).each(function(n) {
    if (first) {
      if (index % count == 0) {
        n.addClassName('first');
      } else {
        n.removeClassName('first');
      }
    } else {
      if ((index+1) % count == 0) {
        n.addClassName('last');
      } else {
        n.removeClassName('last');
      }
    }
    index++;
  });
  // if ($('gallery-list-first')) {
  //   $('gallery-list-first').src = $(id).getElementsBySelector('div')[0].getElementsBySelector("img")[0].src.gsub(/tiny/,"display");
  // }
}

function toggleDivs(select, divclass) {
    Element.getElementsBySelector(document, 'div.'+divclass).each(function(x){
      x.hide();
    });
    if ($(divclass+'-'+select.value)) {
      $(divclass+'-'+select.value).show();
    }
}

//////////////////////////////////////////////////////////////////////////////////
// TURN EXTERNAL LINKS INTO NEW WINDOWS
//////////////////////////////////////////////////////////////////////////////////
function handleExternalLinks() { // function makes sure that external links open in new window
	var hostName = window.location.hostname;
  Element.getElementsBySelector(document, 'a').each(function(link){
		if(link.href.indexOf('http://') == 0 && link.href.indexOf(hostName) == -1 ) {
			var curTitle = (link.getAttribute("title")) ? link.getAttribute("title") + " - ": "";
			link.setAttribute("target", "_blank");
			if (curTitle != "opens in new window - ") {
			  link.setAttribute("title",  curTitle + "opens in new window");
		  }
		}
  });
}
Event.observe(window,"load",handleExternalLinks); 

var aardvarkTools = {
createElement : 
 function(elem,properties) {
 var i, s, p, c;
 if (typeof(elem)=="string")
  elem = document.createElement(elem);

 if (properties) {
   s = properties.style;
   if (s)
     for (i in s)
       elem.style[i] = s[i];
   for (i in properties) {
     p = properties[i];
     if (p != s)
       elem[i] = p;
   }
 }
 for (i=2; i < arguments.length; i++) {
   c = arguments[i];
   if (typeof(c) == "string")
     c = document.createTextNode(c);
   elem.appendChild(c);
 }
 return elem;
}
};
var el = aardvarkTools.createElement;

////////////////

function do_clone(id) {
  var elem = $(id);
  var newNode = elem.cloneNode(true);
  elem.ancestors()[0].appendChild(newNode);
}
