var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isMozilla = (navigator.userAgent.indexOf("Firefox")!=-1) ? true: false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
var xmlhttp = false;
var timerId = 0;

function httpCreate() {
  if (xmlhttp) return;

  if (XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
    return;
  }
  if (window.ActiveXObject) {
    var ids = ["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
    for(var i=0; !xmlhttp && i<ids.length; i++) {
      try {
        xmlhttp = new ActiveXObject(ids[i]);
        return;
      }
      catch(e) { xmlhttp = false }
    }
  }
}

function httpGet(url, callback) {
  httpCreate();

  if (!xmlhttp) return
  xmlhttp.open("GET",url,true);
  if (callback) xmlhttp.onreadystatechange = callback;
  xmlhttp.send(null);
}

function httpPost(url, parameters, callback) {
  httpCreate();

  if (!xmlhttp) return
  xmlhttp.open('POST', url, true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlhttp.setRequestHeader("Content-length", parameters.length);
  xmlhttp.setRequestHeader("Connection", "close");
  xmlhttp.send(parameters);

  if (callback) xmlhttp.onreadystatechange = callback;
  xmlhttp.send(parameters);
}

function showLayer() {
  var items = showLayer.arguments;
  for (var i=0;i<items.length;i++) {
    var name = items[i];
    var eLayer = document.getElementById(name);
    if (!eLayer) continue;
    eLayer.style.display = "block";
  }
  return false;
}

function hideLayer() {
  var items = hideLayer.arguments;
  for (var i=0;i<items.length;i++) {
    var name = items[i];
    var eLayer = document.getElementById(name);
    if (!eLayer) continue;
    eLayer.style.display = "none";
  }
  return false;
}

function showInfo(display, text) {
  eDisplay = document.getElementById(display);
  eText = document.getElementById(text);
  eDisplay.innerHTML = eText.innerHTML;
}

function getLanguage() {
  var aux = ""+document.location
  aux = aux.split("&");
  return aux[1];
}

function getPanel() {
  var aux = ""+document.location
  aux = aux.split("&");
  return aux[2];
}

function getFlashControlVersion() {
  var version;
  var axo;
  var e;

  try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
    version = axo.GetVariable("$version");
  }
  catch (e) {}
  if (version) return version;

  try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
    version = "WIN 6,0,21,0";
    axo.AllowScriptAccess = "always";
    version = axo.GetVariable("$version");
  }
  catch (e) {}
  if (version) return version;

  try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
    version = axo.GetVariable("$version");
  }
  catch (e) {}
  if (version) return version;

  try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
    version = "WIN 3,0,18,0";
  }
  catch (e) {}
  if (version) return version;

  try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
    version = "WIN 2,0,0,11";
  }
  catch (e) { }
  if (version) return version;

  return -1;
}

function getFlashVer() {
  var flashVer = -1;

  if (navigator.plugins != null && navigator.plugins.length > 0) {
    if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
      var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
      var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
      var descArray = flashDescription.split(" ");
      var tempArrayMajor = descArray[2].split(".");
      var versionMajor = tempArrayMajor[0];
      var versionMinor = tempArrayMajor[1];
      if (descArray[3] != "" )
        tempArrayMinor = descArray[3].split("r");
      else
        tempArrayMinor = descArray[4].split("r");
      var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
      var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
    }
  }
  else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
  else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
  else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
  else if ( isIE && isWin && !isOpera ) flashVer = getFlashControlVersion();
  return flashVer;
}

function detectFlashVer(reqMajorVer) {
  versionStr = getFlashVer();
  if (versionStr == -1 )
    return false;
  else if (versionStr != 0) {
    if (isIE && isWin && !isOpera) {
      tempArray = versionStr.split(" ");
      tempString = tempArray[1];
      versionArray = tempString.split(",");
    }
    else {
      versionArray = versionStr.split(".");
    }

    var versionMajor = versionArray[0];
    var versionMinor = versionArray[1];
    var versionRevision = versionArray[2];

    return (versionMajor >= parseFloat(reqMajorVer));
  }
}

function writeFlash(id, file, width, height, vars,alt) {
  if (detectFlashVer(8)) {
    if (id == null || file == null) return;
    var version="8,0,0,0";
    var menu=false;
    var quality="high";
    var allowScriptAccess="always";
    var bgcolor="#FFFFFF";
    if (!vars) vars = "";
    data = '<object id='+id+' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+version+'" width='+width+' height='+height+'>'+
              '<param name="movie" value='+file+'>'+
              '<param name="allowScriptAccess" value='+allowScriptAccess+'>'+
              '<param name="quality" value='+quality+'>'+
              '<param name="flashvars" value='+vars+'>'+
              '<param name="bgcolor" value='+bgcolor+'>'+
              '<param name="menu" value='+menu+' >'+
              '<embed name='+id+' src='+file+' bgcolor='+bgcolor+' flashvars='+vars+' menu='+menu+' allowScriptAccess='+allowScriptAccess+' quality='+quality+' pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width='+width+' height='+height+' swLiveConnect=true name='+id+'>'+'</embed>'+
            '</object>';
  }
  else {
    data = (alt == null) ? data = '<div class="flashDetect" style="height:'+height+'; width:'+width+';"><div>'+sFlashUpdate+'</div></div>' : alt;
  }
    document.write(data);
}

function writeMail(name) {
  sMessage = '<a href="mailto:'+name+'@avantcad.com">'+name+'@avantcad.com</a>';
  document.write(sMessage);
}

function go(url) {
  document.location = url;
}

function changePanel(lang,panel) {
  document.location="browse&" + lang + "&" + panel;
}

function changeFilter(link, code) {
  if (code) writeCookie("filter", code); else deleteCookie("filter");
  document.location = link;
}

function setImage(eElement, src) {
  eElement.style.backgroundImage = "url(images/" + src + ".png)"
}

function checkField(eField, type) {
  var name = eField.name + "-error";
  var result;
  switch (type) {
  case "text":
    result = (eField.value != "");
    break;
  case "bool":
    result = (eField.checked);
    break;
  case "mail":
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    result = (filter.test(eField.value));
    break;
  }
  if (result == false) showLayer(name); else hideLayer(name);
  return result;
}

function encodeField(eField) {
  return "&" + eField.name + "=" + encodeURI(eField.value);
}

function submitComment() {
  var eForm = document.forms["comment"];

  eForm.result = true;
  eForm.result &= checkField(eForm.email, "mail");
  eForm.result &= checkField(eForm.check, "bool");
  if (eForm.result == false) return;

  hideLayer("form");
  showLayer("sent");

  var parameters = "";
  parameters += encodeField(eForm.user);
  parameters += encodeField(eForm.email);
  parameters += encodeField(eForm.lang);
  parameters += encodeField(eForm.fullname);
  parameters += encodeField(eForm.model);
  parameters += encodeField(eForm.modelname);
  parameters += encodeField(eForm.groupname);
  parameters += encodeField(eForm.text);
  parameters = parameters.substring(1);

  user = readCookie("user");
  if (user) user = "&" + user;
  try { httpPost("docomment"+user, parameters); }
  catch (e) { }
}

function stopTimer() {
  if (timerID == 0) return;
  clearTimeout(timerID);
  timerID  = 0;
}

function readCookie(name) {
  if (name == "") return "";
  var Cookie= "" + document.cookie;

  var start = Cookie.indexOf(name);
  if (start < 0) return;

  var finish = Cookie.indexOf(';', start);
  if (finish <0) finish = Cookie.length;

  return unescape(Cookie.substring(start + name.length + 1, finish));
}

function writeCookie (name, value, days) {
   var expires = '';
    if(days) {
      var time = new Date();
      time.setTime(new Date().getTime()+days*24*60*60*1000);
      expires = '; expires='+time.toGMTString();
    }
  document.cookie = name + "=" + escape(value) + expires;
}

function deleteCookie(name) {
  document.cookie = name + "=";
}

var rules = {
  '#selector' : function(e){
    e.onchange = function() {
      var link = this.value;
      if (link) document.location = link;
    }
  },

  '#lang' : function(e){
    e.onchange = function() { changePanel(this.value, getPanel()) }
  },

  '#back' : function(e){
    e.name = "back";
    e.onmouseover = function() { setImage(this, this.name + 'h') }
    e.onmouseout  = function() { setImage(this, this.name) }
    e.onclick = function() { history.back(); return false }
  },

  '#forward' : function(e){
    e.name = "forward";
    e.onmouseover = function() { setImage(this, this.name + 'h') }
    e.onmouseout  = function() { setImage(this, this.name) }
    e.onclick = function() { history.forward(); return false }
  },

  '.favorite' : function(e){
    user = readCookie("user");
    if (user == null) return;

    var html = e.innerHTML;
    var rexp = new RegExp('[A-Z0-9]*-[xtf]');
    var data = String(html.match(rexp)).split("-");

    if (data[1] == "x") return;

    e.code = data[0];
    e.value = (data[1] == "f") ? 0 : 1;
    e.onclick = function() {
      var html = this.innerHTML;
      var value = 1 - this.value;
      var link = "dofavorite&" + user + "&" + this.code + "&" + value;
      try {
        httpGet(link, null,null);
        this.value = value;
        this.innerHTML = '<img src="images/fav' + ((this.value == 0) ? 'off' : 'on') + '.png">';
      }
      catch (e) { }
    }
  },

  '.hide_message' : function(e){
    e.onclick = function() {
      document.getElementById("message").style.display = "none";
      return false;
    }
  },

  '#submit_comment' : function(e){
    e.onclick = function() {
      submitComment();
    }
  },

  '#download_button' : function(e){
    e.onclick = function() {
      timerID = setTimeout("stopTimer(); changePanel(getLanguage(),'downloading');", 2000);
    }
  },

  '#autocad_version' : function(e){
    if (detectFlashVer(8) == false) {
      var eFlash = document.getElementById("flash");
      eFlash.style.display = "block";
      return false;
    }
    e.onchange = function() {
      var opt = this.options[this.selectedIndex].value;
      document.getElementById("button").style.display = (opt == "ST") ? "block" : "none";
      document.getElementById("button_disabled").style.display = (opt == "ST") ? "none" : "block";
      document.getElementById("note").style.display = (opt == "LT") ? "block" : "none";
    }
  },

  '#conection_speed' : function(e){
    e.onchange = function() {
      var opt = this.options[this.selectedIndex].value;
      var eDisplay = document.getElementById("displayTime");
      var size = 638;
      eDisplay.innerHTML = Math.round(size * 8 / opt);
    }
  },

  '#master' : function(e){
    e.style.display = "block";
  }

};
