var previousAjaxRequest = null;
var savePreviousAjaxRequest = true;

function callPHP(array) {
	if (typeof(array[0][0]) == 'object') array = array[0];
	if (savePreviousAjaxRequest && array[0].url != '/admin/index/ping') {
		previousAjaxRequest = array;
		savePreviousAjaxRequest = false;
	}
	var options = array[0];
	
	options = jQuery.extend({
		before: function(){},
		confirm: false,
		data: false,
		form: false,
		target: false,
		loaderText: false,
		type: 'post',
		reEnableForm: false,
		success: function() {},
		insertionType: 'rewrite',
		error: function(d1,d2,d3) {
			//$.prettyLoader.hide();
			if (options.target) $(options.target).fadeTo(200, 1, function(){if ($.browser.msie)this.style.removeAttribute('filter');});
			alertBox({type: 'error', text: d1.responseText});
		}
	},options);
	
	options.before();
	if ((options.confirm && confirm(options.confirm)) || options.confirm == false) {
		var newArgs = Array();
		for (var i = 1; i < array.length; i++) {
			newArgs.push(array[i]);
		}
		var params = new Object;
		if (options.data) {
			var o = options.data;
			var p, v;
			var a = Array();
			for(p in o) {
				var b = Array();
			    v = o[p];
			    b.push(p);
			    b.push(o[p]);
			    params[p]=o[p];
			}
		}
		if (options.form){
			for (var i=0; i<options.form['0'].length; i++) {
				if (($(options.form['0'][i]).attr('type') == 'checkbox' && $(options.form['0'][i]).attr('checked') === false) || ($(options.form['0'][i]).attr('type') == 'radio' && $(options.form['0'][i]).attr('checked') === false)) {
					if ($(options.form['0'][i]).attr('ajaxMode') == 'true/false') {
						if ($(options.form['0'][i]).attr('checked') === false) {
							params[$(options.form['0'][i]).attr('name')] = 'false';
						} else {
							params[$(options.form['0'][i]).attr('name')] = 'true';
						}
					}
				} else {
					if ($(options.form['0'][i]).attr('ajaxMode') == 'true/false') {
						params[$(options.form['0'][i]).attr('name')] = 'true';
					} else {
						params[$(options.form['0'][i]).attr('name')] = $(options.form['0'][i]).val();
					}
				}
			}
			disableFormElements(options.form[0]);
		}
		if (options.target) $(options.target).fadeTo(200, 0.5);
		//$.prettyLoader.show(3000);
		params['PHPSESSID'] = getCookie('PHPSESSID');
		if (options.loaderText) {
			$(options.target).each(function(){$(this).html(options.loaderText);});
		}
		$.ajax({
			url: options.url+'?_time='+Number(new Date()),
			type: options.type,
			data: params,
			error: options.error,
			success: function(data) {
				//$.prettyLoader.hide();
				if (options.target) $(options.target).fadeTo(200, 1, function(){if ($.browser.msie)this.style.removeAttribute('filter');});
				try{
					var obj = Object;
					if (data == '') data = '{}';
					obj = $.evalJSON(data);
					var m = jQuery.extend({
						message: false,
						type: 'information'
					}, obj);
					if (m.message) {
						alertBox({text: m.message, type: m.type});
					}
				}catch(err){
					obj = data;
				}
				if (options.form && options.reEnableForm) enableFormElements(options.form[0]);
				if (typeof(obj) == 'xml') obj = obj.toString();
				options.success(obj);
				if (options.target) {
					if (options.insertionType == 'append') {
						$(options.target).each(function(){$(this).append(obj);});
					} else { 
						$(options.target).each(function(){$(this).html(obj);});
					}  					
//					createPicker();
//					createPaginationTable();
				}
				if (newArgs.length) {
					callPHP(newArgs);
				} else {
					savePreviousAjaxRequest = true;
				}
			}
		});
	}
	return false;
}

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}


function disableFormElements(form){
    if (form.elements) for(i=0; i<form.elements.length; i++)
      form.elements[i].disabled = true;
  }
function enableFormElements(form){
    if (form.elements) for(i=0; i<form.elements.length; i++)
        form.elements[i].disabled = false;
  }


