var input_red = 'input-warn';
var input_green = 'input-ok';
var input_ok_box = 'input-ok-content';
var input_warn_box = 'input-warn-content';
var img_blank = 'blank.gif';
var img_tick = 'aff_tick.gif';
var img_cross = 'aff_cross.gif';
var uagent = navigator.userAgent.toLowerCase();
var is_safari = ((uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") || (uagent.indexOf('konqueror') != -1) || (uagent.indexOf('khtml') != -1));
var is_opera = (uagent.indexOf('opera') != -1);
var is_webtv = (uagent.indexOf('webtv') != -1);
var is_ie = ((uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv));
var is_ie4 = ((is_ie) && (uagent.indexOf("msie 4.") != -1));
var is_ie7 = ((is_ie) && (uagent.indexOf("msie 7.") != -1));
var is_moz = (navigator.product == 'Gecko');
var is_ns = ((uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari));
var is_ns4 = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_win = ((uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") != -1));
var is_mac = ((uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc."));
var ua_vers = parseInt(navigator.appVersion);
var ipb_pages_shown = 0;
var ipb_pages_array = new Array();
var ipb_skin_url = ipb_skin_url ? ipb_skin_url : ipb_var_image_url;
function gbl_check_search_box(){
   try {
      var _cb = document.getElementById('gbl-search-checkbox');
      var _fd = document.getElementById('gbl-search-forums');
      if (_cb.checked && ipb_input_f) {
         _fd.value = ipb_input_f;
      }
      else {
         _fd.value = 'all';
      }
   } 
   catch (error) {
   }
};
function show_inline_messages(){
   var _string = window.location.href;
   var _msg_box = null;
   if (_string.indexOf('?___msg=') != -1 || _string.indexOf(';___msg=') != -1 || _string.indexOf('&___msg=') != -1) {
      try {
         if (parent.document.getElementById('ipd-msg-text')) {
            _msg_box = parent.document.getElementById('ipd-msg-text');
         }
         else {
            _msg_box = document.getElementById('ipd-msg-text');
         }
      } 
      catch (error) {
         alert(error);
      }
      var message = _string.replace(/^.*[\?;&]___msg=(.+?)(&.*$|$)/, "$1");
      message = unescape(message);
      if (message_pop_up_lang[message]) {
         try {
            _msg_box.innerHTML = message_pop_up_lang[message];
            centerdiv = new center_div();
            centerdiv.divname = 'ipd-msg-wrapper';
            centerdiv.move_div();
            var _this_to = setTimeout("hide_inline_messages_instant()", 2000);
         } 
         catch (anerror) {
            alert(message_pop_up_lang[message]);
         }
      }
   }
};
function show_inline_messages_instant(msg){
   _msg_box = document.getElementById('ipd-msg-text');
   _msg_box.innerHTML = message_pop_up_lang[msg];
   centerdiv = new center_div();
   centerdiv.divname = 'ipd-msg-wrapper';
   centerdiv.move_div();
   var _this_to = setTimeout("hide_inline_messages_instant()", 2000);
};
function hide_inline_messages_instant(){
   try {
      document.getElementById('ipd-msg-wrapper').style.display = 'none';
      parent.document.getElementById('ipd-msg-wrapper').style.display = 'none';
   } 
   catch (acold) {
   }
};
function iframe_include(){
   this.iframe_id = null;
   this.iframe_obj = null;
   this.iframe_add_to_div = null;
   this.iframe_add_to_div_obj = null;
   this.iframe_main_wrapper = null;
   this.iframe_classname = 'GBL-component-iframe';
   this.ok_to_go = 1;
   this.iframe_height = 300;
   this.ajax = '';
};
iframe_include.prototype.init = function(){
   try {
      this.iframe_add_to_div_obj = document.getElementById(this.iframe_add_to_div);
   } 
   catch (error) {
      this.ok_to_go = 0;
   }
};
iframe_include.prototype.include = function(url){
   if (!this.ok_to_go) {
      return false;
   }
   var iheight = parseInt(this.iframe_add_to_div_obj.style.height);
   var iwidth = parseInt(this.iframe_add_to_div_obj.style.width);
   if (this.iframe_obj) {
      this.iframe_add_to_div_obj.removeChild(this.iframe_obj);
   }
   this.iframe_obj = document.createElement('IFRAME');
   this.iframe_obj.src = url;
   this.iframe_obj.id = this.iframe_id;
   this.iframe_obj.name = this.iframe_id;
   this.iframe_obj.scrolling = 'no';
   this.iframe_obj.frameBorder = 'no';
   this.iframe_obj.border = '0';
   this.iframe_obj.className = this.iframe_classname;
   this.iframe_obj.style.width = iwidth ? iwidth + 'px' : '100%';
   this.iframe_obj.style.height = iheight ? iheight - 5 + 'px' : this.iframe_height + 'px';
   this.iframe_obj.style.overflow = 'hidden';
   this.iframe_obj.style.padding = '0px';
   this.iframe_obj.style.margin = '0px';
   this.ajax = new ajax_request();
   this.iframe_add_to_div_obj.style.padding = '0px';
   this.iframe_add_to_div_obj.style.margin = '0px';
   if (is_ie && !is_ie7) {
      this.iframe_add_to_div_obj.style.paddingLeft = '6px';
      this.iframe_add_to_div_obj.style.paddingRight = '6px';
   }
   this.iframe_obj.iframe_loaded = 0;
   this.iframe_obj.iframe_init = 0;
   this.iframe_obj._this = this;
   this.iframe_add_to_div_obj.style.overflow = '';
   this.iframe_add_to_div_obj.appendChild(this.iframe_obj);
   this.ajax.show_loading(ajax_load_msg);
   if (is_ie) {
      this.iframe_obj.allowTransparency = true;
      this.iframe_obj.onreadystatechange = this.iframe_on_load_ie;
   }
   else {
      this.iframe_obj.onload = this.iframe_onload;
   }
};
iframe_include.prototype.iframe_onload = function(e){
   var _document = this._this.iframe_obj.contentDocument;
   if (is_safari) {
      _document = window.frames[this.id].document;
   }
   if (!this.iframe_init) {
      this.iframe_init = 1;
      this.iframe_loaded = 1;
      _document.onmousedown = menu_action_close;
   }
   else {
      this.iframe_loaded = 1;
      _document.onmousedown = menu_action_close;
   }
   this._this.ajax.hide_loading();
   try {
      _document.getElementsByTagName('body')[0].style.padding = '0px';
      _document.getElementsByTagName('body')[0].style.margin = '0px';
   } 
   catch (error) {
   }
   var _new_height = parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetHeight);
   if (_new_height > 0) {
      if (is_safari) {
         _new_height += 3;
      }
      this._this.iframe_obj.style.height = _new_height + "px";
      this._this.iframe_add_to_div_obj.style.height = _new_height + "px";
   }
   var style = document.getElementsByTagName('style');
   var _new_style = '';
   for (i in style) {
      _new_style += "\n" + style[i].innerHTML;
   }
   try {
      _document.getElementsByTagName('style')[0].innerHTML = _new_style;
   } 
   catch (error) {
   }
};
iframe_include.prototype.iframe_on_load_ie = function(e){
   if (this.readyState == 'complete') {
      var _document = '';
      if (this._this.iframe_obj.contentWindow) {
         _document = this._this.iframe_obj.contentWindow.document;
      }
      else 
         if (this._this.iframe_obj.document) {
            _document = this._this.iframe_obj.document;
         }
         else {
            _document = window.frames[this.id].document;
         }
      if (!this.iframe_init) {
         this.iframe_init = 1;
         this.iframe_loaded = 1;
         _document.onmousedown = menu_action_close;
      }
      else {
         this.iframe_loaded = 1;
         _document.onmousedown = menu_action_close;
      }
      var style = document.getElementsByTagName('style');
      var _new_style = '';
      for (i in style) {
         if (style[i].innerHTML) {
            _new_style += "\n" + style[i].innerHTML;
         }
      }
      var _urls = _new_style.match(/@import\s+?url\(\s+?['"](.+?)['"]\s+?\);/ig);
      if (_urls && _urls.length) {
         for (i = 0; i <= _urls.length; i++) {
            if (typeof(_urls[i]) != 'undefined') {
               _urls[i] = _urls[i].replace(/@import\s+?url\(\s+?['"](.+?)['"]\s+?\);/ig, "$1");
               if (typeof(_urls[i]) != 'undefined') {
                  _document.createStyleSheet(_urls[i]);
               }
            }
         }
      }
      this._this.ajax.hide_loading();
      try {
         _document.getElementsByTagName('body')[0].style.padding = '0px';
         _document.getElementsByTagName('body')[0].style.margin = '0px';
      } 
      catch (error) {
      }
      var _new_height = parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetHeight);
      var _new_width = parseInt(_document.getElementById(this._this.iframe_main_wrapper).offsetWidth);
      if (_new_height > 0) {
         this._this.iframe_obj.style.height = _new_height + "px";
         this._this.iframe_add_to_div_obj.style.height = _new_height + "px";
      }
      if (_new_width > 0) {
         this._this.iframe_obj.style.width = _new_width + "px";
         this._this.iframe_add_to_div_obj.style.width = _new_width + "px";
      }
   }
};
function ie_fix_png(){
   if (is_ie) {
      document.onreadystatechange = ie_fix_png_do;
   }
}

function ie_fix_png_do(){
   if (document.readyState == 'complete') {
      var pos = navigator.userAgent.indexOf("MSIE ");
      var version = navigator.userAgent.substring(pos + 5);
      var blanky = ipb_skin_url + "/blank.gif";
      var _sw = screen.width * (parseInt(ipsclass.settings['resize_percent']) / 100);
      if (pos == -1) {
         return false;
      }
      if (!((version.indexOf("5.5") == 0) || (version.indexOf("6") == 0)) && (navigator.platform == ("Win32"))) {
         return;
      }
      var images = document.getElementsByTagName('IMG');
      var _len = images.length;
      if (_len) {
         for (var i = 0; i < _len; i++) {
            if (images[i].src.match(/\.png$/)) {
               var element = images[i];
               var _width = 0;
               var _height = 0;
               var _src = 0;
               element._width = element._width ? parseInt(element._width) : 0;
               element._resized = parseInt(element._resized);
               if (!element.style.width) {
                  _width = element.width;
               }
               if (!element.style.height) {
                  _height = element.height;
               }
               _src = element.src;
               if (_width < _sw && !element._resized && element._width < _sw) {
                  element.src = blanky;
                  if (_width) {
                     element.style.width = _width + "px";
                  }
                  if (_height) {
                     element.style.height = _height + "px";
                  }
                  element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + _src + "',sizingMethod='scale')";
               }
               else {
               }
            }
         }
      }
   }
}

function add_onload_event(func){
   var oldonload = window.onload;
   if (typeof window.onload != 'function') {
      window.onload = func;
   }
   else {
      window.onload = function(){
         if (oldonload) {
            oldonload();
         };
         func();
      };
   }
}

function add_shadow(wrapname, divname){
   var divobj = document.getElementById(divname);
   var wrapobj = document.getElementById(wrapname);
   if (wrapobj) {
      if (is_ie) {
         wrapobj.className = 'shadow-ie';
         wrapobj.style.width = divobj.offsetWidth + 1 + 'px';
         wrapobj.style.height = divobj.offsetHeight + 1 + 'px';
      }
      else {
         wrapobj.className = 'shadow-moz';
         wrapobj.style.width = divobj.offsetWidth + 0 + 'px';
         wrapobj.style.height = divobj.offsetHeight + 0 + 'px';
      }
   }
}

function global_dst_check(tzo, dst){
   var op = tzo < 0 ? 'plus' : 'minus';
   tzo = Math.abs(tzo);
   var dstoffset = Math.abs(new Date().getTimezoneOffset() / 60);
   var dstset = 0;
   var url = ipb_var_base_url + 'act=xmlout&do=dst-autocorrection&md5check=' + ipb_md5_check;
   if (op == 'plus') {
      var thisoffset = tzo - dst;
   }
   else {
      var thisoffset = tzo + dst;
   }
   var math = Math.abs(thisoffset - dstoffset);
   if (math != 0) {
      try {
         xml_dst_set(url + '&xml=1');
         dstset = 1;
      } 
      catch (e) {
         dstset = 0;
      }
      if (dstset == 0) {
         window.location = url;
      }
   }
}

function my_getcookie(name){
   return ipsclass.my_getcookie(name);
}

function my_setcookie(name, value, sticky){
   return ipsclass.my_setcookie(name, value, sticky);
}

function lang_build_string(){
   if (!arguments.length || !arguments) {
      return;
   }
   var string = arguments[0];
   for (var i = 1; i < arguments.length; i++) {
      var match = new RegExp('<%' + i + '>', 'gi');
      string = string.replace(match, arguments[i]);
   }
   return string;
}

function friends_pop(extra_url){
   //ipb_var_base_url = ipb_var_base_url.replace('&amp;', '&');
   if (extra_url) {
      extra_url = extra_url.replace('&amp;', '&');
   }
   else {
      extra_url = '';
   }
   ipsclass.pop_up_window(ipb_var_root_url + '/index.php?act=profile&CODE=friends_list_popup' + extra_url, 450, 400, 'Friends');
}

function buddy_pop(){
   var not_loaded_yet = 0;
   if (use_enhanced_js) {
      try {
         xml_myassistant_init();
         not_loaded_yet = 1;
      } 
      catch (e) {
         not_loaded_yet = 0;
      }
   }
   if (!not_loaded_yet) {
      ipb_var_base_url = ipb_var_base_url.replace('&amp;', '&');
      window.open(ipb_var_base_url + 'act=buddy', 'BrowserBuddy', 'width=250,height=500,resizable=yes,scrollbars=yes');
   }
}

function check_enter(pages_id, e){
   var keypress = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
   if (keypress == 13) {
      do_multi_page_jump(pages_id);
   }
}

function do_multi_page_jump(pages_id){
   var pages = 1;
   var cur_st = ipb_var_st;
   var cur_page = 1;
   var total_posts = ipb_pages_array[pages_id][2];
   var per_page = ipb_pages_array[pages_id][1];
   var url_bit = ipb_pages_array[pages_id][0];
   var userPage = parseInt(document.getElementById('st-' + pages_id).value);
   var st_type = document.getElementById('st-type-' + pages_id).value;
   st_type = st_type ? st_type : 'st';
   url_bit = url_bit.replace(new RegExp("&amp;", "g"), '&');
   if (total_posts % per_page == 0) {
      pages = total_posts / per_page;
   }
   else {
      pages = Math.ceil(total_posts / per_page);
   }
   if (cur_st > 0) {
      cur_page = cur_st / per_page;
      cur_page = cur_page - 1;
   }
   if (userPage > 0) {
      if (userPage < 1) {
         userPage = 1;
      }
      if (userPage > pages) {
         userPage = pages;
      }
      if (userPage == 1) {
         start = 0;
      }
      else {
         start = (userPage - 1) * per_page;
      }
      if (start) {
         window.location = url_bit + "&" + st_type + "=" + start;
      }
      else {
         window.location = url_bit;
      }
      return false;
   }
}

function pages_st_focus(pages_id){
   document.getElementById('st-' + pages_id).focus();
}

function ShowHide(id1, id2){
   if (id1 != '') 
      toggleview(id1);
   if (id2 != '') 
      toggleview(id2);
}

function my_getbyid(id){
   itm = null;
   if (document.getElementById) {
      itm = document.getElementById(id);
   }
   else 
      if (document.all) {
         itm = document.all[id];
      }
      else 
         if (document.layers) {
            itm = document.layers[id];
         }
   return itm;
}

function toggleview(id){
   if (!id) 
      return;
   if (itm = my_getbyid(id)) {
      if (itm.style.display == "none") {
         my_show_div(itm);
      }
      else {
         my_hide_div(itm);
      }
   }
}

function my_hide_div(itm){
   if (!itm) 
      return;
   itm.style.display = "none";
}

function my_show_div(itm){
   if (!itm) 
      return;
   itm.style.display = "";
}

function change_cell_color(id, cl){
   itm = my_getbyid(id);
   if (itm) {
      itm.className = cl;
   }
}

function togglecategory(fid, add){
   saved = new Array();
   clean = new Array();
   if (tmp = ipsclass.my_getcookie('collapseprefs')) {
      saved = tmp.split(",");
   }
   for (i = 0; i < saved.length; i++) {
      if (saved[i] != fid && saved[i] != "") {
         clean[clean.length] = saved[i];
      }
   }
   if (add) {
      clean[clean.length] = fid;
      my_show_div(my_getbyid('fc_' + fid));
      my_hide_div(my_getbyid('fo_' + fid));
   }
   else {
      my_show_div(my_getbyid('fo_' + fid));
      my_hide_div(my_getbyid('fc_' + fid));
   }
   ipsclass.my_setcookie('collapseprefs', clean.join(','), 1);
}

function locationjump(url){
   window.location = ipb_var_base_url + url;
}

function chooseskin(obj){
   choosebox = obj.options[obj.selectedIndex].value;
   extravars = '';
   if (choosebox != -1 && !isNaN(choosebox)) {
      if (document.skinselectorbox.skinurlbits.value) {
         extravars = '&' + document.skinselectorbox.skinurlbits.value;
         extravars = extravars.replace(/setskin=\d{1,}/g, '');
         extravars = extravars.replace(/skinid=\d{1,}/g, '');
         extravars = extravars.replace(/cal_id=&/g, '');
         extravars = extravars.replace(/&{1,}/g, '&');
         extravars = extravars.replace(/s=&/g, '');
      }
      locationjump('setskin=1&skinid=' + choosebox + extravars);
   }
}

function chooselang(obj){
   choosebox = obj.options[obj.selectedIndex].value;
   extravars = '';
   if (document.langselectorbox.langurlbits.value) {
      extravars = '&' + document.langselectorbox.langurlbits.value;
      extravars = extravars.replace(/setlanguage=\d{1,}/g, '');
      extravars = extravars.replace(/cal_id=&/g, '');
      extravars = extravars.replace(/langid=\w{1,}/g, '');
      extravars = extravars.replace(/&{1,}/g, '&');
      extravars = extravars.replace(/s=&/g, '');
   }
   locationjump('setlanguage=1&langid=' + choosebox + extravars);
}

function PopUp(url, name, width, height, center, resize, scroll, posleft, postop){
   showx = "";
   showy = "";
   if (posleft != 0) {
      X = posleft
   }
   if (postop != 0) {
      Y = postop
   }
   if (!scroll) {
      scroll = 1
   }
   if (!resize) {
      resize = 1
   }
   if ((parseInt(navigator.appVersion) >= 4) && (center)) {
      X = (screen.width - width) / 2;
      Y = (screen.height - height) / 2;
   }
   if (X > 0) {
      showx = ',left=' + X;
   }
   if (Y > 0) {
      showy = ',top=' + Y;
   }
   if (scroll != 0) {
      scroll = 1
   }
   var Win = window.open(url, name, 'width=' + width + ',height=' + height + showx + showy + ',resizable=' + resize + ',scrollbars=' + scroll + ',location=no,directories=no,status=no,menubar=no,toolbar=no');
}

function stacksize(thearray){
   for (i = 0; i < thearray.length; i++) {
      if ((thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined')) {
         return i;
      }
   }
   return thearray.length;
}

function pushstack(thearray, newval){
   arraysize = stacksize(thearray);
   thearray[arraysize] = newval;
}

function popstack(thearray){
   arraysize = stacksize(thearray);
   theval = thearray[arraysize - 1];
   delete thearray[arraysize - 1];
   return theval;
}

function innerhtml_template_to_html(t){
   t = t.replace(/&lt;%(\d+?)&gt;/ig, "<%$1>");
   t = t.replace(/%3C%(\d+?)%3E/ig, "<%$1>");
   return t;
}

function global_cancel_bubble(obj, extra){
   if (!obj || is_ie) {
      if (extra) {
         window.event.returnValue = false;
      }
      window.event.cancelBubble = true;
      return window.event;
   }
   else {
      obj.stopPropagation();
      if (extra) {
         obj.preventDefault();
      }
      return obj;
   }
}

function _get_obj_leftpos(obj){
   var left = obj.offsetLeft;
   while ((obj = obj.offsetParent) != null) {
      left += obj.offsetLeft;
   }
   return left;
}

function _get_obj_toppos(obj){
   var top = obj.offsetTop;
   while ((obj = obj.offsetParent) != null) {
      top += obj.offsetTop;
   }
   return top;
}

function center_div(){
   this.divname = '';
   this.divobj = '';
   this.shimobj = '';
}

center_div.prototype.move_div = function(){
   try {
      if (parent.document.getElementById(this.divname)) {
         this._document = parent.document;
         this._window = parent.window;
      } else {
         return;
      }
   } 
   catch (e) {
      return;
   }
   this.divobj = this._document.getElementById(this.divname);
   var my_width = 0;
   var my_height = 0;
   if (typeof(this._window.innerWidth) == 'number') {
      my_width = this._window.innerWidth;
      my_height = this._window.innerHeight;
   }
   else 
      if (this._document.documentElement && (this._document.documentElement.clientWidth || this._document.documentElement.clientHeight)) {
         my_width = this._document.documentElement.clientWidth;
         my_height = this._document.documentElement.clientHeight;
      }
      else 
         if (this._document.body && (this._document.body.clientWidth || this._document.body.clientHeight)) {
            my_width = this._document.body.clientWidth;
            my_height = this._document.body.clientHeight;
         }
   this.divobj.style.position = 'absolute';
   this.divobj.style.display = 'block';
   this.divobj.style.zIndex = -1;
   if (is_ie) {
      var layer_html = this.divobj.innerHTML;
      var full_html = "<iframe id='" + this.divname + "-shim' src='" + ipb_var_image_url + "/iframe.html' class='iframshim' scrolling='no' frameborder='0' style='position:absolute; top:0px; left:0px; right:0px; display: none;'></iframe>" + layer_html;
      this.divobj.innerHTML = full_html;
   }
   var divheight = parseInt(this.divobj.style.height) ? parseInt(this.divobj.style.height) : parseInt(this.divobj.offsetHeight);
   var divwidth = parseInt(this.divobj.style.width) ? parseInt(this.divobj.style.width) : parseInt(this.divobj.offsetWidth);
   divheight = divheight ? divheight : 200;
   divwidth = divwidth ? divwidth : 400;
   var scrolly = this.getYscroll();
   var setX = (my_width - divwidth) / 2;
   var setY = (my_height - divheight) / 2 + scrolly;
   setX = (setX < 0) ? 0 : setX;
   setY = (setY < 0) ? 0 : setY;
   this.divobj.style.left = setX + "px";
   this.divobj.style.top = setY + "px";
   this.divobj.style.zIndex = 99;
};
center_div.prototype.hide_div = function(){
   try {
      if (!this.divobj) {
         return;
      }
      else {
         this.divobj.style.display = 'none';
      }
   } 
   catch (e) {
      return;
   }
};
center_div.prototype.getYscroll = function(){
   var scrollY = 0;
   if (this._document.documentElement && this._document.documentElement.scrollTop) {
      scrollY = this._document.documentElement.scrollTop;
   }
   else 
      if (this._document.body && this._document.body.scrollTop) {
         scrollY = this._document.body.scrollTop;
      }
      else 
         if (this._window.pageYOffset) {
            scrollY = this._window.pageYOffset;
         }
         else 
            if (this._window.scrollY) {
               scrollY = this._window.scrollY;
            }
   return scrollY;
};
