// Remaining variables from the former system - More revisions to come, don't get comfortable!
var change = true;
var xmlhttp;
var xmlhttprequest;

function newstabs(number){
	if (change) {
		ajaxxmlhttp('/ajax/news.php?type='+number,document.getElementById('news'),'');
	}
}

/* Ajax Functions used to reload the news page */
function ajaxxmlhttp(url,div,data){
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}  catch (failed) {
			xmlhttp = null;
		}
	}
	if (xmlhttp != null) {
		xmlhttp.onreadystatechange = function state_change() {
												if (xmlhttp.readyState == 4) {
													if (xmlhttp.status== 200) {
														div.innerHTML = xmlhttp.responseText;
													}
												}
											};
		xmlhttp.open("POST" , url, true);
		div.innerHTML = '<center><img style="vertical-align:middle;" src="/images/loading/ajax-loader.gif" alt=""></center>';
		jsonstring = JSON.stringify(data);
		param = "jstring="+escape(jsonstring);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", param.length);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(param);
	}
}
function ajaxxmlhttprequest(url,f,div,additional,data) {
	try {
		xmlhttprequest = new XMLHttpRequest();
	} catch (e) {
		try {
			xmlhttprequest = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) {
			xmlhttprequest = null;
		}
	}
	if (xmlhttprequest != null) {
		xmlhttprequest.onreadystatechange = function state_change_request() {
												if (xmlhttprequest.readyState == 4) {
													if (xmlhttprequest.status== 200) {
														f(JSON.parse(xmlhttprequest.responseText),div,additional);
													}
												}
											};
		xmlhttprequest.open("POST" , url,true);
		div.innerHTML = '<center><img style="vertical-align:middle;" src="/images/loading/ajax-loader.gif" alt=""></center>';
		jsonstring = JSON.stringify(data);
		param = "jstring="+escape(jsonstring);
		xmlhttprequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttprequest.setRequestHeader("Content-length", param.length);
		xmlhttprequest.setRequestHeader("Connection", "close");
		xmlhttprequest.send(param);
	}
}

// Additional news functions, in dire need of updating in the future
	function newstoogle(id) {
		var x = document.getElementById('editlist'+id);
		if (x.style.display == 'none') {
			x.style.display = 'block';
			document.getElementById('imageedit'+id).src = '/images/content/arrow-up.jpg';
		} else {
			x.style.display = 'none';
			document.getElementById('imageedit'+id).src = '/images/content/arrow-down.jpg';
		}
	}
	function toogle(id) {
		var x = document.getElementById(id);
		if (x.style.display == 'none') {
			if (id == 'submitnews') {
			if (CKEDITOR.instances.newsmessage) CKEDITOR.instances.newsmessage.destroy();// Destroy before recreating
				CKEDITOR.replace('newsmessage');// Load CKEditor Instance on first view
			}
			x.style.display = 'block';
		} else {
			x.style.display = 'none';
		}
	}
	function submitnews() {
	var data = new Object;
		data.title = document.getElementById('newstitle').value;
		data.type = document.getElementById('newstype').value;
		data.message = CKEDITOR.instances.newsmessage.getData();
		if (data.title != '') {
			if (data.message != '') {
				if (data.type > 0 && data.type < 5) {
					ajaxxmlhttp('/ajax/news.php?do=submitnews',document.getElementById('news'),data);
					change = false;
					changetabs(parseInt(data.type)+1);
					change = true;
					if (window.location.pathname != "/") window.location = "/";
				}
			}
		}
	}
	function editnews(num) {
		var data = new Object;
		data.id = num;
		data.title = document.getElementById('edittitle'+num).value;
		data.message = CKEDITOR.instances['editmessage'+num].getData();//data.message = document.getElementById('editmessage'+num).value;
		if (data.title != '') {
			if (data.message != '') {
				if (document.getElementById('diveditlist'+num)) {
					ajaxxmlhttprequest('/ajax/news.php?do=submitedit',editnews2,document.getElementById('news'+num),num,data);
				} else {
					ajaxxmlhttp('/ajax/news.php?do=submitedit',document.getElementById('news'+num),data);
				}
				toogleedit(document.getElementById('editnews'+num).nextSibling.nextSibling,num);
			}
		}
	}
	function editnews2(obj,div,div2) {
		div.innerHTML = obj.message;
		document.getElementById('diveditlist' + div2).innerHTML = obj.divedit;
	}
	function toogleedit(obj,num) {
		if (document.getElementById('news'+num).style.display == 'none') {
			document.getElementById('news'+num).style.display = 'block';
			document.getElementById('editnews'+num).style.display = 'none';
			obj.src = '/images/content/submitchange.png';
		} else {
			if (!CKEDITOR.instances['editmessage'+num]) CKEDITOR.replace('editmessage'+num);// Creates CKEditor if it does not already exist
			document.getElementById('news'+num).style.display = 'none';
			document.getElementById('editnews'+num).style.display = 'block';
			obj.src = '/images/content/shownews.png';
		}
	}
	function showcomment(id) {
		if (document.getElementById('comments'+id).style.display == 'none') {
			document.getElementById('comments'+id).style.display = 'block';
			if (document.getElementById('comments'+id).innerHTML == '') {
				ajaxxmlhttprequest('/ajax/news.php?do=getcomments&id='+id,displaycomment,document.getElementById('comments'+id),id,'');
			}
		} else {
			document.getElementById('comments'+id).style.display = 'none';
		}
	}
	function comment(id,included) {
	var data = new Object;
		data.id = id;
		data.message = document.getElementById('commentmessage'+id).value;
		ajaxxmlhttprequest('/ajax/news.php?do=submitcomment&included='+included,displaycomment,document.getElementById('comments'+id+included),id,data);
	}
	function displaycomment(obj,div,div2) {
		div.innerHTML = obj.message;
		document.getElementById('commentnumber' + div2).innerHTML = obj.number;
	}
	function changetype(url,div,type) {
		ajaxxmlhttp(url,div,'');
		change = false;
		changetabs(parseInt(type)+1);
		change = true;
	}



/*  bbedit functions to be replaced by tinymce: */
function imgBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[img]insert your images link here[/img]";
   return true;
}
function boldBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[b]bold[/b]";
   return true;
}
function italicBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[i]italic[/i]";
   return true;
}
function underlineBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[u]underline[/u]";
   return true;
}
function colorBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[color=red]red for example[/color]";
   return true;
}
function textlinkBB()
{
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[url=http://www.instantz.net]Url with text[/url]";
   return true;
}
function linkBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[url]http://www.instantz.net[/url]";
   return true;
}
function sizeBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[size=20]Font Size[/size]";
   return true;
}
function centerBB() {
   var MyElement = document.getElementById("newsmessage");
   MyElement.value += "[center]Centered[/center]";
   return true;
}
function jsbbc2html(aMsg) {// Convert bbcode to html
	//aMsg.replace('#\[b\](.*)\[/b\]#Us', '<b>\1</b>');
	//$text = preg_replace('#\[b\](.*)\[/b\]#Us','<b>\1</b>',$text);
	return aMsg;
}
/* End BBEdit Set */



/* Post Preview Testing */

	function previewNews() {

		var thePost = document.getElementById('submitnews');// Identify where the preview will follow
		var aPreview = document.createElement('div');
		aPreview.id = 'newpreview';
		aPreview.innerHTML = "<div class='news-header'><div class='title'><span class='heading'><h2>" + document.getElementById('newstitle').value + "</h2></span></div></div><br style='clear:both;' /><div class='news-content'><div class='news-text'>" + modBB2HTML(CKEDITOR.instances.newsmessage.getData()) + "</div></div><center><img src='/images/content/news-line.jpg' /></center>";
		thePost.parentNode.insertBefore(aPreview, thePost.nextSibling);

	}

	function modBB2HTML(bb) {
		if (bb.indexOf('[') < 0) return bb;// No bbcode tags

		function X(p, f) { return new RegExp(p, f); };
		function D(s) { return rD.exec(s); };
		function R(s) { return s.replace(rB, P); };
		function A(s, p) { for (var i in p) s = s.replace(X(i, 'g'), p[i]); return s; };

		function P($0, $1, $2, $3) {
			if ($3 && $3.indexOf('[') > -1) $3 = R($3);
			switch ($1) {
    			case 'url':case 'anchor':case 'email': return '<a '+ L[$1] + ($2||$3) +'">'+ $3 +'</a>';
    			case 'img': var d = D($2); return '<img src="'+ $3 +'"'+ (d ? ' width="'+ d[1] +'" height="'+ d[2] +'"' : '') +' alt="'+ (d ? '' : $2) +'" />';
    			case 'left':case 'right':case 'center':case 'justify': return '<div style="text-align: '+ $1 +'">'+ $3 +'</div>';
    			case 'b':case 'i':case 'u':case 's':case 'sup':case 'sub':case 'h1':case 'h2':case 'h3':case 'h4':case 'h5':case 'h6':case 'table':case 'tr':case 'th':case 'td': return '<'+ $1 +'>'+ $3 +'</'+ $1 +'>';
			}
			return '['+ $1 + ($2 ? '='+ $2 : '') +']'+ $3 +'[/'+ $1 +']';
		}

		var rB = X('\\[([a-z][a-z0-9]*)(?:=([^\\]]+))?]((?:.|[\r\n])*?)\\[/\\1]', 'g'), rD = X('^(\\d+)x(\\d+)$');
		var L = {url: 'href="', 'anchor': 'name="', email: 'href="mailto: '};
		var T = {row: 'tr', r: 'tr', header: 'th', head: 'th', h: 'th', col: 'td', c: 'td'};
//		C.php = [C.code[0], C.code[1]+ '&lt;?php ', '?>'+ C.code[2]];
		var F = {font: 'font-family:$1', size: 'font-size:$1px', color: 'color:$1'};
		var U = {c: 'circle', d: 'disc', s: 'square', '1': 'decimal', a: 'lower-alpha', A: 'upper-alpha', i: 'lower-roman', I: 'upper-roman'};
		var I = {}, B = {};


//		for (var i in C) I['\\[('+ i +')]((?:.|[\r\n])*?)\\[/\\1]'] = function($0, $1, $2) {return C[$1][1] + A($2, C[$1][0]) + C[$1][2]};

		for (var i in F) {B['\\['+ i +'=([^\\]]+)]'] = '<span style="'+ F[i] +'">'; B['\\[/'+ i +']'] = '</span>';}

		B['\\[list]'] = '<ul>'; B['\\[list=(\\w)]'] = function($0, $1) {return '<ul style="list-style-type: '+ (U[$1]||'disc') +'">'}; B['\\[/list]'] = '</ul>'; B['\\[\\*]'] = '<li>';
		B['\\[quote(?:=([^\\]]+))?]'] = function($0, $1) {return '<div class="bb-quote">'+ ($1 ? $1 +' wrote' : 'Quote') +':<blockquote>'}; B['\\[/quote]'] = '</blockquote></div>';
		B['\\[(hr|br)]'] = '<$1 />'; B['\\[sp]'] = '&nbsp;';

		return R(A(A(bb, I), B));
	}

