var browserName = navigator.appName.toLowerCase();
var browserVersion = parseInt(navigator.appVersion);
var ua = navigator.userAgent.toLowerCase();

var ns4 = (document.layers)? true:false;
var ie = (document.all)? true:false;
var ns6 = ((document.getElementById) && (!document.all))? true:false;

var mac = (ua.indexOf("mac")!=-1)? true:false;
var mac45 = ((ua.indexOf("mac")!=-1) && (ua.indexOf("4.5")!=-1))? true:false;

var ns =  (browserName.indexOf("netscape")>-1)? true:false;
var safari =  (ua.indexOf("safari")>-1)? true:false;


var macbufferInt;
var macready = false;

String.prototype.trim = function () {
     return this.replace(/^\s*|\s*$/,"");
}

function download(dURL) {
     if (ie) {
          downloader.startDownload(dURL,parseCommand);
     } else if (document.getElementById) {
          var httpRequest = new XMLHttpRequest();
          httpRequest.open('GET', dURL, false);
          httpRequest.send(null);
          parseCommand(httpRequest.responseText);
     } else if (ns4){
          var buff = showme(dURL);
          command = read(buff);
          parseCommand(command);
     }
}

function getMacdata() {
     if ((macbuffer.document.readyState == 'complete') && (macready)) {
          window.clearInterval(macbufferInt);
          macready = false;
          parseCommand(macbuffer.getHTML());
     }
}

function getElement(objid, d) {

     if (document.getElementById) {
          return document.getElementById(objid);
     } else if (document.all) {
          return document.all[objid];
     } else if (document.layers) {
          var x;
          if (!d) d=document;
          if(!(x=d[objid])&&d.all) x=d.all[objid];
          for (i=0;(!x)&&(i<d.forms.length);i++){
               if(!x)x=d.forms[i][objid];
          }
          //if(objid='schemeControl')alert(d.layers.length);
          for (i=0;(!x)&&(i<d.layers.length);i++){
               //x=d[objid];
               x=d.layers[i][objid];
               if(!x && (d.layers[i]!="length")) x=getElement(objid, d.layers[i].document);

          }
          return x;
     }
}

function clean(somestring) {
     while (somestring.indexOf(String.fromCharCode(10)) >= 0) {
          temp1 = somestring.substring(0, somestring.indexOf(String.fromCharCode(10)));
          temp2 = somestring.substring((somestring.indexOf(String.fromCharCode(10))+1), somestring.length);
          somestring = temp1 + temp2;
     }
     while (somestring.indexOf(String.fromCharCode(13)) >= 0) {
          temp1 = somestring.substring(0, somestring.indexOf(String.fromCharCode(13)));
          temp2 = somestring.substring((somestring.indexOf(String.fromCharCode(13))+1), somestring.length);
          somestring = temp1 + temp2;
     }
     return somestring;
}

function parseCommand(result) {
     //alert(result);
     downloading = false;
     if (result.indexOf('^^') >= 0) {
          lines = result.split('\n');
          for (var each in lines) {
               if (lines[each].indexOf('^^') >= 0) {
                    commands = lines[each].split('^^');
                    eval('on' + commands[0] + '(\'' + escape(clean(commands[1])) + '\')');
               }
          }
     }
}

function hideLayer(section) {
  ref = getElement (section);
  if (ref.style) {
    ref = ref.style.visibility = 'hidden';
  } else {
    ref.visibility = 'hide';
  }
  return;
}

function showLayer(section) {
  ref = getElement(section);
  if (ref.style) {
    ref = ref.style.visibility = 'visible';

  } else {
    ref.visibility = 'show';

  }
  return;
}


function showme(url) {
     var urlObj = new java.net.URL(url);
     var httpObj = urlObj.openConnection();
     var bufferedReader = new java.io.BufferedReader(new java.io.InputStreamReader(httpObj.getInputStream()));
     return bufferedReader;
}


function read(buffer) {
     var result = '';
     var tempResult = buffer.readLine();
     while (tempResult != null) {
          result += tempResult + '\n';
          tempResult = buffer.readLine();
     }
     return result;
}

function imageOn(button){
     if(document.images){
          tempImage = eval(button + "On");
          document.images[button].src =tempImage.src;
     }
     return;
}

function imageOff(button){
     if(document.images){
          tempImage = eval(button + "Off");
          document.images[button].src =tempImage.src;
     }
     return;
}

var currentMenu;
function showMenu(thisLayer){
     if(currentMenu!=null) hideMenu(currentMenu);
     currentMenu = thisLayer;
     menu = 'menu' + thisLayer;
     chart = 'chart' + thisLayer;
     fixPosition(menu,chart);
     var func = 'showLayer(\'' + menu + '\')';
     setTimeout(func, 25);
     return;
}


function hideMenu(thisLayer){
     hideLayer('menu' + thisLayer);
     return;
}


// both IE5 and NS6 are DOM-compliant (well, sort of...)
isDOM = (document.getElementById ? true : false);

// get the true offset
function getAbsX (elt) {
  if (elt.x) return (elt.x);

  var xpos = 0;
  while (elt != null) {
    xpos += elt.offsetLeft;
    elt = elt.offsetParent;
  }
  return xpos;
}

function getAbsY (elt) {
  if (elt.y) return (elt.y);

  var ypos = 0;
  while (elt != null) {
    ypos += elt.offsetTop;
    elt = elt.offsetParent;
  }
  return ypos;
}

function getDivStyle(divname) {
     var style;
     if (document.getElementById ? true : false) {
          style = document.getElementById(divname).style;
     }
     else {
          style = (ie) ? document.all[divname].style : document.layers[divname];
     }
     return style;
}

function setPosition(elt,positionername,isPlacedUnder) {
     var positioner = getElement (positionername);
     elt.left = getAbsX(positioner);
     elt.top = getAbsY(positioner);
}


function fixPosition(divName, imgName) {
     setPosition (getDivStyle(divName), imgName)
}

function fixPositionLeft(divName, imgName) {
     setPositionLeft (getDivStyle(divName), imgName)
}

function setPositionLeft(elt,positionername,isPlacedUnder) {
          var positioner = getElement (positionername);
          x = getAbsX(positioner);
          w = elt.width;
          if(w.indexOf('p')>-1){
               w = w.substring(0,w.indexOf('p')); //removes 'px' from some browsers
          }
          elt.left = (x-w);
          elt.top = getAbsY(positioner);
}


function openWindow(url,name,widgets)
{
     popupWin = window.open(url,name,widgets);
     popupWin.opener.name="opener";
}

function getBrowserWidth () {
  var returnWidth=0;
  if (ie) {
   returnWidth = document.body.clientWidth;
  } else {
   returnWidth = window.innerWidth;
  }
  return returnWidth;
}

function getBrowserHeight() {
  var returnHeight=0;
  if (ie) {
   returnHeight = document.body.clientHeight;
  } else {
   returnHeight = window.innerHeight;
  }
  return returnHeight;
}

function getScreenWidth () {
     var w = window.screen.availWidth;
     return w;
}


//Open Centered Popup Window Script
function OpenCenteredWindow(theURL,winName,features, myWidth, myHeight, isCenter){
  if(window.screen)if(isCenter)if(isCenter=="true")
  {
    var myLeft = (screen.width-(myWidth+20))/2;
    var myTop = (screen.height-(myHeight+20))/2;
    features+=(features!='')?',':'';
    features+=',left='+myLeft+',top='+myTop;
  }
  var openwin = window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
  openwin.focus();
  return;
}

function deleteSymbolThroughImg(sym,image,fromPopup){
     chartImage = 'chart' + sym;
     url = "/manage/updatewatchlist.jsp?deleteSymbols=" + sym;
     hiddenRequest = document.images[image];
     hiddenRequest.src=url;
     hideMenu(sym);
     doc = document;
     if (fromPopup && opener) doc = opener.document;
     if(doc.images[chartImage]){
          doc.images[chartImage].src="/images/symbolDeleted.gif";
          doc.images[chartImage].height=25;
          doc.images[chartImage].width=100;
          doc.images[chartImage].border=0;
     }


     //if(doc.location.href.indexOf('watchlist.jsp')>-1){
     //   setTimeout('doc.submitForm();',750);
     //}

}

function showtip(current,e,text){
     if (document.all||document.getElementById){
          thetitle=text.split('<br>')
     if (thetitle.length>1){
          thetitles=''
     for (i=0;i<thetitle.length;i++)
          thetitles+=thetitle[i]
          current.title=thetitles
     }
     else
          current.title=text
     }

     else if (document.layers){
          document.tooltip.document.write('<layer bgColor="white" style="border:1px solid black;font-size:12px;">'+text+'</layer>')
          document.tooltip.document.close()
          document.tooltip.left=e.pageX+5
          document.tooltip.top=e.pageY+5
          document.tooltip.visibility="show"
     }
}
function hidetip(){
     if (document.layers)
     document.tooltip.visibility="hidden"
}

