// ---------------------------------------------------------------------

/*@cc_on @*/     // Who doesn't love IE?

// ---------------------------------------------------------------------
// The de-facto shortcut for getElementById() from the Prototype library.
// http://prototype.conio.net/

if (! window.$) window.$ = function (element) {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
};

// ---------------------------------------------------------------------
// addEvent and removeEvent functions from the Quirksmode contest
// http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html

function dnAddEvent(obj, type, fn) {
    if (type == "dndomload") dnDomloadAddEvent(obj, fn);
    else if (obj.addEventListener) obj.addEventListener(type, fn, false);
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn](window.event); }
        obj.attachEvent("on"+type, obj[type+fn]);
    }
}

function dnRemoveEvent(obj, type, fn) {
    if (obj.removeEventListener) obj.removeEventListener(type, fn, false);
    else if (obj.detachEvent) {
        obj.detachEvent("on"+type, obj[type+fn]);
        obj[type+fn] = null;
        obj["e"+type+fn] = null;
    }
}

function dnEnableDomload () {
    // Can only be called once.
    if (dnOnDomload.enabled) return;
    dnOnDomload.enabled = true;
    
    /* for Mozilla/Opera9 */
    if (document.addEventListener) {
        document.addEventListener("DOMContentLoaded", dnOnDomload, false);
    }

    /* for Internet Explorer */
    /*@if (@_win32)
        document.write("<script id=__ie_onload defer src=//:><\/script>");
        var script = document.getElementById("__ie_onload");
        script.onreadystatechange = function() {
            if (this.readyState == "complete") {
                dnOnDomload(); // call the onload handler
            }
        };
    /*@end @*/

    /* for Safari */
    if (/WebKit/i.test(navigator.userAgent)) { // sniff
        dnOnDomload.timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) {
                dnOnDomload(); // call the onload handler
            }
        }, 10);
    }

    /* for other browsers */
    dnAddEvent(window, "load", dnOnDomload);
}

function dnDomloadAddEvent (obj, fn) {
    dnEnableDomload();
    
    if (!dnOnDomload.objects) dnOnDomload.objects = [];
    dnOnDomload.objects[dnOnDomload.objects.length] = obj;
    
    if (!dnOnDomload.callbacks) dnOnDomload.callbacks = [];
    dnOnDomload.callbacks[dnOnDomload.callbacks.length] = fn;    
}

function dnOnDomload () {
    // quit if this function has already been called
    if (dnOnDomload.done) return;

    // flag this function so we don't do the same thing twice
    dnOnDomload.done = true;

    // kill the timer
    if (dnOnDomload.timer) clearInterval(dnOnDomload.timer);

    for (var i=0; i < dnOnDomload.callbacks.length; i++) {
        var obj = dnOnDomload.objects[i];
        obj["dnOnDomload" + i] = dnOnDomload.callbacks[i];
        obj["dnOnDomload" + i]();
        obj["dnOnDomload" + i] = null;
    };
}

// ---------------------------------------------------------------------
// Finds the absolute position of an element on the page.

function dnFindPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft;
        curtop = obj.offsetTop;
        while (obj = obj.offsetParent) {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        }
    }
    return [curleft,curtop];
}


// ---------------------------------------------------
// Global JavaScript
// ---------------------------------------------------

function changePage(myUrl) {
  document.location.href = myUrl;
}


// ---------------------------------------------------
// Pop Ups
// ---------------------------------------------------

function popUpWin(myUrl,myWidth,myHeight,myTop,myLeft) {
  var newWindow = window.open(myUrl,"Backpage","scrollbars=1,status=1,resizable=1,menubar=1,width=" + myWidth + ",height=" + myHeight + ",top=" + myTop + ",left=" + myLeft);
  newWindow.focus();
}

function popUpMap(myUrl) {
  var mapWindow = window.open(myUrl,"BackpageMap","scrollbars=1,status=1,resizable=1,menubar=1,location=1,toolbar=1,height=570,width=770,top=10,left=10");
  mapWindow.focus();
}


// ---------------------------------------------------
// Cookies
// ---------------------------------------------------

function getCookie(name) {
  var start = document.cookie.indexOf(name + "=");
  var len = start + name.length + 1;
  if ((!start) && (name != document.cookie.substring(0, name.length))) return null;
  if (start == -1) return null;
  var end = document.cookie.indexOf( ";", len );
  if (end == -1) end = document.cookie.length;
  return unescape(document.cookie.substring(len, end));
}  


// ---------------------------------------------------
// HTML Helper Toolbar
// -- adapted from http://www.massless.org/mozedit/
// ---------------------------------------------------

function mozWrap(input, lft, rgt) {
  var txtarea = document.f[input];
  var selLength = txtarea.textLength;
  var selStart = txtarea.selectionStart;
  var selEnd = txtarea.selectionEnd;
  if (selEnd==1 || selEnd==2) selEnd=selLength;
  var s1 = (txtarea.value).substring(0, selStart);
  var s2 = (txtarea.value).substring(selStart, selEnd)
  var s3 = (txtarea.value).substring(selEnd, selLength);
  txtarea.value = s1 + lft + s2 + rgt + s3;
}

function IEWrap(lft, rgt) {
  var strSelection = document.selection.createRange().text;
  if (strSelection != "") {
    document.selection.createRange().text = lft + strSelection + rgt;
  }
}

function wrapSelection(input, lft, rgt) {
  if (document.all) { IEWrap(lft, rgt); }
  else if (document.getElementById) { mozWrap(input, lft, rgt); }
}
  

// ---------------------------------------------------
// Calendar
// ---------------------------------------------------

function popUpCalendar(inputName) {
  var calMonth = "";
  var calDay = "";
  var calYear = "";
  var sepStyle = "-";

  var dateValue = document.f[inputName].value;

  if (dateValue) {
    if (dateValue.indexOf("/") != -1) {
      d = dateValue.split("/");
      sepStyle = "/";
    } else {
      d = dateValue.split("-");
      sepStyle = "-";
    }

    var calMonth = d[0]-1;
    var calDay = d[1];
    var calYear = d[2];
  }
  else {
    var dateObj = new Date();
    calMonth = dateObj.getMonth();
    calDay = dateObj.getDate();
    calYear = dateObj.getFullYear();
  }

  var popUpUrl = "/gyrobase/tools/PopUpCalendar.html?";
  popUpUrl +=  "dateField=" + escape(inputName);
  popUpUrl += "&calMonth="  + escape(calMonth);
  popUpUrl += "&calDay="    + escape(calDay);
  popUpUrl += "&calYear="   + escape(calYear);
  popUpUrl += "&sepStyle="  + escape(sepStyle);
  popUpUrl += "&initMonth=" + escape(calMonth);
  popUpUrl += "&initDay="   + escape(calDay);
  popUpUrl += "&initYear="  + escape(calYear);

  if (window.left) var leftX = 350 + window.left;
  else if (window.screenX) var leftX = 350 + window.screenX;
  if (window.top) var topY = 200 + window.top;
  else if (window.screenY) var topY = 200 + window.screenY;
  window.open(popUpUrl,'','width=340,height=265,left='+leftX+',screenx='+leftX+',top='+topY+',screeny='+topY+',scrollbars=no,toolbar=no,location=no,status=yes,directories=no,personalbar=no');
}
  

// ---------------------------------------------------
// Extra Print Fields
// ---------------------------------------------------

function showName(){
  var showIt = false;
  if (document.f.printAd && document.f.printAd.checked) showIt = true;
  else if (document.f.promotion && document.f.promotion.checked) showIt = true;
  
  if (!showIt) {
    if (document.f.printAd){
      for (var i=0; i < document.f.printAd.length; i++){
        if (document.f.printAd[i].checked){
          showIt = true;
        }
      }
    }      
    if (document.f.promotion){
      for (var i=0; i < document.f.promotion.length; i++){
        if (document.f.promotion[i].checked){
          showIt = true;
        }
      }
    }
  }
  if (showIt) document.getElementById("namePhoneTable").style.display = 'block';
  else document.getElementById("namePhoneTable").style.display = 'none';                  
}
  

// ---------------------------------------------------
// Limit Text
// ---------------------------------------------------

function limitText(limitField, limitNum) {
  if (limitField.value.length > limitNum) limitField.value = limitField.value.substring(0, limitNum);
  document.getElementById("dynOfferWordCount").innerHTML = document.f.offer.value.length;
  document.getElementById("dynDescriptionWordCount").innerHTML = document.f.description.value.length;
}


// ---------------------------------------------------
// Social Bookmark Panel
// ---------------------------------------------------

dnAddEvent(window, "dndomload", function () {
  if (!$("shareLink") || !$("sharePanel")) return;

  // Position the panel below the link.
  var pos = dnFindPos($("shareLink"));
  $("sharePanel").style.position = "absolute";
  $("sharePanel").style.left = pos[0] + "px";
  $("sharePanel").style.top = (pos[1] + $("shareLink").clientHeight + 5) + "px";

  // Attach toggling function to the link's onclick.
  dnAddEvent($("shareLink"), "click", function () {
      var panel = $("sharePanel");
      if (panel.style.display == "block") panel.style.display = "none";
      else panel.style.display = "block";
      return false;
  });

  // Attach event to close link.
  if ($("shareClose")) dnAddEvent($("shareClose"), "click", function () {
      $("sharePanel").style.display = "none";
      return false;
  });
});


// ---------------------------------------------------
// Other Ads By This User AJAX
// Note that this function requires Prototype
// ---------------------------------------------------

function includeOtherAdsByThisUser (oid) {
    Event.observe(document, "dom:loaded", function () {
        var url = "/online/classifieds/OtherAdsByThisUser?oid=" + oid;
        new Ajax.Updater("OtherAdsByThisUser", url, { "method": "get" });
    });
};


// ---------------------------------------------------
// End
// ---------------------------------------------------
