// Example: obj = findObj("image1");
function findObj(theObj, theDoc)
{
  var p, i, foundObj;

  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
  {
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);
  }
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++)
    foundObj = theDoc.forms[i][theObj];
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)
    foundObj = findObj(theObj,theDoc.layers[i].document);
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);

  return foundObj;
}

// * Dependencies *
// this function requires the following snippets:
// JavaScript/readable_MM_functions/findObj
//
// Accepts a variable number of arguments, in triplets as follows:
// arg 1: simple name of a layer object, such as "Layer1"
// arg 2: ignored (for backward compatibility)
// arg 3: 'hide' or 'show'
// repeat...
//
// Example: showHideLayers(Layer1,'','show',Layer2,'','hide');
function showHideLayers()
{
  var i, visStr, obj, args = showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  {
    if ((obj = findObj(args[i])) != null)
    {
      visStr = args[i+2];
      if (obj.style)
      {
        obj = obj.style;
        if(visStr == 'show') visStr = 'visible';
        else if(visStr == 'hide') visStr = 'hidden';
      }
      obj.visibility = visStr;
    }
  }
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

var bIsIE5 = -1 != navigator.userAgent.indexOf("MSIE 5");
var bIsIE4 = -1 != navigator.userAgent.indexOf("MSIE 4");
var bIsIE6 = -1 != navigator.userAgent.indexOf("MSIE 6");

function HandleMouseover()
{
  var eSrc = window.event.srcElement;
  if ("LABEL" == eSrc.tagName.toUpperCase() && !document.all[eSrc.htmlFor].disabled) eSrc.style.color = "#003399";
}

function HandleMouseout()
{
  var eSrc = window.event.srcElement;
  if ("LABEL" == eSrc.tagName.toUpperCase()) eSrc.style.color = "";
}

if (bIsIE4 || bIsIE5 || bIsIE6)
{
  document.onmouseover = HandleMouseover;
  document.onmouseout = HandleMouseout;
}

// general purpose function to see if an input value has been
// entered at all
function isEmpty(inputStr) {
  if (inputStr == null || inputStr == "") {
    return true;
  }
  return false;
}

// general purpose function to see if a suspected numeric input
// is a positive integer
function isPosInteger(inputVal) {
  inputStr = inputVal.toString();
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (oneChar < "0" || oneChar > "9") {
      return false;
    }
  }
  return true;
}

// general purpose function to see if a suspected numeric input
// is a positive or negative integer
function isInteger(inputVal) {
  inputStr = inputVal.toString();
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (i == 0 && oneChar == "-") {
      continue;
    }
    if (oneChar < "0" || oneChar > "9") {
      return false;
    }
  }
  return true;
}

// general purpose function to see if a suspected numeric input
// is a positive or negative number
function isNumber(inputVal) {
  oneDecimal = false;
  inputStr = inputVal.toString();
  for (var i = 0; i < inputStr.length; i++) {
    var oneChar = inputStr.charAt(i);
    if (i == 0 && oneChar == "-") {
      continue;
    }
    if (oneChar == "." && !oneDecimal) {
      oneDecimal = true;
      continue;
    }
    if (oneChar < "0" || oneChar > "9") {
      return false;
    }
  }
  return true;
}

function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
      var tempStr = "a";
      var tempReg = new RegExp(tempStr);
      if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported)
      return (str.indexOf(".")> 2) && (str.indexOf("@")> 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function Focus1stElement() {
  if (document.forms[0])
    if (document.forms[0].elements.length > 0)
      document.forms[0].elements[0].focus();
}

function moneyCommaSep(ctrl)
{
  var separator = ",";
  var int = ctrl.value.replace ( new RegExp ( separator, "g" ), "" );
  var regexp = new RegExp ( "\\B(\\d{3})(" + separator + "|$)" );
  do
  {
    int = int.replace ( regexp, separator + "$1" );
  }
  while ( int.search ( regexp ) >= 0 )
  ctrl.value = int;
}

function removeComma(ctrl)
{
  var separator = ",";
  
  ctrl.value = ctrl.value.replace ( new RegExp ( separator, "g" ), "" );
}

function CookieValue(CookieName) {

  thisCookie = document.cookie.split("; ");
  for(i=0; i<thisCookie.length; i++) {
    if(CookieName == thisCookie[i].split("=")[0]) {
	  return(parseInt(thisCookie[i].split("=")[1]));	
	}
  }
  
  return(0);

} 

function CalcUserGrade(page) {
var rNum;

  if(CookieValue("UserGrade") >= 100) 
    return(true);

  rNum = Math.floor(Math.random()*100);
  if(CookieValue(page) == 0) {
     switch(page) {
       case "Result" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 40);
  	      break;
       case "Detail" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 30);
	      break;
       case "Panaroma" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 10);
	      break;
       case "Return2Result" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 10);
	      break;
       case "About" :
	      if(rNum < 60)
  	        document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 20);
	      break;
       case "Contact" :
	      if(rNum < 70)
	        document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 20);
	      break;
       case "Addestate" :
	      if(rNum < 50)
 		    document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 20);
	      break;
     }
     document.cookie = page + "=1";
  }else{
     switch(page) {
       case "Detail" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 5);
	      break;
       case "Panaroma" :
	      document.cookie = "UserGrade=" + (CookieValue("UserGrade") + 2);
	      break;
     }
  }	 
  
  /*
  window.document.title = window.document.title.split("#")[0] + " # User Grade = " + CookieValue("UserGrade");
  if(CookieValue("UserGrade") >= 100) {
    var MyWin;
	
	MyWin = window.open('../adv/PastooFreeAccount.asp', 'Result', 'toolbar=no,status=no,width=10,height=10,left=0,top=0');
	for(i=0; i<300; i+=1) {
	  MyWin.resizeBy(1, 1);
	}
  }	
  */
  
  return(true);
}
