// .-==================================================================
// .	FusionBB Version 2.2
// .
// .	Created August 20, 2003 by InteractivePHP
// .
// .	All scripts and files used by this program
// .	are copyright InteractivePHP, Inc
// .	For discussion, bug reports and updates
// .	visit http://www.FusionBB.com
// .
// .	You may not redistribute this program in any form, without
// .	express written permisson from InteractivePHP.
// .
// .	WARNING: If you modify any scripts within FusionBB
// .	you will be unable to obtain official support.
// .	Modify at your own risk!
// .
// .	FusionBB Copyright 2003-2010, InteractivePHP, Inc
// .-==================================================================
// .	$Date: 2009/12/30 16:00:19 $	$Author: couch $
// .	$RCSfile: fusionbb_main.js,v $	$Revision: 1.27 $
// .-==================================================================
// .	File Description:
// .		Main Javascript used by FusionBB
// .-==================================================================

function breakFrame(){
	if (top.location != location) {
		top.location.href = document.location.href ;
	}
}

function loadShoutBox(url) {
	if (document.getElementById('shoutbox')) {
		document.getElementById('shoutbox').src=url;
	}
}

function setCookie(name, value) {
	var date = new Date();
	var expire = date.getTime();
	expire += 1000 * cookieexpire;
	date.setTime(expire);
	document.cookie = cookieprefix + name + "=" + escape(value) + "; expires=" + date.toGMTString() + "; path=" + cookiepath + "; domain=" + cookiedomain;
}

function toggleDisplay(id) {
	var cat = document.getElementById("cat-" + id);
	cname = 'cat-'+id;
	var name = 'img-' + id;
	if (cat.style.display != "") {
		cat.style.display="";
		document.images[name].src = collapse.src;
		setCookie(cname, 1);
	}
	else {
		cat.style.display = "none";
		document.images[name].src = expand.src;
		setCookie(cname, 0);
	}
}

function toggleSection(id) {
	var cat = document.getElementById("section-" + id);
	cname = 'section-'+id;
	var name = 'img-' + id;
	if (cat.style.display != "") {
		cat.style.display="";
		document.images[name].src = collapse.src;
	}
	else {
		cat.style.display = "none";
		document.images[name].src = expand.src;
	}
}

function toggleDiv(id,flagit) {
	if (flagit=="1"){
		if (document.layers){
			document.layers[''+id+''].visibility = "show";
		}
		else if (document.all){
			document.all[''+id+''].style.visibility = "visible";
		}
		else{
			if (document.getElementById){
				document.getElementById(''+id+'').style.visibility = "visible";
			}
		}
	}
	else{
		if (flagit=="0"){
			if (document.layers){
				document.layers[''+id+''].visibility = "hide";
			}
			else if (document.all){
				document.all[''+id+''].style.visibility = "hidden";
			}
			else{
				if (document.getElementById){
					document.getElementById(''+id+'').style.visibility = "hidden";
				}
			}
		}
	}
}

function doToggle(action,id,total) {
	if ((document.getElementById && !document.all) || (document.all) || (document.all && window.opera)) {
		if (action == 'all') {
			for (var i = 0; i <= total; i++) {
				var pid = document.getElementById('pid'+i);
				if (pid) {
					pid.checked = pid.checked ? false : true;
				}
			}
		} else if (action == 'check' || action == 'click') {
			var pid = document.getElementById('pid'+id);
			if (pid) {
				if (action == 'click') {
					pid.checked = pid.checked ? false : true;
				}
			}
		}
	}
}

var ie = document.all;
var op = document.all && window.opera;
var moz = document.getElementById && !document.all;
function doToggle2(cnam,id,action,totalboxes) {
	if (moz || ie || op) {
		var cnam = document.getElementsByTagName('input');
		if(cnam.length > 0){
			var box = [];
			 var j = 0;
			for (var i = 0; i < cnam.length; i++) {
				if(cnam[i].type == "checkbox"){
					box[j] = cnam[i];
					j++;
				}
			}
			if(box.length > 0){
				var cnam = box;
				for (var i = 0; i < cnam.length; i++) {
					if(cnam[i].checked == true){
						if(action == 'all'){
							cnam[i].checked = cnam[i].checked ? false : true;
						}
						else{
							cnam[i].checked = true;
						}
					}
					else{
						if(action == 'all'){
							cnam[i].checked = cnam[i].checked ? false : true;
						}
						else{
							cnam[i].checked = false;
						}
					}
				}
			}
		}
	}
}

function QuickReply(id) {
	var cat = document.getElementById("section-1");
	var name = 'img-1';
	obj = document.post;
	obj.pid.value = document.getElementById('pid-' + id).innerHTML;

	if (cat.style.display != "") {
		cat.style.display="";
		document.images[name].src = collapse.src;
	}
}

function unread_pt(text,sess,fullurl) {
	if (confirm(text)) { // Take them to the Private Topic Page
		window.location=""+fullurl+"/listpt.php?"+sess;
	}
}


var lastid = '';
var gotclick = 0;
function toggleClick() {
	if (gotclick == 1) {
		gotclick = 0;
	}
	else {
		gotclick = 1;
	}
}

function hideCheck() {
	if (lastid != '' && lastid != null && gotclick == 1) {
		document.getElementById(lastid).style.visibility = "hidden";
		lastid = '';
		gotclick = 0;
	}
}

function showCheck(id) {
	if (lastid != id && gotclick == 1) {
		document.getElementById(lastid).style.visibility = "hidden";
		lastid = id;
		document.getElementById(id).style.visibility = "visible";
	}
}
function showMenu(id) {
	if (lastid != id) {
		if (lastid != '' && lastid != null) {
			document.getElementById(lastid).style.visibility = "hidden";
		}
		lastid = id;
		gotclick = 1;
		document.getElementById(id).style.visibility = "visible";
	}
	else {
		lastid = '';
		gotclick = 0;
		document.getElementById(id).style.visibility = "hidden";
	}
}

function showHide(id,sbar) {
	var obj = document.getElementById(id);
	if (obj) {
		if (obj.style.display == "") {
			obj.style.display = "none";
			if(sbar == 1){
				setCookie('sbar', 'none');
			}
		}
		else {
			obj.style.display = "";
			if(sbar == 1){
				setCookie('sbar', ';');
			}
		}
	}
}
document.onmousedown = hideCheck;

var timeout         = 500;
var closetimer		= 0;
var ddmenuitem      = 0;

// open hidden layer
function mopen(id){	
	// cancel close timer
	mcancelclosetime();

	// close old layer
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';

	// get new layer and show it
	ddmenuitem = document.getElementById(id);
	ddmenuitem.style.visibility = 'visible';

}
// close showed layer
function mclose(){
	if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
}

// go close timer
function mclosetime(){
	closetimer = window.setTimeout(mclose, timeout);
}

// cancel close timer
function mcancelclosetime(){
	if(closetimer)	{
		window.clearTimeout(closetimer);
		closetimer = null;
	}
}

// close layer when click-out
document.onclick = mclose; 

function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) {
		field.value = field.value.substring(0, maxlimit);
	} else {
		countfield.value = maxlimit - field.value.length;
	}
}

function changeFlag(id,img,flagurl) {
   imageURL = flagurl + img;
   document.getElementById(id).style.backgroundImage = imageURL == 'none' ? 'none' : 'url(' + imageURL + ')';
}   


function do_confirm(text,f) {
	var answer = 0;
	for (var i=0;i<f.confirm.length;i++) {
		if(f.confirm[i].checked == true) {
			answer = f.confirm[i].value;
		}
	}
	if (answer==1) {
		input_box=confirm(text);
		if (input_box==true) {
			f.submit();
		}
	}

}


var xmlHttp

function sendForm(action,url) {
    if (action == 1) {
		document.form.action = url;
	}
}

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

function GetXmlHttpObject(){
	var xmlHttp=null;
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e){
		// Internet Explorer
		try{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
			try{
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){
				xmlHttp = false;
			}
		}
	}
	return xmlHttp;
}

function sndReq(url,divtag,cal_str,disable,lbx) {
	var req = GetXmlHttpObject();
	req.open('GET', url+'?cal_str/'+cal_str, true);
	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			// only if "OK"
			if (req.status == 200) {
				// Text returned FROM the PHP script
				var response = req.responseText;
				if(response) {
					if(response.indexOf('%7C' != -1)) {
						var new_response = '';
						update = response.split('%7C');
						for (var i=0; i < update.length; i++){
							if ( i > 0 ){
								new_response =  new_response + "<br />";
							}
							new_response =  new_response + update[i];
						}
						response =  new_response;
					}
					// UPDATE ajaxTest content
					var ajaxTest_d = document.getElementById(divhandler.divtag)
					if(ajaxTest_d != null){
						ajaxTest_d.innerHTML = response;
					}
					if(lbx == 1){
						initLightbox();
					}
				}
			} else {
				alert("There was a problem while using XMLHTTP:\n" + req.statusText);
			}
		}
	}
	var divhandler = new handleDivTag(null);
	divhandler.divtag = divtag;
	req.send(null);
	if(url != '' && divtag != '' && disable == ''){
		setTimeout('sndReq(\''+url+'\',\''+divtag+'\',\''+cal_str+'\')', 10000);
	}
}

function handleDivTag(divtag){
	var divtag;
	return divtag;
}

function insert_panel(url,str,div,myFormName,id_name){ 
	xmlHttp=GetXmlHttpObject();
	var url=url;
	var div=div;
	var id_name=id_name;
	var panel_args = new Object();
	if (xmlHttp==null){
		alert ("Your browser does not support AJAX!");
		return;
	} 
	if(id_name == '' || id_name == null){
		id_name = 'ranked_post_id';
	}
	if(str != null && str != '' && typeof(str)!="undefined"){
		var str = str;
		if(str.indexOf('%7C' != -1) || str.indexOf('/' != -1)) {
			update = str.split('%7C');
			for (var i=0; i < update.length; i++){
				if(update[i].indexOf('/' != -1)) {
					update2 = update[i].split('/');
					update_key = update2[0];
					update_value = update2[1];
					panel_args[update_key] = update_value;
				}
			}
		}
		else{
			panel_args.str =  str;
		}
	}
	var myFormName = myFormName;
	if(myFormName == '' || myFormName == null){
		myFormName = 'fbbform';
	}
	if(panel_args[id_name] != null && panel_args[id_name] != ''){
		var formname = myFormName+panel_args[id_name];
		var forms = document.getElementsByTagName("form");
		var myForm = null;
		for (var i = 0; i < forms.length; i++) {
			if (forms[i].name == formname) {
				myForm = forms[i];
				break;
			}
		}
		if (myForm != null) {
			var whole_form_fields = document.forms[myForm.name];
		}
	}
	else{
		var whole_form_fields = document.forms[myFormName];
	}
	if(whole_form_fields != null && whole_form_fields != '' && typeof(whole_form_fields) != "undefined"){
		for(var i=0; i < whole_form_fields.elements.length; i++){
			whole_form_name = whole_form_fields.elements[i].name;
			if(whole_form_fields.elements[i].type == 'radio'){
				var types = document.getElementsByName(whole_form_name);
				for(var j=0; j < types.length; j++){
					if(types[j].checked){
						var whole_form_value = types[j].value;
					}
				}
			}
			else if(whole_form_fields.elements[i].type == 'checkbox'){
				var check = document.getElementById(whole_form_name);
				var whole_form_value = 0;
				if(check.checked){
					var whole_form_value = 1;
				}
			}
			else{
				var whole_form_value = '';
				if(document.getElementById(whole_form_name)){
					var whole_form_value_d = document.getElementById(whole_form_name);
					var whole_form_value = whole_form_value_d.value;
				}
			}
			panel_args[whole_form_name] = whole_form_value;
		}
	}
	xmlHttp.onreadystatechange=function() {
		if (xmlHttp.readyState==4) {
			if(document.getElementById(div)){
				document.getElementById(div).innerHTML=xmlHttp.responseText;
			}
		}
	}
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	xmlHttp.send("args=" + escape(JSON.stringify(panel_args)));
	if(panel_args[id_name] != null && panel_args[id_name] != ''){
		if(panel_args['process'+panel_args[id_name]] == 'approve' || panel_args['process'+panel_args[id_name]] == 'reject'){
		     window.setTimeout('window.location="listpt.php"; ',10000);
		}
	}
	else{
		if(panel_args['process'+panel_args[id_name]] == 'approve' || panel_args['process'+panel_args[id_name]] == 'reject'){
		     window.setTimeout('window.location="listpt.php"; ',10000);
		}
	}
}

function checkExpire (check_type) {
	var gotChecks = false;
	var expire = document.getElementById('expire');
	var inputs = expire.getElementsByTagName('input');
	for (var x = 0; x < inputs.length; x++) {
		var inputnode = inputs[x];
		if (inputnode.type == 'checkbox' && inputnode.checked) {
			gotChecks = true;
		}
	}
	if (gotChecks) {
		if(check_type == 1){
			if (confirm('Are you sure you want to expire the selected topics?')) {
				document.expire.action="expiretopics.php";
				document.expire.submit();
			}
		}
		else{
			if(check_type == 2){
				if (confirm('Are you sure you want to move the selected topics?')) {
					document.expire.action="multimovetopics.php";
					document.expire.submit();
				}
			}
		}
	} else {
		alert('You need to select some topics first!');
	}
}

//Tabby the Tabs in Textarea Plugin for Javascript jQuery by Ted Devito
function tabHandleKeyDown(evt) { 
	var tab = String.fromCharCode(9); 
	var e = window.event || evt; 
	var t = e.target ? e.target : e.srcElement ? e.srcElement : e.which; 
	var scrollTop = t.scrollTop; 
	var k = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which; 
	if (k == 9 && !e.ctrlKey && !e.altKey) { 
		if(t.setSelectionRange){ 
			e.preventDefault(); 
			var ss = t.selectionStart; 
			var se = t.selectionEnd; 
			// Multi line selection 
			if (ss != se && t.value.slice(ss,se).indexOf("\n") != -1) { 
				if(ss>0){ 
					ss = t.value.slice(0,ss).lastIndexOf("\n")+1; 
				} 
				var pre = t.value.slice(0,ss); 
				var sel = t.value.slice(ss,se); 
				var post = t.value.slice(se,t.value.length); 
				if(e.shiftKey){ 
					var a = sel.split("\n") 
					for (i=0;i<a.length;i++){ 
						if(a[i].slice(0,1)==tab||a[i].slice(0,1)==' ' ){ 
							a[i]=a[i].slice(1,a[i].length) 
						} 
					} 
					sel = a.join("\n"); 
					t.value = pre.concat(sel,post); 
					t.selectionStart = ss; 
					t.selectionEnd = pre.length + sel.length; 
				} 
				else{ 
					sel = sel.replace(/\n/g,"\n"+tab); 
					pre = pre.concat(tab); 
					t.value = pre.concat(sel,post); 
					t.selectionStart = ss; 
					t.selectionEnd = se + (tab.length * sel.split("\n").length); 
				} 
			} 
			// Single line selection 
			else { 
				if(e.shiftKey){  
					var brt = t.value.slice(0,ss); 
					var ch = brt.slice(brt.length-1,brt.length); 
					if(ch == tab||ch== ' '){ 
						t.value = brt.slice(0,brt.length-1).concat(t.value.slice(ss,t.value.length)); 
						t.selectionStart = ss-1; 
						t.selectionEnd = se-1; 
					} 
				} 
				else{ 
					t.value = t.value.slice(0,ss).concat(tab).concat(t.value.slice(ss,t.value.length)); 
					if (ss == se) { 
						t.selectionStart = t.selectionEnd = ss + tab.length; 
					} 
					else { 
						t.selectionStart = ss + tab.length; 
						t.selectionEnd = se + tab.length; 
					} 
				} 
			} 
		} 
		else{ 
			e.returnValue=false; 
			var r = document.selection.createRange(); 
			var br = document.body.createTextRange(); 
			br.moveToElementText(t); 
			br.setEndPoint("EndToStart", r); 
			//Single line selection 
			if (r.text.length==0||r.text.indexOf("\n") == -1) { 
				if(e.shiftKey){      
					var ch = br.text.slice(br.text.length-1,br.text.length); 
					if(ch==tab||ch==' '){ 
						br.text = br.text.slice(0,br.text.length-1) 
						r.setEndPoint("StartToEnd", br); 
					} 
				} 
				else{ 
					var rtn = t.value.slice(br.text.length,br.text.length+1); 
					if(rtn!=r.text.slice(0,1)){ 
						br.text = br.text.concat(rtn);  
					} 
					br.text = br.text.concat(tab);  
				} 
				var nr = document.body.createTextRange(); 
				nr.setEndPoint("StartToEnd", br); 
				nr.setEndPoint("EndToEnd", r); 
				nr.select(); 
			} 
			//Multi line selection 
			else{ 
				if(e.shiftKey){      
					var a = r.text.split("\r\n") 
					var rt = t.value.slice(br.text.length,br.text.length+2); 
					if(rt==r.text.slice(0,2)){ 
						var p = br.text.lastIndexOf("\r\n".concat(tab)); 
						if(p!=-1){ 
							br.text = br.text.slice(0,p+2).concat(br.text.slice(p+3,br.text.length)); 
						} 
					} 
					for (i=0;i<a.length;i++){ 
						var ch = a[i].length>0&&a[i].slice(0,1); 
						if(ch==tab||ch==' '){ 
							a[i]=a[i].slice(1,a[i].length) 
						} 
					} 
					r.text = a.join("\r\n"); 
				} 
				else{ 
					if(br.text.length>0){ 
						var rt = t.value.slice(br.text.length,br.text.length+2); 
						if(rt!=r.text.slice(0,2)){ 
							r.text = tab.concat(r.text.split("\r\n").join("\r\n".concat(tab))); 
						} 
						else{ 
							var p = br.text.slice(0,ss).lastIndexOf("\r\n")+2;   
							br.text = br.text.slice(0,p).concat(tab,br.text.slice(p,br.text.length)); 
							r.text = r.text.split("\r\n").join("\r\n".concat(tab)); 
						} 
					} 
					else{ 
						r.text = tab.concat(r.text).split("\r\n").join("\r\n".concat(tab)); 
					} 
				}  
				var nr = document.body.createTextRange(); 
				nr.setEndPoint("StartToEnd", br); 
				nr.setEndPoint("EndToEnd", r); 
				nr.select(); 
			} 
		} 
	} 
	t.scrollTop = scrollTop; 
} 

function toggleDisplay3(id) {
	var cell = document.getElementById("cell-" + id);
	var name = 'img-' + id;
	if (cell.style.display != "") {
		cell.style.display="";
		document.images[name].src = collapse.src;
	}
	else {
		cell.style.display = "none";
		document.images[name].src = expand.src;
	}
}

function autoIframe(frameId){
	try{
		frame = document.getElementById(frameId);
		innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
		objToResize = (frame.style) ? frame.style : frame;
		objToResize.height = innerDoc.body.scrollHeight + 10;
	}
	catch(err){
		window.status = err.message;
	}
}

function insertTag(TextPosition, text) {
	if (TextPosition.createTextRange && TextPosition.caretPos) {
	//M$ IE browsers
		var caretPos = TextPosition.caretPos;
		caretPos.text =
			caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
			text + ' ' : text;
			document.dotagging.body.focus();
			return;
	}
	//Mozilla browsers
	else if (typeof(TextPosition.selectionStart) != "undefined")
	{
		var begin = TextPosition.value.substr(0, TextPosition.selectionStart);
		var end = TextPosition.value.substr(TextPosition.selectionEnd);
		var scrollPos = TextPosition.scrollTop;

		TextPosition.value = begin + text + end;

		if (TextPosition.setSelectionRange)
		{
			TextPosition.focus();
			TextPosition.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		TextPosition.scrollTop = scrollPos;
	}

	// other browsers
	else{
			TextPosition.value += text;
			TextPosition.focus(TextPosition.value.length - 1);
	}
	return true;
}


