//***************** begin of AJAX ****************
function Ajax(actionURL, elementIDsArray, messageAreaId, idleMessage, methodType, forceScriptReexecution, resultAreaId) {
	this.State = 'send';
	this.dumbRPC = false;
	this.actionURL = actionURL;
	this.elementIDsArray = elementIDsArray;
	this.messageAreaId = messageAreaId;
	this.idleMessage = idleMessage;
	this.methodType = methodType;
	this.forceScriptReexecution = forceScriptReexecution;
	this.resultAreaId = resultAreaId;
}

ajax = Ajax.prototype;
ajax.makeRequest = function(messageAreaId, resultAreaId, helper) {
	this.State = 'send';
	dumbRPC = 'undefined' == typeof(messageAreaId) || !messageAreaId;
	if('undefined' == typeof(this.idleMessage)) {
		this.idleMessage = '';
	}
	if('undefined' == typeof(this.forceScriptReexecution)) {
		this.forceScriptReexecution = false;
	}
	if(false === this.forceScriptReexecution && document.getElementById(messageAreaId) && '' != document.getElementById(messageAreaId).innerHTML.replace(/(\s+$)|(^\s+)/g, '')) {
		return -1; // Already done
	}
	this.methodType = 'undefined' == typeof(this.methodType) ? 'GET' : this.methodType.toUpperCase();
	if('GET' != this.methodType && 'POST' != this.methodType) {
		return -2; // Method not supported
	}
	for(var queryParamasArray = new Array('randomId=' + Math.random()), i = 0, j = queryParamasArray.length; i < this.elementIDsArray.length; ++i, ++j) {
		if(elementReference = document.getElementById(this.elementIDsArray[i])) {
			queryParamasArray[j] = elementReference.name + '=' + elementReference.value;
		}
	}
	if(false === dumbRPC && document.getElementById(messageAreaId)) {
		document.getElementById(messageAreaId).innerHTML = this.idleMessage;
	}
	var http = this.getHTTPObject();
	if('GET' == this.methodType) {
		http.open('GET', this.actionURL + '?' + queryParamasArray.join('&'), true);
		http.onreadystatechange = function getBackResponse() { 
				if(4 == http.readyState) { 
					if(false === dumbRPC && document.getElementById(resultAreaId)) {
						document.getElementById(resultAreaId).innerHTML = http.responseText;
						//document.getElementById(resultAreaId).scrollIntoView();
					}
					if(false === dumbRPC && document.getElementById(messageAreaId)) {
						document.getElementById(messageAreaId).innerHTML = '';
					}
					this.State = 'ready';
				} 
			};
		http.send(null); 
	} else {
		http.open('POST', this.actionURL, true);
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		http.onreadystatechange = function getBackResponse() { 
				if(4 == http.readyState) {
					if(helper) helper;
					if(false === dumbRPC && window.document.getElementById(resultAreaId)) {
						window.document.getElementById(resultAreaId).innerHTML = http.responseText; 
					}
					if(false === dumbRPC && window.document.getElementById(messageAreaId)) {
						window.document.getElementById(messageAreaId).innerHTML = '';
					}
					this.State = 'ready';
					split_data(http.responseText, resultAreaId);
				} 
			};
		http.send(queryParamasArray.join('&')); 
	}
}

ajax.getHTTPObject = function () { 
var xmlhttp; 

/*@cc_on 
	@if(@_jscript_version >= 5) 
		try { 
			xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); 
		} catch(e) { 
			try { 
				xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
			} catch(E) { 
				xmlhttp = false; 
			} 
		} 
	@else 
		xmlhttp = false; 
	@end @*/

	if(!xmlhttp && 'undefined' != typeof(XMLHttpRequest)) {
		try { 
			xmlhttp = new XMLHttpRequest(); 
		} catch (e) { 
			xmlhttp = false; 
		} 
	} 
	return xmlhttp; 
} 

//var http = getHTTPObject(); //We create the HTTP Object 
// ***************** end of AJAX ****************

function majaxSyncRequest(actionURL, elementIDsArray, messageAreaId, idleMessage, methodType, forceScriptReexecution, resultAreaId, helper) {
	new Ajax(actionURL, elementIDsArray, messageAreaId, idleMessage, methodType, forceScriptReexecution, resultAreaId).makeRequest(messageAreaId, resultAreaId, helper);
}

function openComment( pageId, cid, pid ){
	document.getElementById('pageId').value = pageId; 
	document.getElementById('cid').value = cid; 
	document.getElementById('pid').value = pid; 
	document.getElementById('view').value = 'view_reply'; 
	syncRequest('mavara-page_comments.php', new Array('pageId', 'cid', 'pid', 'view'), 'cm'+cid, '<p align=center><font color=red size=3 align=center ><b>لطفا چند لحظه صبر کنید ...</b></font></p>');
}
function show_new_post( pageId, cid, pid, oper, resArea, msgArea){
	var src = document.getElementById('mini_editor').innerHTML;
	src = src.replace(/___id___/g, cid);
	src = src.replace(/__comments_parentId__/g, 'cpid' + pid);
	src = src.replace(/__comments_threadId__/g, 'ctid' + cid);

	src = src.replace(/__comments_title__/g, 'ct' + cid);
	src = src.replace(/__editpost__/g, 'ep' + cid);

	src = src.replace(/__ParentId__/g, pid);
	src = src.replace(/__ThreadId__/g, cid);
	src = src.replace(/__Data__/g, '');


var rep = '';
var op = 'new_post';
var rps = 'rps'+pid;
	if( 0 == pid){//new post
		src = src.replace(/__Title__/g, '""');
		rep = 'rep' + ((cid==0)?'_new':cid);
		rps = 'com_listing';
	}else{//reply to existing post
		var title = document.getElementById('com'+pid).innerText;
		src = src.replace(/__Title__/g, '">' + title + '"');
		rep = 'rep' + pid;
		op = 'new_reply';
	}
	
if(oper)
	op = oper;

	src = src.replace(/__OP__/g, op );
if(msgArea)
	rep = msgArea;
	src = src.replace(/___area___/g, rep);
	src = src.replace(/__operation__/g, 'operation');
if(resArea)
	rps = resArea;

	src = src.replace(/__resArea__/g, rps);
	src = src.replace(/__FOO__/g, rep);
	
	document.getElementById('pageId').value = pageId; 
	document.getElementById('cid').value = cid; 

	document.getElementById(rep).style.display = 'block';
	document.getElementById(rep).innerHTML = src; 

}
function hideFoo( foo){
	try{
		foo.style.display = 'none';
	}catch(e){}
}
function get_comments(pageId){
	var cls = document.getElementById('comments_listing');
	if(1 == cls.getAttribute('loaded')){
		if( 'block' == cls.style.display)
			cls.style.display = 'none';
		else
			cls.style.display = 'block';
		return;
	}
	document.getElementById('com_view').value = 'view_comment';
	document.getElementById('pg_id').value = pageId;
	cls.style.display = 'block';
	cls.setAttribute('loaded', 1);
	syncRequest('mavara-page_comments.php', new Array('com_view', 'pg_id'), 'comments_listing', '<p align=center><font color=red size=3 align=center ><b>لطفا چند لحظه صبر کنید ...</b></font></p>', 'POST', true);
}

function post_comment( form, msgArea, resArea ){
	try{
		var ids = new Array();
		var j = 0;
		var t = '';
		var title, data;
		for(i=0;i<form.length;i++){
			if(form.elements[i].id != ''){
				ids[j++] = form.elements[i].id;
				if( 'comments_title' == form.elements[i].name)
					title = form.elements[i].value;
				if( 'comments_data' == form.elements[i].name)
					data = form.elements[i].value;
				t+=form.elements[i].name + '>' +form.elements[i].id + '>' +form.elements[i].value + "\n";
			}
		}
		if('' == data.replace(/(\s+$)|(^\s+)/g, '') || '' == title.replace(/(\s+$)|(^\s+)/g, '')){
			alert('وارد کردن عنوان یا متن الزامی است');
			return false;
		}
		majaxSyncRequest(form.action, ids, msgArea.id, '<p align=center><font color=red size=3 align=center ><b>لطفا چند لحظه صبر کنید ...</b></font></p>', 'POST', true,'com_listing')
	}catch(e){alert(e.description);}	
	return false;
}

function edit_comment( pageId, cid, pid){
	try{
		show_new_post( pageId, cid, pid, 'save_comment', 'com_listing', 'msge'+cid);
		document.getElementById('comment_action').value = 'edit_comment';
		document.getElementById('comment_id').value = cid;
		majaxSyncRequest('mavara-page_comments.php', new Array('comment_action', 'comment_id' ), 'pd' + cid, '<p align=center><font color=red size=3 align=center ><b>لطفا چند لحظه صبر کنید ...</b></font></p>', 'POST', true, 'ep' + cid)
	}catch(e){alert(e.description);}	
	return false;
}

function remove_page_comment( cid ){
	try{
		if(confirm('آیا از حذف توضیح مطمئن هستید؟')){
			document.getElementById('comment_action').value = 'remove_comment';
			document.getElementById('comment_id').value = cid;
			syncRequest('mavara-page_comments.php', new Array('comment_action', 'comment_id', 'pageId' ), 'msge' + cid, '<p align=center><font color=red size=3 align=center ><b>لطفا چند لحظه صبر کنید ...</b></font></p>', 'POST', true);
		}
	}catch(e){alert(e.description);}	
	return false;
}
function remove_ui(cid){
	try{
		var trh = document.getElementById('trh' + cid);
		if(trh.getAttribute('num_child')==0){
			document.getElementById('trh' + cid).removeNode(true);
			document.getElementById('tr' + cid).removeNode(true);
		}
		document.getElementById('lnk' + cid).removeNode(true);
	}catch(e){}
	try{
		document.getElementById('li' + cid).removeNode(true);
	}catch(e){}
}
function split_data( data, area ){
	try{
		d_index = data.indexOf('____DATA____',0);
		t_index = data.indexOf('____TITLE____',0);
		if(d_index<0 && t_index<0 )
			return;
		d_data = data.substring(d_index+12, t_index);
		t_title = data.substr(t_index+13);
		a_area = area.substr(2);
		document.getElementById(area).innerHTML = d_data;
		document.getElementById('ct' + a_area).value = t_title;
	}catch(e){}
}