<!--

  /***************************************************************
  ***  A few basic tricks.
  ***
  ***  1.  Force IE to use the DOM Standard
  ***  2.  Remap getElementById to $() for quick use
  ***  3.  Remap getElementsByName to $$() for quick use
  ***
  ***************************************************************/
  

  if(document.all && !document.getElementById){
    document.getElementById = function(id){ return document.all[id] }
  }

  function $(name){
    var test = document.getElementById(name);
    return test;
  }

  function $$(name){
    var test = document.getElementsByName(name);
    return test[0];
  }

  var xxnumb = '0123456789';
  var xxlwr = 'abcdefghijklmnopqrstuvwxyz';
  var xxupr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

  function isValid(parm,val) {

    if (parm == "") return true;
    for (i=0; i<parm.length; i++) {
      if (val.indexOf(parm.charAt(i),0) == -1) return false;
    }
    return true;
  }


  function verifyEmail(address, address2){
    verify = 0;
    if(address != address2)
      return -1;

    for(i = 0; i < address.length; i++){
      if(address.charAt(i) == "@") verify++;
      if(address.charAt(i) == ".") verify++;
    }

    if(verify < 2)
      return 0;
    else
      return 1;
  }

  function telephonize(number){
    var tempnum = '';
    var formattednum = '';

    for(var i = 0; i < number.length ; i++){
      if(!isNaN(number[i]) && number[i] != ' ')
        tempnum = tempnum+number[i];
    }
    if(tempnum.length > 3) formattednum = '(' + tempnum.substr(0,3) + ') ' + tempnum.substr(3,3);
    else return tempnum;
    if(tempnum.length > 6) formattednum += '-' + tempnum.substr(6,4);
    if(tempnum.length > 10) formattednum += ' Ex. ' + tempnum.substr(10);

    return formattednum;
  }

  function isNum(parm) {return isValid(parm,xxnumb);}
  function isLower(parm) {return isValid(parm,xxlwr);}
  function isUpper(parm) {return isValid(parm,xxupr);}
  function isAlpha(parm) {return isValid(parm,xxlwr+xxupr);}
  function isAlphanum(parm) {return isValid(parm,xxlwr+xxupr+xxnumb);}


  /***************************************************************
  ***  Function to encode strings for URL/HTTP Requests
  ***************************************************************/

  function url_encode(string){
    if(string == null)
      var string = '';

    var safechars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/-_.&?=:";
    var hex = "0123456789ABCDEF";
    var encoded_string = '';
    for(var i = 0; i < string.length; i++){
      var character = string.charAt(i);
      if(character == ' ')
        encoded_string += "+";
      else if(safechars.indexOf(character) != -1)
        encoded_string += character;
      else{
        var hexchar = character.charCodeAt(0);
        if(hexchar > 255)
          encoded_string += "+";
        else{
          encoded_string += "%";
          encoded_string += hex.charAt((hexchar >> 4) & 0xF);
          encoded_string += hex.charAt(hexchar & 0xF);
        }
      }
    }
    return encoded_string;
  }

  /***************************************************************
  ***  Function/Prototype for all AJAX Requests
  ***************************************************************/

  var ajaxIndicator = 0;

  function ajaxClient(){ }

    ajaxClient.prototype = {
      requestType:'GET',
      isAsync:false,
      xmlhttp:false,
      callback:false,
      indicated:false,
      onSend:function(){
        if(this.indicated == false){
          ajaxIndicator++;
          this.indicated = true;
        }
        // document.getElementById('HttpClientStatus').style.display = 'inline';
      },
      onLoad:function(){
        ajaxIndicator--;
        this.indicated = false;
        // if(ajaxIndicator == 0)
        // document.getElementById('HttpClientStatus').style.display = 'none';
      },
      onError:function(error){
        // feedback(error);
      },
      init:function(){
        try{ this.xmlhttp = new XMLHttpRequest(); }
        catch(e){
          try{
            this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch (e) {
            try{
              this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e){
              alert("Your browser broke!");
              return false;
            }
          }
        }
        return this.xmlhttp;
      },
      makeRequest:function(url, payload){
        if(!this.xmlhttp){
          this.init();
        }
        this.xmlhttp.open(this.requestType, url, this.isAsync);
        var self = this;
        this.xmlhttp.onreadystatechange = function (){
          self._readyStateChangeCallback();
        }
        if(this.requestType == 'POST'){
          this.xmlhttp.setRequestHeader("Content-type", 'application/x-www-form-urlencoded');
          this.xmlhttp.setRequestHeader("Content-length", payload.length);
          this.xmlhttp.setRequestHeader("Connection", 'close');
        }
        this.xmlhttp.send(url_encode(payload));
        if(!this.isAsync){
          return this.xmlhttp.responseText;
        }
      },
      _readyStateChangeCallback:function(){
        switch(this.xmlhttp.readyState){
          case 1:
          case 2:
          case 3:
            this.onSend();
            break;
          case 4:
            this.onLoad();
            if(this.xmlhttp.status == 200){
              if(this.isAsync)
                this.callback(this.xmlhttp.responseText);
            }
            else{
              this.onError('HTTP Error Making Request: ['+this.xmlhttp.status+'] '+this.xmlhttp.statusText);
            }
          break;
        }
      }
    }

  function getPosX(o){
    var tempparent = o;
    var posx = 0;

     while(tempparent != null){
      posx += tempparent.offsetLeft;
      tempparent = tempparent.offsetParent;
    }
    return posx;
  }

  function getPosY(o){
    var tempparent = o;
    var posy = 0;
    while(tempparent != null){
      posy += tempparent.offsetTop;
      tempparent = tempparent.offsetParent;
    }
    return posy;
  }

  /*************************************************************
  ***  SETS OPACITY IN BOTH IE AND FIREFOX COMPAT.
  *************************************************************/

  function setOpac(o, opacity){
    o.style.opacity = opacity;
    o.style.filter = 'alpha(opacity = ' + (opacity * 100) + ')';
  }


  var payload;

  function genPayload(object){
    for(var i = 0; i < (object).childNodes.length; i++){
      var item = (object).childNodes[i];
      if( item.childNodes.length > 1 )
        genPayload((object).childNodes[i]);
      if( item.nodeName == 'INPUT' || item.nodeName == 'TEXTAREA' ){
        if((object).childNodes[i].value != undefined && (object).childNodes[i].value.length > 0)
          payload += (object).childNodes[i].name + '=' + (object).childNodes[i].value + '&';
      }
    }
    return payload;
  }


  /*************************************************************
  ***  FADES OBJECT OVER 'fadeTime' WITH 'type' in or out
  *************************************************************/

  function objectFade(o, type, level){
    var fadeTime = 500;
    if(!level) 
      level = 100;
    var fadeSpeed = ((level / fadeTime) / 100);
    if(type == "in"){
      for(var i = 0; i < fadeTime; i ++){
        setTimeout("setOpac($('" + o.id + "')," + (i*fadeSpeed) + ");", i);
        i++;
      }
    }
    else if(type == "out"){
      for(var i = 0; i < fadeTime; i ++){
        setTimeout("setOpac($('" + o.id + "')," + (1 - (i*fadeSpeed)) + ");", i);
        i++;
      }
    }

    return i++;
  }

  function objectGrow(o, maxheight){
    var growTime = 500;
    var ppms = ((maxheight / growTime));
    var i = 0;

    for(var timer = 0; timer < growTime; timer++){
      setTimeout("$('"+o.id+"').style.height = '" + i + "px';", timer);
      i = i + ppms;
    }

    return i++;
  }


  /* Flash Resize Functions */

  //This is the actual function that resizes your swf-conainer
    function setFlashHeight(targetDiv,newHeight){
      if (document.getElementById) {document.getElementById(targetDiv).style.height=newHeight+'px'; } else { alert("error"); }
    }

// jump menu
function jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}


// popup a html window that self sizes to the image being passed in
function highlightLG(img){
	window.open('/_scripts/imgPopup.php?/_images/products/'+img, 'detail', 'width=300,height=300,menu=false,scrollbars=false,resizable=true,toolbar=false,menubar=false,location=false,status=true,directories=false');
}


// hide email from bots
function emailLink(email, emailHost){
  document.write("<a href=" + "mail" + "to:" + email + "@" + emailHost+ ">" + email + "@" + emailHost+ "</a>")
}


/* popup */
function htmlPopup(url, width, height){
	window.open(url, 'popup', 'width='+width+',height='+height+',menu=false,scrollbars=false,resizable=true,toolbar=false,menubar=false,location=false,status=true,directories=false');
}


function jsInclude(url){
  document.write('<script type="text/javascript" src="' + url + '"></script>');
}

/* confirm an action via <a> link */
function confirmAction(message, url){
	if(confirm(message)) window.location=url;
}

//--> 
