///////////////////////////////////////////////
// Window-to-window communication -- start (this is the parent, the child is portfolio)
///////////////////////////////////////////////
/*
var childWindow = null

// Give the child window a link back to its parent
function makeLink() {
	// Is the entire file loaded in the window?
	if (childWindow.document.forms.length > 0)
		childWindow.myParent = self;
	else
		// No? Wait one second and try again
		setTimeout( "makeLink()", 1000)
	}

 // This function opens the child window
function openChild() {
	childWindow = window.open( "tick.html?formname=showportfolio&id=~17~", "child", "")
	makeLink()
	}

 // Display the info from our child window
function showInfo( f) {
	alert( "First Name - " + f.fName.value + "\nLast Name - " + f.lName.value)
	}
*/	
///////////////////////////////////////////////
// Window-to-window communication -- end  (this is the parent, the child is portfolio)
///////////////////////////////////////////////




function popup(url) {
var newWin = window.open(url,'popup','toolbar=no,location=no,resizable=yes, directories=no,status=yrd,menubar=no,scrollbars=yes,width=700,height=550,x=200,y=100');
newWin.focus();
}




// The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)
// See:  http://www.msc.cornell.edu/~houle/JavaScript/randomizer.html
rnd.today=new Date();
rnd.seed=rnd.today.getTime();

function rnd() {
        rnd.seed = (rnd.seed*9301+49297) % 233280;
        return rnd.seed/(233280.0);
};

function rand(number) {
        return Math.ceil(rnd()*number) -1;
};

// end central randomizer. -->


var bannerNum = 0;
var rotationInterval = 5000;

/**
 *
 */
function surfToBanner()
{
  window.location.href = links[bannerNum];
}

/**
 *
 */
function openBannerWindow()
{
  window.open(links[bannerNum]);
}


/**
 *
 */
function changeBanner()
{
   bannerNum = rand(banners.length);
   document.images["banner"].src = banners[bannerNum];
   window.setTimeout('changeBanner();', rotationInterval);
}



// File:
//   extract.js
// Author:
//   Samuel A. Rebelsky
//   This code may be freely reused for non-commercial purposes.
// Description:
//   Functions for extracting information (from query strings or
//   cookies or ...)
// Contents:
//   queryField(fieldname) -- extract a field from the query string
// Last modified:
//   Wednesday, June 11, 1997

// alert("Loading extract.js") // DEBUG

// Function
//   queryField(fieldname)
// Description
//   Looks at the query string to the document, and extracts
//   a field from the query. 
// Note
//   The query string has the form
//      ?<fldname>=<value>&<fldname>=<value>
function queryField(opt)
{

//  alert("argument passed: " + opt) // DEBUG

  var keyloc		// The location of the start of "key=value"
  var nextkey 		// The start of the next key
  var start 		// The start of the value
  var opts			// The options specified by the search string
  var optval		// The value of the selected option
  // Determine the options/search string
  
  opts=location.search;
  
// alert("location.search: " + opts) // DEBUG  
 
 if(opts == 0 || opts.length <= 0) return "  ";
   
  opts = replaceStandard(opts);

// alert("location.search: " + opts); // DEBUG  
 
  // Most keys start after an & and are followed by an = sign
  keyloc = opts.indexOf("&" + opt + "=")
  // If a string isn't found, indexOf returns -1.  So, we try the "first"
  // key, which appears right after the initial question mark
  if(keyloc == -1) {
    keyloc = opts.indexOf("?" + opt + "=")
  }
  // If, at this point, we still haven't found the key, stop.
  if (keyloc == -1) {
    return ""
  } 
  // The value normally ends with an ampersand (which marks the start of the next key/value pair)
  nextkey = opts.indexOf("&",keyloc+1)  
  // But sometimes there is no next pair
  if (nextkey == -1) {
    nextkey = opts.length
  }
  // Okay, what next?  Verify that it's reasonable
  if (nextkey < keyloc) {
    return ""
  }  
  // Get and return the value
  sval = keyloc+2+opt.length
  optval = plustospace(unescape(opts.substring(sval,nextkey)))
  return optval
} // getOption()

// Function
//   plustospace
// Description
//   Converts all the plus signs in a string to spaces.
//   (Most browsers convert spaces to pluses for form submission)
// Note
//   Not all of the code is what I'd expect, but this has been
//   thoroughly tested on Netscape Navigator 3.0 for the Mac.
function plustospace(txt)
{
  // Sanity check on empty string
  if (txt == "") { return txt }
  
  // Variables
  var newtxt=""  // The txt without the spaces
  var pos=0      // The position of the plus sign
  var prev=0     // The position of the previous plus sign
  var done=false // sentinel for loop
  var tmp        // Used for debugging
  
  // Repeatedly find the next + sign, stopping when no more
  // are found
  // alert("Text is '" + txt + "'") // DEBUG
  while (!done) {
    pos = txt.indexOf("+",prev)
    // tmp = prompt("Plus found at '" + pos + "'", "OK")  // DEBUG
    // if (tmp != "OK") { done = 1 }// DEBUG
    if (prev >= txt.length) {
      done = true
    }
    else if (pos == 0) {
      prev=1
      newtxt += " "
    }
    else if ((pos < 0) || (pos == "")) {
      // Not found ... exit
      done = true
    }
    else {
      // Copy text
      if (pos>prev) { newtxt += txt.substring(prev,pos) }
      newtxt += " "
      // And move on
      prev=pos+1
    }
  }
  // Get the last little bit
  newtxt += txt.substring(prev,txt.length)
  return newtxt  
} // plustospace()


  /**
   * Replace a character troughout a string with a string.
   *
   * @param str the original string.
   * @param pattern the original pattern to replace.
   * @param replacement the string to use as a replacement.
   * @return the original string with the characters replaced.
   */
  function replace(str, pattern, replacement)
  {
    var sb = "";
    var i = 0;
    var nsI = 0;

    while ((i = str.indexOf(pattern, i)) >= 0)
    {
      if (i != nsI)
      {
        sb += (str.substring(nsI, i));
      }

      sb += replacement;
      i += pattern.length;
      nsI = i;
    }

    sb += (str.substring(nsI, str.length));

    return sb;
  }



function validateScanForm(formObj)
{
  if(
       (formObj.MAXREC.value != "" && formObj.MAXREC.value.indexOf("|") != -1)
    || (formObj.TICKER.value != "" && formObj.TICKER.value.indexOf("|") != -1)
    || (formObj.COMPANY.value != "" && formObj.COMPANY.value.indexOf("|") != -1)
    || (formObj.VOLUME.value != "" && formObj.VOLUME.value.indexOf("|") != -1)
    || (formObj.PRICE_GT.value != "" && formObj.PRICE_GT.value.indexOf("|") != -1)
    || (formObj.PRICE_LT.value != "" && formObj.PRICE_LT.value.indexOf("|") != -1)
    || (formObj.CHANGE_GT.value != "" && formObj.CHANGE_GT.value.indexOf("|") != -1)
    || (formObj.CHANGE_LT.value != "" && formObj.CHANGE_LT.value.indexOf("|") != -1)
    || (formObj.REL_GT.value != "" && formObj.REL_GT.value.indexOf("|") != -1)
    || (formObj.REL_LT.value != "" && formObj.REL_LT.value.indexOf("|") != -1)
    )
  {
    alert("Invalid symbol: |");
    return false;
  }
  else
  {
    formObj.OFFSET.value = 0;
    formObj.FORMNAME.value = formObj.DEFAULT_FORMNAME.value;
    return true;
  }  
}


function validateScv(formObj)
{
  var oldOffset = formObj.OFFSET.value;
  if(validateScanForm(formObj))
  {
    formObj.OFFSET.value = oldOffset;
    formObj.FORMNAME.value = "CSV";
    formObj.submit();
    return true;
  }
  else
  {
    return false;
  }  
}



function validateMove(formObj, forward)
{
  var oldOffset = formObj.OFFSET.value;
  if(validateScanForm(formObj))
  {
    if(forward)
    {
      formObj.OFFSET.value = Math.abs(oldOffset) + Math.abs(formObj.MAXREC.value);
    }
    else
    {
      formObj.OFFSET.value = Math.abs(oldOffset) - Math.abs(formObj.MAXREC.value);
      if(formObj.OFFSET.value < 0)
      {
        formObj.OFFSET.value = 0;
      }
    }
    return true;
  }
  else
  {
    return false;
  }
}



function replaceStandard(opts)
{
  return unescape(opts);
}


function popupAlert()
{
  alert("This is the tutorial. Please login to see how it works.");
}


function validate(formObj)
{
  if(formObj.USERNAME.value == "")
  {
    alert("Username must not be blank");
    return false;
  }
  else if(formObj.PASSWORD.value == "")
  {
    alert("Please enter password");
    return false;
  }
  else
  {
    var url = replace(queryField("url"), "\"", "");
//    alert(url);
    formObj.url.value = url;
    return true;
  }
}

function validateLostPassword(formObj)
{
  if(formObj.USERNAME.value == "")
  {
    alert("Username must not be blank");
    return false;
  }
  else
  {
    formObj.formname.value = "lostpassword";
    formObj.submit();
  }
}



function validateReg(formObj)
{
  if(formObj.USERNAME.value == "")
  {
    alert("Username must not be blank");
    return false;
  }
  else if(formObj.PASSWORD.value == "")
  {
    alert("Password must not be blank");
    return false;
  }
  else if(formObj.PASSWORD.value != formObj.CPASSWORD.value)
  {
    alert("Please re-enter password");
    return false;
  }
  else if(formObj.EMAIL.value == "")
  {
    alert("E-mail must not be blank");
    return false;
  }
  else if(formObj.EMAIL.value.indexOf("@") == -1
    || formObj.EMAIL.value.indexOf(".") == -1)
  {
    alert("Invalid E-mail address");
    return false;
  } 
  else if(formObj.THESOURCE.value == "")
  {
    alert("Please specify how did you hear about us");
    return false;
  }
/*
  else if(formObj.FNAME.value == "")
  {
    alert("First name must not be blank");
    return false;
  }
  else if(formObj.LNAME.value == "")
  {
    alert("Last name must not be blank");
    return false;
  }
  else if(formObj.CITY.value != ""
    && formObj.STATE.value == "-1")
  {
    alert("Please enter state");
    return false;
  } 
*/
  else
  {
    return true;
  }
}

function displayCopyright()
{
  document.writeln("<p><center><span class=\"copyright\">");
  document.writeln("Copyright &copy; 2003-2006 AZ Software. All rights reserved");
  document.writeln("</span>");
  document.writeln("<br><a href=\"legal.html\" target=_blank><span class=\"content\">Legal disclaimer</span></a>");
  document.writeln(" - ");
  document.writeln("<a href=\"privacy.html\" target=_blank><span class=\"content\">Privacy statement</span></a>");
  document.writeln(" - ");
  document.writeln("<a href=\"mailto:admin@allstocks.info\"<span class=\"content\">Contact us</span></a>");
  document.writeln("</center></p>");
}


function displayCodesCopyright()
{
  document.writeln("<p><center><span class=\"copyright\">");
  document.writeln("Copyright &copy; 2003-2006 AZ Software. All rights reserved");
  document.writeln("</span>");
  document.writeln("<br><a href=..\"legal.html\" target=_blank><span class=\"content\">Legal disclaimer</span></a>");
  document.writeln(" - ");
  document.writeln("<a href=..\"privacy.html\" target=_blank><span class=\"content\">Privacy statement</span></a>");
  document.writeln(" - ");
  document.writeln("<a href=\"mailto:admin@allstocks.info\"<span class=\"content\">Contact us</span></a>");
  document.writeln("</center></p>");
}



/*
 * dec - number of decimal places
 */
function roundFormat(number, dec)
{

//  alert("number = " + number + "; dec = " + dec);

  if(isNaN(parseFloat(number)))
  {
//    alert("NaN");
    return number;
  }

  switch(dec)
  {
    case -1:
//    alert("round-1");
    return number;

    case 1:
//    alert("round1");
    return round1(number);

    case 2:
//    alert("round2");
    return round2(number);

    case 3:
//    alert("round3");
    return round3(number);    

    case 4:
//    alert("round4");
    return round4(number);    

    default:
//    alert("default");
    return number;
  }
}


function round4(number)
{
  var tmp = new Number(Math.round(number*10000)/10000).toString();
  var index = tmp.indexOf(".");
  var delta = tmp.length - index;

//  alert("number = " + number + "; index = " + index + "; delta = " + delta);

  if(index == -1)
  {
    return tmp + ".0000";
  }

  switch(delta)
  {
    case 0:
    return tmp + "0000";

    case 1:
    return tmp + "0000";

    case 2:
    return tmp + "000";

    case 3:
    return tmp + "00";

    case 4:
    return tmp + "0";

    case 5:
    return tmp;

    default:
    return tmp.substring(0, index + 4);
  }
}


function round3(number)
{
  var tmp = new Number(Math.round(number*1000)/1000).toString();
  var index = tmp.indexOf(".");
  var delta = tmp.length - index;

//  alert("number = " + number + "; index = " + index + "; delta = " + delta + "; tmp = " + tmp);

  if(index == -1)
  {
    return tmp + ".000";
  }


  switch(delta)
  {
    case 0:
    return tmp + "000";

    case 1:
    return tmp + "000";

    case 2:
    return tmp + "00";

    case 3:
    return tmp + "0";

    case 4:
    return tmp;

    default:
    return tmp.substring(0, index + 3);
  }
}



function round2(number)
{
  var tmp = new Number(Math.round(number*100)/100).toString();
  var index = tmp.indexOf(".");
  var delta = tmp.length - index;

//  alert("number = " + number + "; index = " + index + "; delta = " + delta + "; tmp = " + tmp);

  if(index == -1)
  {
    return tmp + ".00";
  }

  switch(delta)
  {
    case 0:
    return tmp + "00";

    case 1:
    return tmp + "00";

    case 2:
    return tmp + "0";

    case 3:
    return tmp;

    default:
    return tmp.substring(0, index + 2);
  }
}


function round1(number)
{
  var tmp = new Number(Math.round(number*10)/10).toString();
  var index = tmp.indexOf(".");
  var delta = tmp.length - index;

//  alert("number = " + number + "; index = " + index + "; delta = " + delta + "; tmp = " + tmp);

  if(index == -1)
  {
    return tmp + ".0";
  }

  switch(delta)
  {
    case 0:
    return tmp + "0";

    case 1:
    return tmp + "0";

    case 2:
    return tmp;

    default:
    return tmp.substring(0, index);
  }
}



var names=new Array
(
  "Home",
  "Manage your strategies",
  "Best Strategies",

  "MARKET SCAN",
  "Market snapshot",
  "Today green",
  "Manage portfolio",
  "Register",
  "Update profile",

//  "separator",

  "FAQ",
  "Links",
  "Submit link",

  "Log off"

//  "Examples",
//  "Picks",

);
  

var images=new Array
(
  "buttons/home.jpg",
  "buttons/manage.jpg",
  "buttons/best.jpg",

  "buttons/scan.jpg",
  "buttons/snapshot.jpg",
  "buttons/redgreen.jpg",
  "buttons/portfolio.jpg",
  "buttons/register.jpg",
  "buttons/update.jpg",

//  "separator",

  "buttons/faq.jpg",
  "buttons/links.jpg",
  "buttons/submitlink.jpg",

  "buttons/logoff.jpg"

//  "buttons/examples.jpg",
//  "buttons/picks.jpg",

);

var images_down=new Array
(
  "buttons/home_down.jpg",
  "buttons/manage_down.jpg",
  "buttons/best_down.jpg",

  "buttons/scan_down.jpg",
  "buttons/snapshot_down.jpg",
  "buttons/redgreen_down.jpg",
  "buttons/portfolio_down.jpg",
  "buttons/register_down.jpg",
  "buttons/update_down.jpg",

//  "separator",

  "buttons/faq_down.jpg",
  "buttons/links_down.jpg",
  "buttons/submitlink_down.jpg",

  "buttons/logoff_down.jpg"

//  "buttons/examples_down.jpg",
//  "buttons/picks_down.jpg",

);

var images_over=new Array
(
  "buttons/home_over.jpg",
  "buttons/manage_over.jpg",
  "buttons/best_over.jpg",

  "buttons/scan_over.jpg",
  "buttons/snapshot_over.jpg",
  "buttons/redgreen_over.jpg",
  "buttons/portfolio_over.jpg",
  "buttons/register_over.jpg",
  "buttons/update_over.jpg",

//  "separator",

  "buttons/faq_over.jpg",
  "buttons/links_over.jpg",
  "buttons/submitlink_over.jpg",

  "buttons/logoff_over.jpg"

//  "buttons/examples_over.jpg",
//  "buttons/picks_over.jpg",

);

var images_inactive=new Array
(
  "buttons/home_down.jpg",
  "buttons/manage_down.jpg",
  "buttons/best_down.jpg",

  "buttons/scan_down.jpg",
  "buttons/snapshot_down.jpg",
  "buttons/redgreen_down.jpg",
  "buttons/portfolio_down.jpg",
  "buttons/register_down.jpg",
  "buttons/update_down.jpg",

//  "separator",

  "buttons/faq_down.jpg",
  "buttons/links_down.jpg",
  "buttons/submitlink_down.jpg",

  "buttons/logoff_down.jpg"

//  "buttons/examples_down.jpg",
//  "buttons/picks_down.jpg",
);


var urls=new Array
(
  "index.jsp?",
  "AllstocksServlet?formname=strategies&",
  "compare.html?",

  "AllstocksServlet?formname=QUERY&",
  "marketreport.html?pagename=Market%20snapshot&",
  "stockpicks.html?pagename=Today%20green&",
  "AllstocksServlet?formname=MANAGEPORTFOLIO&ACTION=SHOW&",
  "register.html?formname=register&",
  "AllstocksServlet?formname=show_user_update&",

//  "<br><center><span class=header2>Members' area</span></center>",

  "faq.html?",
  "links.html?",
  "addlink.html?",

  "logon.html?_"

//  "/allstocks/AllstocksServlet?formname=show_portfolio&ID=2&DEMO_USER_ID=1&",
//  "picks.html?",

);



//var rowMenuItems=5;
var rowMenuItems=5;

function displayMenu(pageName, userId)
{
  document.write("<center>\r\n");
  document.write("<table>\r\n");
  document.write("  <tr>\r\n");
//  document.write("    <td nowrap align=left>\r\n");
//  document.write("      <img src=\"images/allstocks.gif\"/>\r\n");
//  document.write("    </td>\r\n");

  document.write("    <td nowrap align=left>\r\n");
  document.write("<IFRAME src=\"market_indices.jsp\" width=\"350\" height=\"120\" scrolling=no></IFRAME>\n");
  document.write("    </td>\n");


  document.write("    <td nowrap align=center>\r\n");


  if(userId == null || userId == "")
  {
    userId = queryField("USER_ID");
  }

  document.write("<form name=\"menu\" method=\"GET\">");

  var str = "";
  var totalStr = "";
  var count = 0;

  for(i=0; i<urls.length; i++)
  {
    if(pageName == names[i])
    {
      str = "<img name=\""
        + "A" + i
        + "\" src=\""
        + images_inactive[i]
        + "\">";
    }
    if(names[i].toLowerCase() == "separator")
    {
      str = urls[i];
      count = -1;
    }
    else
    {
      str = "<a href=\""
        + urls[i]
        + "USER_ID="
        + userId

        + "\" onmouseover=\"document.images['"
        + "A" + i
        + "'].src='"
        + images_over[i]
        + "'\""

        + " onmousedown=\"document.images['"
        + "A" + i
        + "'].src='"
        + images_down[i]
        + "'\""

        + " onmouseout=\"document.images['"
        + "A" + i
        + "'].src='"
        + images[i]
        + "'\""

        + ">"

        + "<img name=\""
        + "A" + i
        + "\" src=\""
        + images[i]
        + "\" border=0></a>";
    }


    if((count+1)%rowMenuItems == 0)
    {
      str += "<br>";
    }

//alert(str);

    document.write(str);
    totalStr += str;
    count++;
  }

//  document.write("<textarea name=\"crit\" cols=\"60\" rows=\"5\">" + totalStr + "</textarea>");

  document.write("</form>");

  document.write("    </td>\r\n");
  document.write("  </tr>\r\n");
  document.write("</table>\r\n");
  document.write("</center>\r\n");
}


