function getElementByClass(root,className) {
  var elementPool = new Array();
  elementPool = root.getElementsByTagName("*");
  for( var i = 0; i < elementPool.length; i++ )
  {
    if(elementPool[i].className) {
      var regExp = new RegExp(className);
      if( regExp.test(elementPool[i].className) ) {
        return elementPool[i];
      }
    }
  }
}

function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;
    if(opacStart > opacEnd) {

        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
} 

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function account_toggle( mode )
{
  if( mode == 0 ) {
    var object = document.getElementById("accountbox");
    object.className = "hidden";
    changeOpac(0,"loginbox");
    var object = document.getElementById("loginbox");
    object.className = "";
    opacity("loginbox",0,100,500);
  }
  else {
    var object = document.getElementById("loginbox");
    object.className = "hidden";
    changeOpac(0,"accountbox");
    var object = document.getElementById("accountbox");
    object.className = "";
    opacity("accountbox",0,100,500);
  }
}

function toggleRootReply() {
  var newsItem = document.getElementById("newsContainer");
  if( newsItem ) {
    var rootReply = getElementByClass(newsItem,"rootReply");    
    if(rootReply.className=="rootReply rolledUp")
      rootReply.className="rootReply";
    else rootReply.className="rootReply rolledUp";
  }
}

function bodyDisplayToggle(textstring) {
  var post=document.getElementById(textstring);
  if(post) {
    closeReplyPane(textstring);
    var postBody = getElementByClass(post,"postBody");
    var newMsg;
    if(postBody) {
      if(postBody.className=="postBody") {
        postBody.className="postBody rolledUp";
        newMsg = "[show message]";
      }
      else {
        postBody.className="postBody";
        newMsg = "[hide message]";
      }
      var postHeader = getElementByClass(post,"postHeader");
      if(postHeader) {
        var onClickHandler='bodyDisplayToggle('+textstring+')';
        var newLink = document.createElement('a');
        var newText = document.createTextNode(newMsg);
        newLink.appendChild(newText);
        newLink.setAttribute('class','bodyToggle');
        newLink.setAttribute('className','bodyToggle');
        var onClickHandler='\'bodyDisplayToggle('+textstring+'\')';
        newLink.setAttribute('onclick',onClickHandler);
        newLink.onclick=function() { bodyDisplayToggle(textstring); };

        var anchors = postHeader.getElementsByTagName("a");
        postHeader.replaceChild(newLink,anchors[2]);
      }      
    }
  }
}

function toggleReplyPane(postId) {
  var post=document.getElementById(postId);
  if(post) {
    var postReply = getElementByClass(post,"postReply");
    if(postReply) {
      if(postReply.className == "postReply rolledUp")
        postReply.className = "postReply";
      else postReply.className = "postReply rolledUp";    
    }
  }
}

function closeReplyPane(postId) {
  var post=document.getElementById(postId);
  if(post) {
    var postReply = getElementByClass(post,"postReply");
    if(postReply) {
      postReply.className="postReply rolledUp";
    }
  }
}

function createRequest() {
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        alert("XMLHttpRequest not supported");
    }
}

var request = null;

function boost_story_response() {
  if(request.readyState == 4) {
    var mySplitResult = request.responseText.split("|");
    var id = mySplitResult[0];
    var boosts = mySplitResult[1];
    if(boosts > 0) {
      changeOpac(0, id);
      var post=document.getElementById(id);
      post.innerHTML = boosts;
      opacity(id, 0, 100, 500);
    }
  }
}

function boost_comment_response() {
  if(request.readyState == 4) {
    var mySplitResult = request.responseText.split("|");
    var id = mySplitResult[0];
    var boosts = mySplitResult[1];
    changeOpac(0, id);
    var post=document.getElementById(id);
    post.innerHTML = boosts;
    opacity(id, 0, 100, 500);
  }
}

function retro_comment_response() {
  if(request.readyState == 4) {
    var mySplitResult = request.responseText.split("|");
    var id = mySplitResult[0];
    var boosts = mySplitResult[1];
    var post=document.getElementById(id);
    post.innerHTML = boosts;
    opacity(id, 0, 100, 500);
  }
}

function boost_story(id,story_id) {
  request = createRequest();
  var url = "/boost_story.php?story_id=" + story_id + "&id=" + id;
  request.open( "GET", url, true );
  request.onreadystatechange = boost_story_response;
  request.send( null );
}

function boost_comment(id,story_id,comment_id) {
  request = createRequest();
  var url = "/boost_comment.php?comment_id=" + comment_id + "&story_id=" + story_id + "&id=" + id;
  request.open( "GET", url, true );
  request.onreadystatechange = boost_comment_response;
  request.send( null );
}

function retro_comment(id,story_id,comment_id) {
  request = createRequest();
  var url = "/retro_comment.php?comment_id=" + comment_id + "&story_id=" + story_id + "&id=" + id;
  request.open( "GET", url, true );
  request.onreadystatechange = retro_comment_response;
  request.send( null );
}

function toggleAdsenseAccount(num) {
  if(num==0) {
    var block=document.getElementById("useExistingAdsense");
    var query=getElementByClass(block,"adsenseQuery");
    query.className = "adsenseQuery hidden";
    block=document.getElementById("createAdsense");
    query=getElementByClass(block,"adsenseQuery");
    query.className="adsenseQuery";
  } else if(num==1) {
    var block=document.getElementById("useExistingAdsense");
    var query=getElementByClass(block,"adsenseQuery");
    query.className = "adsenseQuery";
    block=document.getElementById("createAdsense");
    query=getElementByClass(block,"adsenseQuery");
    query.className="adsenseQuery hidden";
  }  
}
