//Cookie.js
// name - name of the cookie
// value - value of the cookie
// [expires] - expiration date of the cookie (defaults to end of current session)
// [path] - path for which the cookie is valid (defaults to path of calling document)
// [domain] - domain for which the cookie is valid (defaults to domain of calling document)
// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission
// * an argument defaults when it is assigned null as a placeholder
// * a null placeholder is not required for trailing omitted arguments
function SetCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function GetCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

// name - name of the cookie
// [path] - path of the cookie (must be same as path used to create cookie)
// [domain] - domain of the cookie (must be same as domain used to create cookie)
// * path and domain default if assigned null or omitted if no explicit argument proceeds
function DeleteCookie(name, path, domain) {
  if (GetCookie(name)) {
    document.cookie = name + "=" + 
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

// date - any instance of the Date object
// * hand all instances of the Date object to this function for "repairs"
function fixdate(date) {
  var base = new Date(0);
  var skew = base.getTime();
  if (skew > 0)
    date.setTime(date.getTime() - skew);
}

//Daydate.js
function daydate() {
 
  d = new Array();
  d[0] = "Sunday";
  d[1] = "Monday";
  d[2] = "Tuesday";
  d[3] = "Wednesday";
  d[4] = "Thursday";
  d[5] = "Friday";
  d[6] = "Saturday";
 
  m = new Array();
  m[0] = "January";
  m[1] = "February";
  m[2] = "March";
  m[3] = "April";
  m[4] = "May";
  m[5] = "June";
  m[6] = "July";
  m[7] = "August";
  m[8] = "September";
  m[9] = "October";
  m[10] = "November";
  m[11] = "December";
 
  today = new Date();
 
  document.write(d[today.getDay()]+", ");
  document.write(m[today.getMonth()]+" ");
  document.write(today.getDate()+", ");
  document.write(""+today.getFullYear());
}

//searchform.js
function queryTransfer()
{
	if (document.getElementById("searchQueryString").value != '')
	{
		window.location.href="http://search.geminicomputersinc.com/?query="+document.getElementById("searchQueryString").value+"&answerid="+document.getElementById("searchQueryID").value;
	}
	else 
	{
		alert("The search string field is empty!");
	}
}


//savetrail.js
function FormatNumber(expr, decplaces) {

var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));

while (str.length <= decplaces) {
str = "0" + str;
}

var decpoint = str.length - decplaces;

return str.substring(0,decpoint) + "." + str.substring(decpoint, str.length);

}
if (document.getElementById) { isID = 1; isDHTML = 1; }
else {
   if (document.all) {isAll = 1; isDHTML = 1; } 
   else {
      browserVersion = parseInt(navigator.appVersion);
   if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {isLayers = 1; isDHTML = 1; }
} }

function findDOM(objectID,withStyle) {
   if (withStyle == 1) {
      if (isID) { return (document.getElementById(objectID).style); }
      else {
         if (isAll) { return (document.all[objectID].style); }
      else {
         if (isLayers) { return (document.layers[objectID]); }
      } ; }
   }
      else {
         if (isID) { return (document.getElementById(objectID)); }
      else {
         if (isAll) { return (document.all[objectID]); }
      else {
         if (isLayers) {return (document.layers[objectID]); }
      } ; }
   }
}

function GenericPopup(src)
{
window.open(src, "win", "width=590,height=590,resizable=1,scrollbars=1,scrolling=auto")
}

function RemoveStr(src,target)
{
  var result = src;
  
  var i = result.indexOf(target);
  if ( i > -1 ) // if the elem is already stored, remove it first.
  {
    var left = result.substr(0,i);
    var right = result.substr(i + target.length);
    if (left.substr( left.length-1, 1 ) == ",")
    {
        left = left.substr(0, left.length - 1);
    }
    if (right.substr(0,1) == ",")
    {
        right = right.substr(1);
    }
    if (right.length > 0 && left.length > 0)
    {
      result = left + "," + right;
    }
    else if (left.length > 0)
    {
      result = left;
    }
    else
    {
      result = right;
    }
  }
  return (result);
}

function SaveSearch(frm)
{
  SaveTrail(frm.query.value,null,null,"Search",4);
}

function ShowSearches()
{
    var searches = GetCookie("Search");
    if (searches == null)
      searches = ""
    var trail = searches.split(",");
    while ( trail.length > 0 && trail[0] == "" )
    {
        trail.shift();
        l = trail.length;
    }

    if ( trail.length > 0 )
    {
        document.write("<label>Your Recent Searches</label>");
        for ( i = trail.length - 1; (i >= trail.length - 6) && (i >= 0); i-- )
        {
            document.write("<a href=http://search.store.yahoo.com/cgi-bin/nsearch?catalog=geminicomputersinc&query=" + escape(trail[i]) + ">" + unescape(trail[i]) + "</a><br>");
        }
    }
}

function SaveTrail(id,name,img,cookie,size,price)
{
  var path = "";
  var path = GetCookie(cookie);
  if (path == null)
    path = "";

  var elem;
  if (id && name)
  {
    elem = id + "|" + escape(name) + "|" + img + "|" + price;
  }
  else
  {
    elem = id;
  }
  path = RemoveStr(path,elem);
  var trail = path.split(",");
  var l = trail.push( elem );
  while ( trail.length > 0 && trail[0] == "" )
  {
    trail.shift();
    l = trail.length;
  }
  while ( l > parseInt(size) )
  {
    trail.shift();
    l = trail.length;
  }
  
  path = trail.toString();
  // make it expire in one day
  var dt = new Date();
  dt.setTime(dt.getTime() + 24 * 60 * 60 * 1000);
  SetCookie(cookie, path, dt);
}

function ShowTrail()
{
    var path = GetCookie("Path");
    if (path == null)
      path = "";

  var trail = path.split(",");
  while ( trail.length > 0 && trail[0] == "" )
  {
    trail.shift();
    l = trail.length;
  }

  if ( trail.length > 0 )
  {
      document.write("<b>Recently Viewed Categories:</b><br><div id=trail><ul>");
      for ( i = trail.length - 1; (i >= trail.length - 6) && (i >= 0); i-- )
      {
        elem = trail[i].split("|");
        if ( elem[0].length > 0 )
        {
            document.write ( "<li><a href=" + elem[0] + ".html>" + unescape(elem[1]) + "</a></li> ");
        }
      }
      document.write("</ul></div>");
  }
}

function ShowFullTrail(type)
{
    var ck = (type == "Items" ? "Path" : "Section");

    var path = GetCookie(ck);
    if (path == null)
      path = "";

  var trail = path.split(",");
  while ( trail.length > 0 && trail[0] == "" )
  {
    trail.shift();
    l = trail.length;
  }

  if ( trail.length > 0 )
  {
    var columns = 4;
    var NewRow = true;
    var InRow = false;
    var colwid = 100 / columns;
    
    document.write("<tr><td colspan=3 class=vieweditems>");
    document.write("<p class=boxhead>Viewed Item History</p>");
    document.write("<table border=0 cellpadding=0 cellspacing=6 width=100%>");
    var j = 1;
	var pq = 0;
    for ( i = trail.length - 1; i >= 0; i-- )
    {
        if (NewRow)
        {
            document.write("<tr valign=top>");
            NewRow = false;
            InRow = true;
        }
        elem = trail[i].split("|");
        if ( elem[0].length > 0 )
        {
            if (j % columns == 0) document.write("<td width=" + colwid + "%><table border=0 cellpadding=0 cellspacing=2 width=100%><tr><td align=center width=40>");
			else document.write("<td width=" + colwid + "% class=histbox><table border=0 cellpadding=0 cellspacing=2 width=100%><tr><td align=center width=40>");
            if (typeof(elem[2]) != 'undefined' && elem[2].length > 0)
            {
                document.write ( "<img border=0 align=absmiddle src=" + elem[2] + ">&nbsp;" );
            }
            document.write("</td><td>");
            document.write( "<a href=" + elem[0] + ".html class=histlink>" + unescape(elem[1].replace(/`/gi, "'").replace(/%26%2396%3B/gi,"'")) + "</a><br><br>");
            if ( typeof(elem[3]) != "undefined" ) document.write("<font color=red>$"+FormatNumber(elem[3],2)+"</font>");
			document.write("</td></tr></table></td>");
        }
		if ( i == 0 && trail.length < columns ) 
		{
			for ( pq = 1; pq <= ( columns - trail.length ); pq++) 
			{
				document.write("<td><font color=white>.</font></td>");
			}
		}
        if (j % columns == 0)
        {
            document.write("</tr>");
            NewRow = true;
            InRow = false;
        }
        j++;
    }
    if (InRow)
        document.write("</tr>");
    document.write("</table></td></tr>");
  }
}
