//Made readable by Brian Mills

var vbmenu_usepopups = false;
var ignorequotechars = 0;
var userAgent = navigator.userAgent.toLowerCase();
var is_opera = (userAgent.indexOf('opera') != -1);
var is_saf = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_webtv = (userAgent.indexOf('webtv') != -1);
var is_ie = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4 = ((is_ie) && (userAgent.indexOf("msie 4.") != -1));
var is_moz = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon = (userAgent.indexOf('konqueror') != -1);
var is_ns = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4 = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_regexp = (window.RegExp) ? true : false;
var vbDOMtype = '';

if (document.getElementById) { 
  vbDOMtype = "std";
}
else if (document.all) { 
  vbDOMtype = "ie4";
}
else if (document.layers) {
  vbDOMtype = "ns4";
}

var vBobjects = new Array();

function fetch_object(idname, forcefetch) {
  if (forcefetch || typeof(vBobjects[idname]) == "undefined") {
    switch (vbDOMtype) { 
      case "std": { vBobjects[idname] = document.getElementById(idname);} break;
      case "ie4": { vBobjects[idname] = document.all[idname];} break;
      case "ns4": { vBobjects[idname] = document.layers[idname];} break;
    }
  }
  return vBobjects[idname];
}

function do_an_e(eventobj) {
  if (!eventobj || is_ie) {
    window.event.returnValue = false;
    window.event.cancelBubble = true;
    return window.event;
  }
  else {
    eventobj.stopPropagation();
    eventobj.preventDefault();
    return eventobj;
  }
}

function openWindow(url, width, height) {
  var dimensions = "";
  if (width) { dimensions += ",width=" + width; }
  if (height) { dimensions += ",height=" + height; }
  window.open(url, "vBPopup", "statusbar=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes" + dimensions);
  return false;
}

function imwindow(imtype, userid, width, height) { return openWindow("sendmessage.php?" + SESSIONURL + "do=im&type=" + imtype + "&userid=" + userid, width, height);}

function who(threadid) { return openWindow("misc.php?" + SESSIONURL + "do=whoposted&threadid=" + threadid, 230, 300);}

function reputation(postid) {
  window.open("reputation.php?" + SESSIONURL + "p=" + postid, "Reputation", "toolbar=no, scrollbars=yes, resizable=yes, width=212, height=241");
  return false;
}

function manageattachments(url, width, height, hash) {
  window.open(url, "Attach" + hash, "statusbar=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=" + width + ",height=" + height);
  return false;
}

function iif(condition, trueval, falseval) { return condition ? trueval : falseval; }

function in_array(ineedle, haystack, caseinsensitive) {
  var needle = new String(ineedle);
  if (caseinsensitive) {
    needle = needle.toLowerCase();
    for (i in haystack) { if (haystack[i].toLowerCase() == needle) { return i; } }
  }
  else { 
    for (i in haystack) { if (haystack[i] == needle) { return i; } }
  }
  return -1;
}

function js_toggle_all(formobj, formtype, option, exclude, setto) {
  for (var i =0; i < formobj.elements.length; i++) {
    var elm = formobj.elements[i];
    if (elm.type == formtype && in_array(elm.name, exclude, false) == -1) {
      switch (formtype) {
        case "radio": if (elm.value == option) { elm.checked = setto; } break;
        case "select-one": elm.selectedIndex = setto; break;
        default: elm.checked = setto; break;
      }
    }
  }
}

function js_select_all(formobj) {
  exclude = new Array();
  exclude[0] = "selectall";
  js_toggle_all(formobj, "select-one", '', exclude, formobj.selectall.selectedIndex);
}

function js_check_all(formobj) {
  exclude = new Array();
  exclude[0] = "keepattachments";
  exclude[1] = "allbox";
  exclude[2] = "removeall";
  js_toggle_all(formobj, "checkbox", '', exclude, formobj.allbox.checked);
}

function js_check_all_option(formobj, option) {
  exclude = new Array();
  exclude[0] = "useusergroup";
  js_toggle_all(formobj, "radio", option, exclude, true);
}

function checkall(formobj) { js_check_all(formobj); }

function checkall_option(formobj, option) { js_check_all_option(formobj, option); }

function validatemessage(messageText, subjectText, minLength, maxLength, ishtml, tForm) {
  if (is_kon || is_saf || is_webtv) { return true; }
  var strippedMessage = stripcode(messageText, ishtml, ignorequotechars);
  if (subjectText.length < 1) {
    alert(vbphrase["must_enter_subject"]);
    return false;
  }
  else if (strippedMessage.length < minLength) {
    alert(construct_phrase(vbphrase["message_too_short"], minLength));
    return false;
  }
  else { return true; }
}

function stripcode(str, ishtml, stripquotes) {
  if (!is_regexp) { return str; }
  if (stripquotes) {
    var quote1 = new RegExp("(\\[QUOTE\\])(.*)(\\[\\/QUOTE\\])", "gi");
    var quote2 = new RegExp("(\\[QUOTE=(&quot;|\"|\\'|)(.*)\\1\\])(.*)(\\[\\/QUOTE\\])", "gi");
    
    while(str.match(quote1)) { str = str.replace(quote1, ''); }
    while(str.match(quote2)) { str = str.replace(quote2, ''); }
  }
  
  if (ishtml) {
    var html1 = new RegExp("<(\\w+)[^>]*>", "gi");
    var html2 = new RegExp("<\\/\\w+>", "gi");
    str = str.replace(html1, '');
    str = str.replace(html2, '');
    var html3 = new RegExp("&nbsp;");
    str = str.replace(html3, '');
  }
  else {
    var bbcode1 = new RegExp("\\[(\\w+)[^\\]]*\\]", "gi");
    var bbcode2 = new RegExp("\\[\\/(\\w+)\\]", "gi");
    str = str.replace(bbcode1, '');
    str = str.replace(bbcode2, '');
  }
  
  return str;
}

function construct_phrase() {
  if (!arguments || arguments.length < 1 || !is_regexp) { return false; }
  
  var args = arguments;
  var str = args[0];
  var re;
  for (var i = 1; i < args.length; i++) {
    re = new RegExp("%" + i + "\\$s", "gi");
    str = str.replace(re, args[i]);
  }
  
  return str;
}

function set_cp_title() {
  if (typeof(parent.document) != "undefined" && typeof(parent.document) != "unknown" && typeof(parent.document.title) == "string") { 
    if (document.title != '') { parent.document.title = document.title; } 
    else { parent.document.title = "vBulletin"; }
  }
}

// function js_open_help(scriptname, actiontype, optionval) {
//   window.open("help.php?s=" + SESSIONHASH + "&do=answer&page=" + scriptname + "&pageaction=" + actiontype + "&option=" + optionval, "helpwindow", "toolbar=no,scrollbars=yes,resizable=yes,width=212,height=450");
// }

function switch_styleid(selectobj) {
  var styleid = selectobj.options[selectobj.selectedIndex].value;
  
  if (styleid == "") { return; }
  
  var url = new String(window.location);
  var fragment = new String("");
  url = url.split("#");
  
  if (url[1]) { fragment = "#" + url[1]; }
  url = url[0];
  
  if (url.indexOf("styleid=") != -1 && is_regexp) {
    re = new RegExp("styleid=\\d+&?");
    url = url.replace(re, "");
  }
  if (url.indexOf("?") == -1) {
    url += "?";
  }
  else {
    lastchar = url.substr(url.length - 1);
    if (lastchar != "&" && lastchar != "?") { url += "&"; }
  }

  window.location = url + "styleid=" + styleid + fragment;
}

function toggle_display(idname) {
  obj = fetch_object(idname);
  if (obj) { 
    if (obj.style.display == "none") { obj.style.display = ""; }
    else { obj.style.display = "none"; }
  }
  return false;
}

function set_cookie(name, value, expires) {
  if (!expires) { expires = new Date(); }
  document.cookie = name + "=" + escape(value) + ";expires=" + expires.toGMTString() + "; path=/";
}

function fetch_cookie(name) {
  cookie_name = name + "=";
  cookie_length = document.cookie.length;
  cookie_begin = 0;
  while (cookie_begin < cookie_length) {
    value_begin = cookie_begin + cookie_name.length;
    if (document.cookie.substring(cookie_begin, value_begin) == cookie_name) {
      var value_end = document.cookie.indexOf (";", value_begin);
      if (value_end == -1) { value_end = cookie_length; }
      return unescape(document.cookie.substring(value_begin, value_end));
    }
    cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
    if (cookie_begin == 0) { break; }
  }
  return null;
}

function delete_cookie(name) {
  var expireNow = new Date();
  document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT" + ";  path=/";
}

function toggle_collapse(objid) {
  if (!is_regexp) { return false; }
  obj = fetch_object("collapseobj_" + objid);
  img = fetch_object("collapseimg_" + objid);
  cel = fetch_object("collapsecel_" + objid);
  if (!obj) {
    if (img) { img.style.display = "none"; }
    else return false;
  }
  if (obj.style.display == "none") {
    obj.style.display = "";
    save_collapsed(objid, false);
    if (img) {
      img_re = new RegExp("_collapsed\\.gif$");
      img.src = img.src.replace(img_re, '.gif');
    }
    if (cel) {
      cel_re = new RegExp("^(thead|tcat)(_collapsed)$");
      cel.className = cel.className.replace(cel_re, '$1');
    }
  }
  else {
    obj.style.display = "none";
    save_collapsed(objid, true);
    if (img) {
      img_re = new RegExp("\\.gif$");
      img.src = img.src.replace(img_re, '_collapsed.gif');
    }
    if (cel) {
      cel_re = new RegExp("^(thead|tcat)$");
      cel.className = cel.className.replace(cel_re, '$1_collapsed');
    }
  }
  return false;
}

// Brian's functions
function kill_display(objid) {
  if (!is_regexp) { return false; }
  obj = fetch_object("collapseobj_" + objid);
  img = fetch_object("collapseimg_" + objid);
  cel = fetch_object("collapsecel_" + objid);
  if (!obj) {
    if (img) { img.style.display = "none"; }
    return false;
  }
  obj.style.display = "none";
  save_collapsed(objid, true);
  if (img) {
    img_re = new RegExp("\\.gif$");
    img.src = img.src.replace(img_re, '_collapsed.gif');
  }
  if (cel) {
    cel_re = new RegExp("^(thread|tcat)$");
    cel.className = cel.className.replace(cel_re, '$1_collapsed');
  }
  return false;
}

function open_display(objid) {
  if (!is_regexp) { return false; }
  obj = fetch_object("collapseobj_" + objid);
  img = fetch_object("collapseimg_" + objid);
  cel = fetch_object("collapsecel_" + objid);
  if (!obj) {
    if (img) { img.style.display = "none"; }
    return false;
  }
  obj.style.display = "";
  save_collapsed(objid, false);
  if (img) {
    img_re = new RegExp("_collapsed\\.gif$");
    img.src = img.src.replace(img_re, '.gif');
  }
  if (cel) {
    cel_re = new RegExp("^(thead|tcat)(_collapsed)$");
    cel.className = cel.className.replace(cel_re, '$1');
  }
  return false;
}
// End Brian's functions
function save_collapsed(objid, addcollapsed) {
  var collapsed = fetch_cookie("vbulletin_collapse");
  var tmp = new Array();
  if (collapsed != null) {
    collapsed = collapsed.split("\n");
    for (i in collapsed) {
      if (collapsed[i] != objid && collapsed[i] != "") { tmp[tmp.length] = collapsed[i]; }
    }
  }
  if (addcollapsed) { tmp[tmp.length] = objid; }
  
  expires = new Date();
  expires.setTime(expires.getTime() + (1000 * 86400 * 365));
  set_cookie("vbulletin_collapse", tmp.join("\n"), expires);
}

function vbmenu_register(controlid, nowrite, datefield) { if (vbmenu_usepopups) { vbmenu_doregister(controlid, nowrite, datefield); } }

function activecells_mouseover(e) {
  this.className = this.swapclass;
  if (is_ie) { this.style.cursor = "hand"; }
  else { this.style.cursor = "pointer"; }
  return true;
}

function activecells_mouseout(e) {
  this.className = this.origclass;
  this.style.cursor = "default";
  return true;
}

function activecells_click(e) {
  this.className = this.origclass;
  var script = '';
  if (r = this.id.match(/^([a-z]{1})([0-9]+)$/)) {
    switch (r[1]) {
      case "u": script = "member.php?" + SESSIONURL + "u="; break;
      case "f": script = "forumdisplay.php?" + SESSIONURL + "f="; break;
      case "t": script = "showthread.php?" + SESSIONURL + "t="; break;
      case "p": script = "showthread.php?" + SESSIONURL + "p="; break;
      case "m": script = "private.php?" + SESSIONURL + "pmid="; break;
      default: return;
    }
    window.location = script + r[2];
  }
}

function vBulletin_init() {
  if (is_webtv) {
    return true;
  }
  
  var imgs = null;
  switch (vbDOMtype) {
    case "std": imgs = document.getElementsByTagName("img"); break;
    case "ie4": imgs = document.all.tags("img"); break;
    default: imgs = false; break;
  }
  
  if (imgs) {
    for (var i = 0; i < imgs.length; i++) {
      if (!imgs[i].title && imgs[i].alt != "") { imgs[i].title = imgs[i].alt; }
    }
  }
  
  if (vbmenu_usepopups && vbmenu_registered.length > 0) {
    for (i in vbmenu_registered) { vbmenu_init(vbmenu_registered[i]); }
    document.onclick = vbmenu_close;
  }
  return true;
}

function activecells_init() {
  if (is_webtv || is_opera) { return; }
  
  tds = document.getElementsByTagName("td");
  for (var i = 0; i < tds.length; i++) {
    switch (tds[i].className) {
      case "alt1Active": 
      case "alt2Active":
      { tds[i].origclass = tds[i].className;
        tds[i].swapclass = iif(tds[i].className == "alt1Active", "alt2Active", "alt1Active");
        tds[i].onmouseover = activecells_mouseover;
        tds[i].onmouseout = activecells_mouseout;
        tds[i].onclick = activecells_click;
      } break;
    }
  }
}

function setPic(picName, newImg) {
  if(document[picName]) {
    document[picName].src = newImg;
    return true;
  }
  else return false;
}

function togglePic(picName, img1, img2) {
  var img1Info=splitURL(img1);
  var img1Path = img1Info[0];
  var img1File = img1Info[1];
  
  var img2Info=splitURL(img2);
  var img2Path=img2Info[0];
  var img2File=img2Info[1];
  
  var picInfo=splitURL(document[picName].src);
  var picPath=picInfo[0];
  var picFile=picInfo[1];
  
//   alert("img1Path:"+img1Path);
//   alert("img1File:"+img1File);
//   alert("img2Path:"+img2Path);
//   alert("img2File:"+img2File);
//   alert("picPath:"+picPath);
//   alert("picFile:"+picFile);
  
  var img1RE = RegExp(img1File);
  var img2RE = RegExp(img2File);
  if (img1RE.exec(document[picName].src)) {
    setPic(picName, img2);
  }
  else if (img2RE.exec(document[picName].src)) {
    setPic(picName, img1);
  }
  else {
    alert("Picture original not recognized, can't change!\nExpected either " + img1 + " or " + img2 + ", got "+document[picName].src); //TODO: Remove for production
  }
}

function splitURL(url) {
  //Splits an URL into a (location, filename) pair
  var splitted = url.split('/');
  var file=splitted[splitted.length-1];
  var loc='';
  for(var ii = 0; ii < splitted.length-1; ii++) {
    loc += splitted[ii] + '/';
  }
  var info = [loc, file];
  return info;
}

function collapseAllBut(menuName, closedPic, openPic, forceOpen) {
  // Collapses every menu in the following list except the one specified
  // Also handles changing the image button with each associated menu
  var closeList = ["products", "access", "climate", "stratmeso", "strattrop", "tropo", "measure"];
  var picList = ["prodButton", "acssButton", "clmtButton", "stmeButton", "strattButton", "tropButton", "measButton"];
  for(var ii = 0; ii < closeList.length; ii++) {
    if(closeList[ii] == menuName) {
      if(forceOpen) {
        open_display(menuName);
        setPic(picList[ii], openPic);
      }
      else {
        toggle_collapse(menuName);
        togglePic(picList[ii], openPic, closedPic);
      }
      continue;
    }
    kill_display(closeList[ii]);
    setPic(picList[ii], closedPic);
  }
}