


cruciforum = {
  init: function() {
    cruciforum.hideUsernamesOnThreadList();
    cruciforum.hijackSubmitMethod();
    cruciforum.loadSavedUserDetails();
    cruciforum.focusTextArea();
  },
  
  focusTextArea: function() {
    var tas = document.getElementsByTagName('textarea');
    if (tas.length > 0) {
      tas[0].focus();
      tas[0].onkeypress = function() {
        // enable submit button!
        var inps = document.getElementsByTagName('input');
        for (var j=0; j<inps.length; j++) {
          if (inps[j].type == "submit") {
            inps[j].value = inps[j].original_value;
            inps[j].disabled = false;
          }
        }
      }
    }
  },
  
  hijackSubmitMethod: function() {
    var forms = document.getElementsByTagName('form');
    for (var i=0; i<forms.length; i++) {
      if (forms[i].className == "postform") {
        forms[i].onsubmit = function() {
          var name = document.getElementById('name');
          var website = document.getElementById('website');
          var email = document.getElementById('email');
          cruciforum.createCookie("cruciforum_name",name.value,180);
          cruciforum.createCookie("cruciforum_website",website.value,180);
          cruciforum.createCookie("cruciforum_email",email.value,180);          
        }
        // disable submit until textarea is filled in
        var inps = document.getElementsByTagName('input');
        for (var j=0; j<inps.length; j++) {
          if (inps[j].type == "submit") {
            inps[j].original_value = inps[j].value;
            inps[j].value = "Enter a message!";
            inps[j].disabled = true;
          }
        }
      }
    }
  },
  
  loadSavedUserDetails: function() {
    var name = document.getElementById('name');
    var website = document.getElementById('website');
    var email = document.getElementById('email');
    if (name && website && email) {
      name.value = cruciforum.readCookie("cruciforum_name");
      website.value = cruciforum.readCookie("cruciforum_website");
      email.value = cruciforum.readCookie("cruciforum_email");
    }
  },
  
  hideUsernamesOnThreadList: function() {
    cruciforum.createCSS("li.threadlink span","display: none");  
    var lis = document.getElementsByTagName("li");
    for (var i=0; i<lis.length; i++) {
      if (lis[i].className == "threadlink") {
        var a = lis[i].getElementsByTagName('a')[0];
        // closures
        a.onmouseover = (function(a) {
          return function() {
            var spans = a.parentNode.getElementsByTagName("span");
            for (var j=0; j<spans.length; j++) {
              spans[j].style.display = "inline";
            }
          }
        })(a);
        a.onmouseout = (function(a) {
          return function() {
            var spans = a.parentNode.getElementsByTagName("span");
            for (var j=0; j<spans.length; j++) {
              spans[j].style.display = "none";
            }
          }
        })(a);
      }
    }
  },

  createCSS: function(selector, declaration) {
  	// test for IE
  	var ua = navigator.userAgent.toLowerCase();
  	var isIE = (/msie/.test(ua)) && !(/opera/.test(ua)) && (/win/.test(ua));

  	// create the style node for all browsers
  	var style_node = document.createElement("style");
  	style_node.setAttribute("type", "text/css");
  	style_node.setAttribute("media", "screen"); 

  	// append a rule for good browsers
  	if (!isIE) style_node.appendChild(document.createTextNode(selector + " {" + declaration + "}"));

  	// append the style node
  	document.getElementsByTagName("head")[0].appendChild(style_node);

  	// use alternative methods for IE
  	if (isIE && document.styleSheets && document.styleSheets.length > 0) {
  		var last_style_node = document.styleSheets[document.styleSheets.length - 1];
  		if (typeof(last_style_node.addRule) == "object") last_style_node.addRule(selector, declaration);
  	}
  },

  createCookie: function (name,value,days) {
  	if (days) {
  		var date = new Date();
  		date.setTime(date.getTime()+(days*24*60*60*1000));
  		var expires = "; expires="+date.toGMTString();
  	}
  	else var expires = "";
  	document.cookie = name+"="+value+expires+"; path=/";
  },

  readCookie: function(name) {
  	var nameEQ = name + "=";
  	var ca = document.cookie.split(';');
  	for(var i=0;i < ca.length;i++) {
  		var c = ca[i];
  		while (c.charAt(0)==' ') c = c.substring(1,c.length);
  		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  	}
  	return null;
  },

  eraseCookie: function(name) {
  	createCookie(name,"",-1);
  }  
};

/* DOMContentLoaded: http://www.kryogenix.org/days/2007/09/26/shortloaded */
(function(i) {
var u =navigator.userAgent;
var e=/*@cc_on!@*/false; var st =setTimeout;
if(/webkit/i.test(u)){st(function(){var dr=document.readyState;
if(dr=="loaded"||dr=="complete"){i()}else{st(arguments.callee,10);}},10);}
else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){
document.addEventListener("DOMContentLoaded",i,false); } else if(e){     (
function(){var t=document.createElement('doc:rdy');try{t.doScroll('left');
i();t=null;}catch(e){st(arguments.callee,0);}})();}else{window.onload=i;}})(cruciforum.init);

  
  
  
