function preload_images(images)
 {
  var img = new Array();
  for(var i = 0; i < images.length; ++i)
   {
    img[i] = new Image();
    img[i].src = images[i];
   }
 }

function sf(id)
 {
  if(document.getElementById(id)) document.getElementById(id).focus();
 }

function simple_ajax_request(url,query)
 {
  var strURL = 'index.php';
  var xmlHttpReq = false;
  var self = this;
  // Mozilla/Safari
  if (window.XMLHttpRequest) {
      self.xmlHttpReq = new XMLHttpRequest();
  }
  // IE
  else if (window.ActiveXObject) {
      self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  }
  self.xmlHttpReq.open('POST', strURL, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.setRequestHeader('Pragma', 'no-cache');
  self.xmlHttpReq.setRequestHeader('Cache-Control', 'must-revalidate');
  self.xmlHttpReq.onreadystatechange = function() {
      if(self.xmlHttpReq.readyState == 4) {
       // just do nothing...   
      }
  }
  self.xmlHttpReq.send(query);
 }


function highlight_posting(thread,threadcolor,posting,postingcolor)
 {
  if(document.getElementById(thread)) document.getElementById(thread).style.background=threadcolor;
  if(document.getElementById(posting)) document.getElementById(posting).style.background=postingcolor;
 }

function fold_thread(id,expand_img,fold_img)
 {
  var ULs = document.getElementById('thread-'+id).getElementsByTagName("ul"); 
  if(ULs[0] && (ULs[0].style.display=='block' || ULs[0].style.display==''))
   {
    document.getElementById('expand_img_'+id).src = expand_img;
    for(var i = 0; i < ULs.length; i++) 
    ULs[i].style.display = 'none'; 
   }
  else
   {
    document.getElementById('expand_img_'+id).src = fold_img;
    for(var i = 0; i < ULs.length; i++) 
    ULs[i].style.display = 'block'; 
   } 
 }

function hide_posting(id,show_posting_img,hide_posting_img)
 {
  if(document.getElementById('posting-'+id).style.display!='none') 
   {
    document.getElementById('posting-'+id).style.display='none';
    if(document.getElementById('avatar-'+id)) document.getElementById('avatar-'+id).style.display='none';
    if(document.getElementById('hide-posting-'+id)) document.getElementById('hide-posting-'+id).src=show_posting_img;
   } 
  else
   {
    document.getElementById('posting-'+id).style.display='block';
    if(document.getElementById('avatar-'+id)) document.getElementById('avatar-'+id).style.display='block';
    if(document.getElementById('hide-posting-'+id)) document.getElementById('hide-posting-'+id).src=hide_posting_img;
   } 
 } 

function getElementsByClassName(class_name)
 {
  var all_obj,ret_obj=new Array(),j=0;
  if(document.all)all_obj=document.all;
  else if(document.getElementsByTagName && !document.all)all_obj=document.getElementsByTagName("*");
  for(i=0;i<all_obj.length;i++)
   {
    if(all_obj[i].className==class_name)
     {
      ret_obj[j]=all_obj[i];
      j++
     }
   }
  return ret_obj;
 }

function hide_all_postings(show_posting_image)
 {
  var obj=getElementsByClassName('postingcontainer');
  for(i=0;i<obj.length;i++)
   {
    obj[i].style.display='none';
   }
  var obj=getElementsByClassName('hide-posting');
  for(i=0;i<obj.length;i++)
   {
    obj[i].src=show_posting_image;
   }
  var obj=getElementsByClassName('avatar');
  for(i=0;i<obj.length;i++)
   {
    obj[i].style.display='none';
   }
 }
 
function show_all_postings(hide_posting_image)
 {
  var obj=getElementsByClassName('postingcontainer');
  for(i=0;i<obj.length;i++)
   {
    obj[i].style.display='block';
   }
  var obj=getElementsByClassName('hide-posting');
  for(i=0;i<obj.length;i++)
   {
    obj[i].src=hide_posting_image;
   }
  var obj=getElementsByClassName('avatar');
  for(i=0;i<obj.length;i++)
   {
    obj[i].style.display='block';
   }   
 } 
 
function hide_replies()
 {
  document.getElementsByTagName("ul").style.display='none';
 }   

function hide_sidebar(id,minimized_width,maximized_width,hide_image,show_image)
 {
  if(document.getElementById(id+'-container').style.display=='none') 
   {
    document.getElementById(id+'-container').style.display='block';
    document.getElementById(id+'-toggle').src=hide_image;
    document.getElementById(id).style.width=maximized_width;
    simple_ajax_request('index.php','hide='+id);
   } 
  else
   {
    document.getElementById(id+'-container').style.display='none';
    document.getElementById(id+'-toggle').src=show_image;
    document.getElementById(id).style.width=minimized_width;
    simple_ajax_request('index.php','hide='+id);
   } 
 }
 
function toggle_sidebar(hide_image,show_image)
 {
  if(document.getElementById('sidebarcontent').style.display=='none') 
   {
    document.getElementById('sidebarcontent').style.display='block';
    document.getElementById('sidebartoggle').src=hide_image;
   } 
  else
   {
    document.getElementById('sidebarcontent').style.display='none';
    document.getElementById('sidebartoggle').src=show_image;
   } 
  simple_ajax_request('index.php','toggle_sidebar=true');
 } 

function bbcode(id,code,value)
 {
  value = typeof(value) != 'undefined' ? value : '';
  if(value!='') value = '='+value;
  
  if (document.selection) // IE
   {
    var str = document.selection.createRange().text;
    document.getElementById(id).focus();
    var sel = document.selection.createRange();
    sel.text = '[' + code + value + "]" + str + '[/' + code + ']';
    return;
   }
  else if((typeof document.getElementById(id).selectionStart) != 'undefined') // Mozilla
   {
    var txtarea = document.getElementById(id);
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var oldScrollTop = txtarea.scrollTop;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd);
    var s3 = (txtarea.value).substring(selEnd, selLength);
    txtarea.value = s1 + '[' + code + value + ']' + s2 + '[/' + code + ']' + s3;
    txtarea.selectionStart = s1.length;
    txtarea.selectionEnd = s1.length + code.length*2 + value.length + s2.length + 5;
    txtarea.scrollTop = oldScrollTop;
    txtarea.focus();
    return;
   }
  else insert(id,'[' + code + value + '][/' + code + ']');
 }

function insert(id,what)
 {
  if(document.getElementById(id).createTextRange) // IE
   {
    document.getElementById(id).focus();
    document.selection.createRange().duplicate().text = what;
   }
  else if((typeof document.getElementById(id).selectionStart) != 'undefined') // Mozilla
   {
    var tarea = document.getElementById(id);
    var selEnd = tarea.selectionEnd;
    var txtLen = tarea.value.length;
    var txtbefore = tarea.value.substring(0,selEnd);
    var txtafter =  tarea.value.substring(selEnd, txtLen);
    var oldScrollTop = tarea.scrollTop;
    tarea.value = txtbefore + what + txtafter;
    tarea.selectionStart = txtbefore.length + what.length;
    tarea.selectionEnd = txtbefore.length + what.length;
    tarea.scrollTop = oldScrollTop;
    tarea.focus();
   }
  else
   {
    document.getElementById(id).value += what;
    document.getElementById(id).focus();
   }
 }

function insert_link(id,link_text,link_target)
 {
  var link_text = decodeURIComponent(link_text);
  var link_target = decodeURIComponent(link_target);
  if(document.selection) // for IE
   {
    var str = document.selection.createRange().text;
    document.getElementById(id).focus();
    var sel = document.selection.createRange();
    var insert_link = prompt(link_target,'http://');
    if(sel.text=='' && insert_link!='' && insert_link!=null) var str = prompt(link_text,'');
    if(insert_link && str!=null)
     {
      if(str!='')
       {
        sel.text = "[link=" + insert_link + "]" + str + "[/link]";
       }
      else
       {
        sel.text = "[link]" + insert_link + "[/link]";
       }
     }
    return;
   }
  else if((typeof document.getElementById(id).selectionStart) != 'undefined') // Mozilla
   {
    var txtarea = document.getElementById(id);
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var oldScrollTop = txtarea.scrollTop;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd);
    var s3 = (txtarea.value).substring(selEnd, selLength);

    var insert_link = prompt(link_target,'http://');
    if(selEnd-selStart==0 && insert_link!='' && insert_link!=null)
     {
      var s2 = prompt(link_text,'');
      var no_selection = true;
     }
    if(insert_link && s2!=null)
     {
      if(s2!='')
       {
        txtarea.value = s1 + '[link=' + insert_link + ']' + s2 + '[/link]' + s3;
        var codelength = 14 + insert_link.length + s2.length;
       }
      else
       {
        txtarea.value = s1 + '[link]' + insert_link + '[/link]' + s3;
        var codelength = 13 + insert_link.length;
       }
      if(no_selection) txtarea.selectionStart = s1.length + codelength;
      else txtarea.selectionStart = s1.length;
      txtarea.selectionEnd = s1.length + codelength;
      txtarea.scrollTop = oldScrollTop;
      txtarea.focus();
      return;
     }
   }
  else insert(id,'[link=http://www.domain.tld/]Link[/link]');
 }

function insert_image(id,image_url_label)
 {
  var image_url_label = decodeURIComponent(image_url_label);
  if(document.selection) // IE
   {
    var str = document.selection.createRange().text;
    document.getElementById(id).focus();
    var sel = document.selection.createRange();
    if(str=='') 
     {
      var image_url = prompt(image_url_label,'http://');
      if(image_url!=null) sel.text = "[img]" + image_url + "[/img]";
     }
    else
     {
      sel.text = "[img]" + str + "[/img]";
     }
    return;
   }
  else if((typeof document.getElementById(id).selectionStart) != 'undefined') // Mozilla
   {
    var txtarea = document.getElementById(id);
    var selLength = txtarea.textLength;
    var selStart = txtarea.selectionStart;
    var selEnd = txtarea.selectionEnd;
    var oldScrollTop = txtarea.scrollTop;
    var s1 = (txtarea.value).substring(0,selStart);
    var s2 = (txtarea.value).substring(selStart, selEnd);
    var s3 = (txtarea.value).substring(selEnd, selLength);
    if(selEnd-selStart==0) 
     {
      var s2 = prompt(image_url_label,'http://');
      var no_selection = true;
     }
    if(s2!=null)
     {
      txtarea.value = s1 + '[img]' + s2 + '[/img]' + s3;
      var codelength = 11 + s2.length;
      if(no_selection) txtarea.selectionStart = s1.length + codelength;
      else txtarea.selectionStart = s1.length;
      txtarea.selectionEnd = s1.length + codelength;
      txtarea.scrollTop = oldScrollTop;
      txtarea.focus();
      return;
     }
   }
  else insert(id,'[link=http://www.domain.tld/]Link[/link]');
 }

function clear_input(form,field)
 {
  document.forms[form].elements[field].value = '';
  document.forms[form].elements[field].focus();
 }

function show_box(id,x,y)
 {
  x = typeof(x) != 'undefined' ? x : 0;
  y = typeof(y) != 'undefined' ? y : 0;
  if(!document.getElementById(id).style.display || document.getElementById(id).style.display=='none')
   {
    s_box = document.getElementById(id);
    s_box.style.display = 'block';
    s_box.style.left  = posX+x + 'px';
    s_box.style.top = posY+y + 'px';
   } 
  else
   {
    document.getElementById(id).style.display = 'none';
   }
 }

function popup(url,width,height)
 {
  width = typeof(width) != 'undefined' ? width : 340;
  height = typeof(height) != 'undefined' ? height : 340;
  winpops = window.open(url,'','width='+width+',height='+height+',scrollbars,resizable');
 }

function delete_cookie(deleting_cookie_message) 
 {
  document.getElementById('delete_cookie').innerHTML = decodeURIComponent(deleting_cookie_message);
    
    var strURL = 'index.php';
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.setRequestHeader('Pragma', 'no-cache');
    self.xmlHttpReq.setRequestHeader('Cache-Control', 'must-revalidate');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            document.getElementById('delete_cookie').innerHTML = '&nbsp;';
            document.getElementById('setcookie').checked = '';
        }
    }
    self.xmlHttpReq.send('mode=delete_cookie&method=ajax');
 }

function ajax_preview(id,show_reply_link)
 {
  var srl 