/* -*- C++ -*- */

/* $Id: Main.js,v 1.9 2004/02/05 23:53:48 david Exp $ */

/* 99dogs.com central Javascript functions */

/*
Function Declaration:

ST_OpenWindow(URL, hWND, WindProps,w,h[, centered[, focussed]])

WHERE

URL        = Relative or Absolute url.                  [ String  ]
hWnd       = Window name. Special Values _blank _top.   [ String  ]
WindProps  = Any combination of javascript parameters.  [ String  ]
w          = Width of the new window.                   [ Integer ]
h          = Height of the new window.                  [ Integer ]
[centered] = Will override top, left and center window. [ Boolean ]
[focussed] = Will force the window to the front if open [ Boolean ]

remarks: Opens a new window

*/

function ST_OpenWindow(URL, hWnd, WindProps, w, h, centered, focussed)
{
  if (centered) {
    if (parseInt(navigator.appVersion) >= 4) {
      LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
      TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
      WindProps += ",top="+TopPosition+",left="+LeftPosition+",width="+w+",height="+h;
    }
  }
  else {
    WindProps += ",width="+w+",height="+h;
  }
  win = window.open(URL, hWnd, WindProps);

  if (focussed) {
    win.focus();
  }
  return win;
}

/* End ST_OpenWindow */

/*
Function Declaration:

ST_GetCookie(sName)

WHERE

sName        =  Cookie Name                [ String  ]

remarks: returns a cookie by name
*/

function ST_GetCookie(sName)
{
  var aCookie = document.cookie.split("; ");

  for (var i=0; i < aCookie.length; i++) {
    var aCrumb = aCookie[i].split("=");
    if (sName == aCrumb[0])
      return unescape(aCrumb[1]);
  }
  return null;
}
/* End ST_GetCookie */


/*
Function Declaration

ST_AdminDisplay()

remarks: Displays info via ad alert box for the admin console
*/

function ST_AdminDisplay()
{
  if (window) {
    if (ST_StringOrderProcessing(window.name) == "_arj" && menuCompatible) {
      //Send the manager the hash of the current order. Below is a static test value.
      alert(ST_StringOrderProcessing("Jrypbzr gb 99qbtf.pbz. Jr jrypbzr lbhe ivfvg ohg srry boyvtrq gb cbvag bhg gung guvf fvgr vf abg nffbpvngrq jvgu abe unf nal qrnyvatf jvgu Dhrpbz."));
    }
  }
}

/* End ST_AdminDisplay */

/*
Function Declaration

ST_StringOrderProcessing(text)

WHERE

text = Custom 99dogs.com order managers hash. This is later decoded by php. [String]

remarks: processes strings for the order manager

*/

function ST_StringOrderProcessing(text)
{
  var text1 = new String();
  text1 = text;
  var order_title = "";
  for (i = 1 ; i < (text1.length + 1); i++) {
    k = text1.charCodeAt(i-1);
    if (k >= 97 && k <= 109) {
      k = k + 13;
    } else if (k >= 110 && k <= 122) {
      k = k - 13;
    } else if (k >= 65 && k <= 77) {
      k = k + 13;
    } else if (k >= 78 && k <= 90) {
      k = k - 13;
    }
    order_title = order_title + String.fromCharCode(k);
  }
  return order_title;
}

/* End ST_StringOrderProcessing */

/*
  preloadImages

  preload the images passed as arguments

  from Macromedia v3.0
*/

function preloadImages()
{
  var d=document;
  if (d.images) {
    if (!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=preloadImages.arguments;
    for (i=0; i<a.length; i++) {
      if (a[i].indexOf("#")!=0) {
	d.MM_p[j]=new Image;
	d.MM_p[j++].src=a[i];
      }
    }
  }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/* Returns true if object is an instance of constructor, or an instance
 * of a subclass of constructor. This function does not yet appear to
 * work correctly
 */

function isInstanceOf(object, constructor)
{
  while (object != null) {
    if (object == constructor.prototype)
      return true;
    object = object.__proto__;
  }
  return false;
}

/* Sets the caret position to the end of the given text field. IE only. */

function setCaretAtEnd(field)
{
  if (field.createTextRange) {
    var r = field.createTextRange();
    r.moveStart('character', field.value.length);
    r.collapse();
    r.select();
  }
}

/* Returns true if obj has a property of the given name */

function hasProperty(obj, property)
{
  for (var i in obj) {
    if (i == property) {
      return true;
    }
  }
  return false;
}

function addOnLoad(fn)
{
  var previousOnLoad = (window.onload ? window.onload : new Function());
  window.onload = function () { previousOnLoad(); fn(); }
}

function find(id)
{
  if (document.getElementById)
    return document.getElementById(id);
  else if (document.all)
    return document.all[id];
  else
    return null;
}

function goLocation(href)
{
  closing = false;
  location.replace(href);
}
