var capchaSelection = null;
var lastMoreQuesitonButton = null;

function debug(aMsg) {
   setTimeout(function() { throw new Error("[debug] " + aMsg); }, 0);
}

function mceAddControlToAllTextareas() {
return;
    var textarea_num = document.getElementsByTagName("textarea").length
    var textarea;

    for (var i = 0; i <= textarea_num; i++)    {

        textarea = document.getElementsByTagName("textarea")[i];
        if (textarea != null)    {
            tinyMCE.execCommand("mceAddControl", false, textarea.id);
        }
    }
}

function populateJumpMenu($level, $master, $category, $oid){
	var url = window.location.toString().split('/');

	if ($master == 'hot' || $master == 'new' || $master == 'need'){
		$master = '';
	}
	if ($category == 'hot' || $category == 'new' || $category == 'need'){
		$category = '';
	}
	if ($level == 'blog' || $level == 0){
		var jumpMenu = "<a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/'>Home</a> \ ";
		obj('jumpMenu').innerHTML = jumpMenu;
		return;
	}
	if (url[3]){
		$master = url[3];
		if ($master == 'hot' || $master == 'new' || $master == 'need'){
			$master = '';
		}
		var niceCat = $master.replace("__"," & ");
		var jumpMenu = "<a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/'>Home</a> \\ <a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/" + $master + "'>" + niceCat + "</a>";
	}
	if (url[4]){
		$category = url[4];
		if ($category == 'hot' || $category == 'new' || $category == 'need'){
			$category = '';
		}
		var niceSub = $category.replace("__"," & ");
		var jumpMenu = "<a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/'>Home</a> \\ <a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/" + $master + "'>" + niceCat + "</a> \\	<a style='font-family: arial; text-transform:uppercase;color: black;' href='http://questionville.com/" + $master + "/" + $category + "'>" + niceSub + "</a>";
	}

	obj('jumpMenu').innerHTML = jumpMenu;
}


function obj(el) {
	if( document.all ) {
		return document.all(el);
	} else {
		return document.getElementById(el);
	};
};

function elementChangeInAllClasses(e,spv){
	if(document.getElementsByTagName){
	   var nodes = document.getElementsByTagName(e)
	   var max = nodes.length
	   for(var i = 0;i < max;i++){
	      var nodeObj = nodes.item(i);
	      var attrMax = nodeObj.attributes.length
	      for(var j = 0; j < attrMax; j++){
				if(nodeObj.attributes.item(j).nodeName == 'class'){
					if(nodeObj.attributes.item(j).nodeValue == 'keyWord')
					nodeObj.style.fontWeight = fw;
				}
	      }
		}
   }
}

function classRepl(whatReplace,withWhatReplace){
	for(var i=0;i<findClass(whatReplace).length;i++){
		findClass(whatReplace)[i].onclick=function(){
			this.className=this.className==withWhatReplace?whatReplace:withWhatReplace;
		}
	}
}

function findClass(xx){
	var rl=new Array();
	var ael=document.all?document.all:document.getElementsByTagName('*')
	for(i=0,j=0;i<ael.length;i++){
		if((ael[i].className==xx)){
			rl[j]=ael[i];
		j++;}
	}
	return rl;
}

function setCookie( name, value, expires, path, domain, secure )
{
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
	expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) )
	{
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

// this deletes the cookie when called
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" + ( ( path ) ? ";path=" + path : "") +( ( domain ) ? ";domain=" + domain : "" ) + 	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

function checkLogin(){
	liveuserID = getCookie('userID');
	return getCookie('login');
}

function saveReturnUrl(){
	var returnURL = window.location.toString();
	setCookie( 'returnURL', returnURL);
}

function getReturnUrl(){
	var url = getCookie( 'returnURL');
	window.returnURL = url;
}
getReturnUrl();
window.returnURL = null;

function login(){
	saveReturnUrl();
	var ajaxArgs = '';
	ajaxArgs += "action-||-login,";
	ajaxArgs += "target-||-loginStatus,";
	ajaxArgs += "targetType-||-function,";
	ajaxArgs += "email-||-" + obj('loginForm').email.value + ",";
	ajaxArgs += "password-||-" + obj('loginForm').password.value + ",";
	if (window.returnURL){
		var url = window.returnURL.toString();
		if (url.indexOf('logout') == -1){
			ajaxArgs += 'returnURL-||-' + window.returnURL;
		}
	} else {
		ajaxArgs += 'returnURL-||-' + escape('http://questionville.com');
	}
	sndReqArg(ajaxArgs);
}

function forgotPassword(){
	obj('forgotPasswordSecQuestion').style.display = 'block';
	obj('formLogin').style.display = 'none';
	obj('formForgot').style.display = 'inline';
	obj('forgotPasswordPhrase').style.display = 'none';

	if (obj('loginForm').email.value == ''){
		obj('loginStatus').innerHTML = "<b style='color: red;'>Please fill in email address.</b>";
		return;
	}
	if (obj('loginForm').securityQuestionForgot.value == ''){
		obj('loginStatus').innerHTML = "<b style='color: red;'>Please fill in security question.</b>";
		return;
	}
	saveReturnUrl();
	var ajaxArgs = '';
	ajaxArgs += "action-||-forgotPassword,";
	ajaxArgs += "target-||-loginStatus,";
	ajaxArgs += "targetType-||-function,";
	ajaxArgs += "email-||-" + obj('loginForm').email.value + ",";
	ajaxArgs += "securityQuestion-||-" + obj('loginForm').securityQuestionForgot.value + ",";
	sndReqArg(ajaxArgs);
}

function register(){
	obj('registerForm').style.display = 'block';
	obj('loginForm').style.display = 'none';
}

function sendRegistration(){
	saveReturnUrl();

	obj('divformRegEmail').innerHTML = '';
	obj('loginStatus').innerHTML = '';
	obj('loginStatus2').innerHTML = '';


	if (
		obj('registerForm').nickname.value  == '' ||
		obj('registerForm').email.value     == '' ||
		obj('registerForm').securityQuestion.value     == '' ||
		obj('registerForm').password0.value == ''
		){
		 obj('loginStatus').innerHTML = "<b style='color: red;'>Please fill out all fields</b>";
		 obj('loginStatus2').innerHTML = "<b style='color: red;'>Please fill out all fields</b>";
		 return;
	}

	if (obj('registerForm').email.value != obj('registerForm').email2.value){
		obj('divformRegEmail2').innerHTML = "<b style='color: red;'>Please make sure your email address matches.</b>";
		return;
	}

	if (obj('registerForm').password0.value != obj('registerForm').password1.value){
		obj('loginStatus').innerHTML = "<b style='color: red;'>Please make sure your passwords match.</b>";
		obj('loginStatus2').innerHTML = "<b style='color: red;'>Please make sure your passwords match.</b>";
		return;
	}

	if (obj('registerForm').password0.value.length < 6){
		obj('loginStatus').innerHTML = "<b style='color: red;'>Please make sure your password is longer then 6 characters.</b>";
		obj('loginStatus2').innerHTML = "<b style='color: red;'>Please make sure your password is longer then 6 characters.</b>";
		return;
	}

	var nickName = obj('registerForm').nickname.value.replace(" ","_");

	var ajaxArgs = '';
	ajaxArgs += "action-||-sendRegistration";
	ajaxArgs += ",target-||-loginStatus";
	ajaxArgs += ",targetType-||-function";
	ajaxArgs += ',returnURL-||-' + window.returnURL;
	ajaxArgs += ",nickName-||-" 	+ nickName;
	ajaxArgs += ",email-||-" 		+ obj('registerForm').email.value;
	ajaxArgs += ",password-||-" 	+ obj('registerForm').password0.value;
	ajaxArgs += ",securityQuestion-||-" 	+ obj('registerForm').securityQuestion.value;

	sndReqArg(ajaxArgs);
}

var lastUrl = null;

function loginStatus(msg,returnUrl, userID, nickName){
	obj('formNickName').style.backgroundColor = 'white';
	obj('formRegEmail').style.backgroundColor = 'white';
	obj('divformNickName').innerHTML = '';
	obj('divformRegEmail').innerHTML = '';
	returnUrl = unescape(returnUrl);

	if (!returnUrl){
		returnUrl = 'http://questionville.com';
	}

	switch(msg){
		case 'badPass':
			obj('loginStatus').innerHTML = "<b style='color: red;'>Wrong Password, please try again.</b>";
			obj('formPass').style.backgroundColor = 'red';
		break;
		case 'badUser':
			obj('loginStatus').innerHTML = "<b style='color: red;'>User Doesn't Exist, please try again.</b>";
			obj('formEmail').style.backgroundColor = 'red';
		break;
		case 'Duplicate_nickName':
			obj('formNickName').style.backgroundColor = 'red';
			obj('divformNickName').innerHTML = 'nickName Already Exists';
		break;
		case 'Duplicate_eMail':
			obj('formRegEmail').style.backgroundColor = 'red';
			obj('divformRegEmail').innerHTML = 'email Already Exists';
		break;
		case 'Registered':
			obj('regForm').innerHTML = "<div style='font-weight: bold; position: relative; border-bottom: solid 1px black; background: url(http://questionville.com/images/addAnswerHeader.gif); height: 22px; width: 100%; background-repeat: repeat-x; text-align: left'><span style='padding: 5px;top: 3px; position: relative;'>Please Confirm Your Account</span></div><b style='color: green; padding: 25px;'>Successful, you'll receive an activation email shortly.</b>";
		break;
		case 'True':
		//alert ('userID = ' + userID);
			setCookie( 'userID', userID );
			setCookie( 'nickName', nickName );
			//window.history.back();
			if (!window.returnURL){
				window.returnURL = 'http://questionville.com';
			} else if (window.returnURL == window.location){
				window.returnURL = 'http://questionville.com';
			}
			window.open(returnUrl,'_self');
		break;
		case 'Account Not Confirmed':
			obj('loginStatus').innerHTML = "<b style='color: red;'>Account hasn't been confirmed yet, please check your email.</b>";
		break;
		case 'passwordReset':
			obj('loginStatus').innerHTML = "<b style='color: green;'>Your new password has been reset and sent to your email.</b>";
		break;
		case 'badSecurityQuestion':
			obj('loginStatus').innerHTML = "<b style='color: red;'>Your security question doesn't match, please try again.</b>";
		break;
	}
	return true;
}

function addpick($answerID, $questionID){
	var ajaxArgs = '';
	ajaxArgs += "action-||-addpick,";
	ajaxArgs += ",target-||-updatepickBox,";
	ajaxArgs += "targetType-||-function,";
	ajaxArgs += ",answerID-||-" 	+ $answerID;
	ajaxArgs += ",questionID-||-" 	+ $questionID;
	sndReqArg(ajaxArgs);
}

function removepick($answerID){
	var ajaxArgs = '';
	ajaxArgs += "action-||-removepick,";
	ajaxArgs += ",target-||-updatepickBox,";
	ajaxArgs += "targetType-||-function,";
	ajaxArgs += ",answerID-||-" 	+ $answerID;
	sndReqArg(ajaxArgs);
}

function updatepickBox($response,$count,$answerID){
	switch ($response){
		case 'nouser':
			window.open('http://questionville.com/index.php?action=login&returnURL=' + escape(window.location),'_self');
		break;
		case 'addpick':
			obj('pickBoxCount' + $answerID).innerHTML = $count;
			obj('pickBoxBg' + $answerID).className = 'pickBoxHit';
		break
		case 'removepick':
			obj('pickBoxCount' + $answerID).innerHTML = $count;
			obj('pickBoxBg' + $answerID).className = 'pickBox';
		break;
	}
}

function evalWindowVars() {
	var strURL = window.location.search.substring(1);
	var params = strURL.split("&");
	var vfmLIntLen = params.length;
	for (var i = 0; i < vfmLIntLen; i++) {
		if (params[i]) {
			var parts = params[i].split("=");
			if (parts==''){
				return;
			};
			try{
				eval("window." + parts[0] + " = '" + parts[1] + "'");
			} catch (e) {};
		};
	};
};


evalWindowVars();

function initCategories(){
	var stretchers = document.getElementsByClassName('stretcher'); //div that stretches
	var toggles = document.getElementsByClassName('category'); //divs where I click on

	//accordion effect
	var myAccordion = new fx.Accordion(
		toggles, stretchers, {opacity: true, duration: 400}
	);

	//hash functions
	var found = false;
	toggles.each(function(div, i){
		var div = Element.find(div, 'nextSibling'); //element.find is located in prototype.lite
		if (window.location.href.indexOf(div.title) > 0) {
			myAccordion.showThisHideOpen(div);
			found = true;
		}
	});
	if (!found) myAccordion.showThisHideOpen(stretchers[0]);
}

var selectedCategory = null;
var selectedCategoryID = null;
var selectedSubCategory = null;
var selectedSubCategoryID = null;
var currentSelectedSubCat = null;

var currentCatSafeName = null;
var currentSubCatSafeName = null;

var selectedSubCategoryegoryList = null;

function showCategory($id,$oid,$subCategoryList,$className){
	if (selectedCategory){
		obj(selectedCategory).className = $className;
	}
	if (selectedSubCategoryegoryList){
		obj (selectedSubCategoryegoryList).style.display = 'none';
	}

	selectedSubCategoryegoryList = 'subCategoryList' + $id;
	obj(selectedSubCategoryegoryList).style.display = 'block';

	selectedCategory = $id;
	selectedCategoryID = $oid;
	obj($id).style.display = 'block';
	obj($id).className = $className + 'Hit';
}

function showSubCategorySubmit($id,$oid,$niceSubCategory){
	if (selectedSubCategory){
		obj(selectedSubCategory).className = obj(selectedSubCategory).oldClassName;
	}
	selectedSubCategory = $id;
	selectedSubCategoryID = $oid;
	obj($id).oldClassName = obj($id).className;
	obj($id).className = 'subCatgegorySubmitHit';
	obj('displaySelectedCat').innerHTML = $niceSubCategory;
}



function showSubCategory($oid){
	var ajaxArgs = '';
	ajaxArgs += "action-||-showQuestions,";
	ajaxArgs += "target-||-questions,";
	ajaxArgs += "targetType-||-innerHTML,";
	ajaxArgs += "level-||-2,";
	ajaxArgs += "oid-||-" + $oid;
	sndReqArg(ajaxArgs);
}

function showAddQuestion(){
	var ajaxArgs = '';
	ajaxArgs += "action-||-showAddQuestion,";
	ajaxArgs += "target-||-mainResults,";
	ajaxArgs += "targetType-||-innerHTML,";
	obj("categoryBox").style.display = "none"
	obj("categoryBox").innerHTML = '';
	obj("categoryBoxTitle").style.display = "none"
	sndReqArg(ajaxArgs);
}

function showAddQuestion_response(){
	tinyMCE.execCommand("mceAddControl", false, 'questionDescription');
}

function addQuestion(){
	if (!selectedSubCategoryID){
		obj('displaySelectedCat').innerHTML = '<b style="color: red">Please Select a SubCategory</b>';
		return;
	}
	if (charLimit){
		obj('displaySelectedCat').innerHTML = '<b style="color: red">Please Reduce Your Text</b>';
		return;
	}
	var desc = tinyMCE.getContent('questionDescription');
	var title = obj('questionTitle').value;
	var safeTitle = stripPunctuation(title);

	var ajaxArgs = '';
	ajaxArgs += "action-||-addQuestion,";
	ajaxArgs += "target-||-showSubmitedQuestion,";
	ajaxArgs += "targetType-||-function,";
	ajaxArgs += "title-||-" + escape(title);
	ajaxArgs += ",safeTitle-||-" + safeTitle;
	ajaxArgs += ",desc-||-" + escape(desc);
	ajaxArgs += ",subCatID-||-" + selectedSubCategoryID;
	ajaxArgs += ",subCategory-||-" + selectedSubCategory;
	ajaxArgs += ",category-||-" + selectedCategory;
	ajaxArgs += ",selectedCapcha-||-" + selectedCapcha;
	ajaxArgs += ",shownFileName-||-" + obj('capcha').src;
	sndReqArg(ajaxArgs);
}

function showSubmitedQuestion($msg){
	switch ($msg){
		case 'dupQuestion':
			obj('status').innerHTML = '<b style="color: red"> Duplicate Question Found, Please change title </div>';
		break;
		case 'badCapcha':
			obj('status').innerHTML = "<b style='color: red'> Word doesn't match picture, please try again. </div>";
		break;
		default:
			window.open($msg,'_self');
	}
}

function stripPunctuation($str) {
	$str = $str.replace(/[\s]/gi, "_");
	$str = $str.replace("&","__");
	$str = $str.replace(/[^A-Z0-9 _]/gi, "");
	return $str;
}



function loginFirst($msg){
	window.returnURL = window.location;
	var ajaxArgs = '';
	ajaxArgs += "action-||-loginCheck,";
	ajaxArgs += "target-||-mainResults,";
	ajaxArgs += "targetType-||-innerHTML";
	sndReqArg(ajaxArgs);
}

var charLimit = false;


function updateCharCount(){
	var count = 255 - obj('questionTitle').value.length;
	if (count > 0){
		charLimit = false;
		obj('titleCharCount').innerHTML = ' Left ' + count;
	} else {
		charLimit = true;
		obj('titleCharCount').innerHTML = ' <b> Max Character Count Reached </b>'
	}

	var count2 = 1000 - obj('questionDescription').value.length;
	if (count2 > 0){
		charLimit = false;
		obj('descriptionCharCount').innerHTML = ' Left ' + count2;
	} else {
		charLimit = true;
		obj('descriptionCharCount').innerHTML = ' <b> Max Character Count Reached </b>'
	}
	setTimeout('updateCharCount()', 1000);
}

function characterCount($max,$countThis, $updateThat){
	if (tinyMCE.getContent($countThis)){
		var count = $max - tinyMCE.getContent($countThis).length;
	} else {
		var count = $max - obj($countThis).value.length;
	}

	if (count > 0){
		obj($updateThat).innerHTML = count + ' Characters Left';
	} else {
		obj($updateThat).innerHTML = ' <b> Max Character Count Reached </b>'
	}
	setTimeout('characterCount(' + $max + ',"' + $countThis + '","' + $updateThat + '")', 2000);
}

function updateCharCountNote(formFieldID,$updateDiv){
	var count = 1000 - tinyMCE.getContent(formFieldID).length;

	if (count > 0){
		charLimit = false;
		obj($updateDiv).innerHTML = ' Left ' + count;
	} else {
		charLimit = true;
		obj($updateDiv).innerHTML = ' <b> Max Character Count Reached </b>'
	}
	setTimeout('updateCharCountNote("' + formFieldID + '","' + $updateDiv + '")', 1000);
}

function showAddAnswer(){
	tinyMCE.execCommand("mceAddControl", false, 'answerDescription');
	obj('addAnswerBox').style.display = 'block';
}

function addAnswer($oid){
	$desc = tinyMCE.getContent('answerDescription');

	if (obj('answerTitle').value == '' || $desc == ''){
		obj('addAnswer_response').innerHTML = "<b style='color: red'> Please fill in all boxes </b>";
		return;
	}
	if (obj('answerTitle').value.length > 60 || obj('answerDescription').value.length > 2000){
		obj('addAnswer_response').innerHTML = "<b style='color: red'> Please shorten your answer. </b>";
		return;
	}

	var ajaxArgs = '';
	ajaxArgs += "action-||-addAnswer,";
	ajaxArgs += "target-||-addAnswer_response,";
	ajaxArgs += "targetType-||-function";
	ajaxArgs += ",answerTitle-||-" + escape(obj('answerTitle').value);
	ajaxArgs += ",answerDescription-||-" + escape($desc);
	ajaxArgs += ",questionID-||-" + $oid;
	ajaxArgs += ",selectedCapcha-||-" + selectedCapcha;
	ajaxArgs += ",shownFileName-||-" + obj('capcha').src;

	var userID = getCookie('userID');
	if (userID == 38){
		//alert ('answerTitle = ' + answerTitle);
		//alert ('answerDesc = ' + answerDesc);
		//alert ('ajaxArgs = ' + ajaxArgs);
	}

	sndReqArg(ajaxArgs);
}

function addAnswer_response($msg){
	switch ($msg){
		case 'dupAnswer':
			obj('addAnswer_response').innerHTML = "<b style='color: red'> Duplicate Answer Found Please Refine your anwer </b>";
		break;
		case 'badCapcha':
			obj('addAnswer_response').innerHTML = "<b style='color: red'> Word doesn't match picture, please try again. </div>";
		break;
		default:
			window.open(window.location,'_self')
	}

}

function showAddNote($answerID){
	obj('note' + $answerID).style.display = 'block';
	tinyMCE.execCommand("mceAddControl", false, 'noteBody' + $answerID);

	updateCharCountNote('noteBody' + $answerID,'noteCount' + $answerID);
}

function addNote($questionID, $answerID){
	$desc = tinyMCE.getContent('noteBody' + $answerID);

	if ($desc == ''){
		obj('noteResponse' + $answerID).innerHTML = "<b style='color: red'> Please fill in all boxes </b>";
		return;
	}
	if ($desc.length > 1000){
		obj('noteResponse' + $answerID).innerHTML = "<b style='color: red'> Your Note is too long please reduce it. </b>";
		return;
	}
	var ajaxArgs = '';
	ajaxArgs += "action-||-addNote,";
	ajaxArgs += "target-||-addNote_response,";
	ajaxArgs += "targetType-||-function";
	ajaxArgs += ",noteBody-||-" + escape($desc);
	ajaxArgs += ",questionID-||-" + $questionID;
	ajaxArgs += ",answerID-||-" + $answerID;
	sndReqArg(ajaxArgs);
}

function addNote_response(){
	//var ajaxArgs = '';
	//ajaxArgs += "action-showQuestion,";
	//ajaxArgs += "target-mainResults,";
	//ajaxArgs += "targetType-innerHTML";
	//ajaxArgs += ",currentQuestionName-" + currentQuestionName;
	//ajaxArgs += ",currentQuestionCategory-" + currentQuestionCategory;
	//sndReqArg(ajaxArgs);
	window.open(window.location,'_self')
}


	function changecss(theClass,element,value) {
	//documentation for this script at http://www.shawnolson.net/a/503/
	 var cssRules;
	 if (document.all) {
	  cssRules = 'rules';
	 }
	 else if (document.getElementById) {
	  cssRules = 'cssRules';
	 }
	 for (var S = 0; S < document.styleSheets.length; S++){
	  for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
	   if (document.styleSheets[S][cssRules][R].selectorText == theClass) {
	    document.styleSheets[S][cssRules][R].style[element] = value;
	   }
	  }
	 }
	}

function getElementsById(id) {
	if (this.getElementsByTagName) {
		all = this.getElementsByTagName("*")
		for (g=0; g<all.length; g++) {
			if (all[g].getAttribute && all[g].getAttribute("id") == id) {
				return all[g]
			}
		}
	}
}

var allNotesArray = new Array();
var visibleElements = new Array();

function showAll($noteObjArray){
	var allNotesArray = $noteObjArray.split('-');
	var doneArray = new Array();

	for (i=0; i<allNotesArray.length; i++){
		var obj =  typeof(doneArray[allNotesArray[i]]);
		if (typeof(doneArray[allNotesArray[i]]) == 'undefined'){
			doneArray[allNotesArray[i]] = true;
			//if (prop.length < 20 && prop.length > 5){
			//if (prop.length < 20 && prop.length > 5){
				var container = obj("allNotes");
				var elements = getElementsByClassName(container, "*", allNotesArray[i]);
				for (var i=0; i<elements.length; i++){
					elements[i].style.display  = 'block';
					visibleElements.push(elements[i]);
				}
			//}
		}
	}
}

function hideAll(){
	//for each(prop in allNotes){
	for (i=0; i<allNotesArray.length; i++){
		//if (prop.length < 20 && prop.length > 5){
			var elements = getElementsByClassName(obj("allNotes"), "*", prop);
			for (var i=0; i<elements.length; i++){
				elements[i].style.display  = 'none';
				visibleElements.push(elements[i]);
			}
		//}
	}
}

function bart($numberOfNotes, $noteObjArray){
	if ($oid){
		showAll($numberOfNotes);
	} else {
		hideAll()
		var elements = getElementsByClassName(obj("allNotes"), "*", $oid);
		for (var i=0; i<elements.length; i++){
			elements[i].style.display  = 'block';
		}
	}
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function rollOverButton(id){
	obj(id+'-Hover').style.display = 'block';
}

function rollOverButtonOut(id){
	obj(id).style.display = 'none';
}

function showFullDescr($oid){
	var t = obj($oid).fullDesc;
	if (obj($oid).fullDesc){
		obj($oid).fullDesc = false;
		obj($oid).style.height = obj($oid).oldHeight;
	} else {
		obj($oid).fullDesc = true;
		obj($oid).oldHeight = obj($oid).style.height;
		obj($oid).style.height = '';
	}
}

function search(){
	$needle = obj('searchString').value + '*';
	if (obj('searchString').value.length < 3){
		obj('searchbg').style.height = '65px';
		obj('searchStatus').innerHTML = '<br><br><b style="color: red;">Search be at least 3 characters long.</b>';
		return;
	}
	obj('searchStatus').innerHTML = '';
	obj('searchbg').style.height = '30px';
	$needle = $needle.replace(" ","*");
	var ajaxArgs = '';
	ajaxArgs += "action-||-searchQuestions,";
	ajaxArgs += "target-||-mainResults,";
	ajaxArgs += "targetType-||-innerHTML";
	ajaxArgs += ",needle-||-" + $needle;
	sndReqArg(ajaxArgs);
}

function submitAccountChanges(){
	if (obj('password').value != obj('passwordc').value){
		obj('accountChangeStatus').innerHTML = "<b style='color: red;'> Please make sure your passwords match. </b>";
		return;
	}

	var ajaxArgs = '';
	ajaxArgs += "action-||-updateAccount,";
	ajaxArgs += "target-||-submitAccountChanges_response,";
	ajaxArgs += "targetType-||-function";
	ajaxArgs += ",nickName-||-" + obj('nickName').value;
	ajaxArgs += ",email-||-" + obj('email').value;
	ajaxArgs += ",password-||-" + obj('password').value;
	sndReqArg(ajaxArgs);
}

function submitAccountChanges_response(){
	window.open('http://questionville.com','_self');
}

function showNotes($oid){
	if(obj($oid).style.display == 'block'){
		obj($oid).style.display = 'none';
	} else {
		obj($oid).style.display = 'block';
	}
}

function submitenter(myfield,e, event){
	var keycode;
	if (window.event){
		keycode = window.event.keyCode;
	} else if (e) {
		keycode = e.which;
	} else {
		return true;
	}

	if (keycode == 13){
		switch (event){
			case 'search':
				search();
			break;
			case 'login':
				login();
			break;
		}
		return false;
	} else {
		return true;
	}
}

function toggle($obj1, $obj2){
	obj($obj1).style.display = 'none';
	obj($obj2).style.display = 'block';
}


function showCategorySubmit($id,$oid,$subCategoryList,$className){
	if (selectedCategory){
		obj(selectedCategory).className = $className;
	}
	if (selectedSubCategoryegoryList){
		obj (selectedSubCategoryegoryList).style.display = 'none';
	}

	selectedSubCategoryegoryList = 'subCategoryList' + $id;
	obj (selectedSubCategoryegoryList).style.display = 'block';

	selectedCategory = $id;
	selectedCategoryID = $oid;
	obj($id).style.display = 'block';
	obj($id).className = $className + 'Hit';
}

function goBack(){
	if (!window.returnURL){
		window.returnURL = 'http://questionville.com';
	} else if (window.returnURL == window.location){
		window.returnURL = 'http://questionville.com';
	}
	window.open(window.returnURL,'_self');
}

function returnQuestions($level, $categoryName, $questionName, $needle, $startRange, $endRange, $type){
	var ajaxArgs = '';
	ajaxArgs += "action-||-showQuestions,";
	ajaxArgs += "target-||-questions,";
	ajaxArgs += "targetType-||-innerHTML";
	ajaxArgs += ",level-||-" + $level;
	ajaxArgs += ",categoryName-||-" + $categoryName;
	ajaxArgs += ",questionName-||-" + $questionName;
	ajaxArgs += ",needle-||-" + $needle;
	ajaxArgs += ",startRange-||-" + $startRange;
	ajaxArgs += ",endRange-||-" + $endRange;
	ajaxArgs += ",type-||-" + $type;
	sndReqArg(ajaxArgs);
}

function reportSpam($type, $targetID, $button){
	var ajaxArgs = '';
	ajaxArgs += "action-||-reportSpam,";
	ajaxArgs += ",type-||-" + $type;
	ajaxArgs += ",targetID-||-" + $targetID;
	sndReqArg(ajaxArgs);
	obj($button).innerHTML = "<b style='color: red;'>Reported</b>";
}

function filterQuestions($type){
	obj('tabHot').style.backgroundPosition  = "-331px -401px";
	obj('tabNew').style.backgroundPosition  = "-447px -401px";
	obj('tabNeed').style.backgroundPosition = "-565px -401px";
	obj('tabHot').style.cursor = 'pointer';
	obj('tabNew').style.cursor = 'pointer';
	obj('tabNeed').style.cursor = 'pointer';

	switch($type){
		case 'tabHot':
			var pos = '-331px -437px';
			returnQuestions(0, 0, 0, 0, 0,20,0);
		break;
		case 'tabNew':
			var pos = '-447px -437px';
			returnQuestions(0, 0, 0, 0, 0,20,1);
		break;
		case 'tabNeed':
			var pos = '-565px -437px';
			returnQuestions(0, 0, 0, 0, 0,20,2);
		break;
	}
	obj($type).style.backgroundPosition = pos;
	obj($type).style.cursor = 'default';
}