var obj = null;
var stopPropagation = 'no';
var ajax_preLoader = new Object();

function preLoad(d,a,q) {
	ajax_preLoader[d] = new Ajax.Updater(d, 'data.php?a='+a+'&q='+q,
							{
								onException:function(request, exception){ alert("Exception occured in preLoad("+d+")\n\n"+request.responseText+"\n"+exception); },
								asynchronous:true
							}
						  );
	return false;
}

function switchTo(s,a,q) {
	cancelPreLoader();
	if ($(s).innerHTML=="") {
		main_loader(a,q);
	} else {
		$('ajax_container').innerHTML = $(s).innerHTML;
		$('ajax_container_prev').innerHTML = "";
		$('ajax_container_next').innerHTML = "";
		initScrollBars();
	}
	$('ajax_container_prev').innerHTML = "";
	$('ajax_container_next').innerHTML = "";
	preLoad('ajax_container_prev',a,q-1);
	preLoad('ajax_container_next',a,q+1);
	
	return false;
}

function cancelPreLoader() {
	if (ajax_preLoader) {
		req = ajax_preLoader['ajax_container_prev'];
		if (req && isActiveRequest(req)) {
			req.transport.onreadystatechange = function () {};
			req.transport.abort();
		}
		req = ajax_preLoader['ajax_container_next'];
		if (req && isActiveRequest(req)) {
			req.transport.onreadystatechange = function () {};
			req.transport.abort();
		}
	}
}


function main_loader(a,q) {
	$('pop_loading').style.display='block';
	obj = new Ajax.Request('data.php?a='+a+'&q='+q,
							{
								method:'get',
								onSuccess:function(res){ $('ajax_container').innerHTML=res.responseText; },
								onComplete:function(res){ onComplete_loader(); },
								onException:function(request, exception){ alert("Exception occured in main_loader("+a+","+q+")\n\n"+request.responseText+"\n"+exception); },
								asynchronous:true
							}
						  );
	return false;
}

function cancel_loader() {
	if (obj && isActiveRequest(obj)) {
		obj.transport.onreadystatechange = function () {};
		obj.transport.abort();
	}
	$('pop_loading').style.display='none';
	cancelPreLoader();
	return false;
}

function onComplete_loader() {
	if (isDebug()) {
		$('pop_loading').style.display='none';
	} else {
		$('pop_loading').style.display='none';
	}
	initScrollBars();
}

function isDebug() {
	if (window && window.location && window.location.search) {
		var str = window.location.search;
		if (str.indexOf('debug')>=0) {
			return true;
		}
	}
	return false;
}

function getQueryParams() {
	if (window && window.location && window.location.search) {
		var url = window.location.toString();
		url.match(/\?(.+)$/);
		var str = RegExp.$1;
		var str = str.split("&");
		var args = {};
 		for(var i=0;i<args.length;i++) {
			var temp = args[i].split("=");
			args[tmp[0]] = unescape(temp[1]);
		}
		return args;
	} else {
		return null;
	}
}

function getDebug() {
	var args = getQueryParams();
	if (args != null && args['debug']) {
		return args['debug'];
	} else {
		return null;
	}
}

function isActiveRequest(object) {
	switch (object.transport.readyState) {
	case 1: case 2: case 3:
		return true;
		break;
	default:
		return false;
		break;
	}
}

function setCookie(name, value, seconds, path, domain, secure) {
	var cookie = name + "=" + escape(value);
	if (seconds) {
		var expires = new Date();
		expires.setTime(expires.getTime() + (seconds)*1000);
		cookie += "; expires=" + expires.toGMTString();
	}
	if (path) { cookie += "; path=" + escape(path) };
	if (domain) { cookie += "; domain=" + escape(domain) };
	if (secure) { cookie += "; secure" };
	document.cookie = cookie;
}

function getCookie(name) {
	var result = document.cookie.match (name + '=(.*?)(;|$)');
	if (result && result[1]) {
		return unescape(result[1]);
	} else {
		return null;
	}
}

function addOnLoadListener(func) {
	Event.observe(window, 'load', func);
}
