var loading_mask;
var current_tab = new Array();

var intervals = new Array();
function ajaxGetPage(url,elem_id,get_elem,custom_animation,no_reset) {
	if (!no_reset) {
		if (intervals) {
			for (i in intervals) {
				clearInterval(intervals[i]);	
			}
			intervals = new Array();
		}
		
		if (operations) {
			for (i in operations) {
				clearInterval(operations[i]);
			}
			operations = new Array();
		}
		
		if (grid_totals) {
			for (i in grid_totals) {
				clearInterval(grid_totals[i]);
			}
			grid_totals = new Array();
		}
		passive_values = new Array();
	}
	
	$.ajax({
  		url: url,
  		beforeSend: function(){
     		ajaxLoading(elem_id);
     		if (!no_reset) {
     			ajaxHistoryAdd(url,elem_id);
     		}
   		},
  		success: function(html){
  		
  			if (custom_animation)
  				ajaxAnimate(elem_id,html,custom_animation);
  			else
     			$("#"+elem_id).html(html);
     		
     		if ($("#"+elem_id).is(':hidden')) {
     			$("#"+elem_id).fadeIn('slow');
     			$("#"+elem_id+' form').submit(
     				function() {
     					$("#"+elem_id).fadeOut('slow');
     				}
     			);
     		}
   		},
   		data: ((get_elem) ? {bypass:1,field_name:$("#"+get_elem).attr('name'),field_value:$("#"+get_elem).attr('value')} : {bypass:1})
		
	});
	return false;
}

function ajaxLoading(elem_id) {
	var height = $('#'+elem_id).height();
	var width = $('#'+elem_id).width();
	
	if (!loading_mask) {
		var loading_animation = 'images/loading.gif';
	
		loading_mask = document.createElement("div");
		loading_mask.id = 'loading_mask';
		loading_mask.innerHTML = '<img src="' + loading_animation + '" />';
	}
	
	$('#'+elem_id).prepend(loading_mask);
	$(loading_mask).height(height);
	$(loading_mask).width(width);
	if ($('#pm_editor').is(':visible') && (elem_id == 'pm_editor' || elem_id == 'content')) {
		ajaxPmUpdate();
	}
}

function ajaxSave(query,url) {
	url = (url) ? url : 'ajax.save.php';
	
	$.ajax({
  		url: url + '?' + query,
  		success: function(html){
  			messagePop(html);
   		},
   		error: function(status,error) {
   			errorPop(false,'Save failed');
   		}
	});
}

function ajaxDeleteArray(items,delete_controls) {
	var query = 'action=delete';
	if (delete_controls) query += '&delete_controls=true';
	for (table in items) {
		for (id in items[table]) {
			query += '&rows['+table+']['+id+']='+id;
		}
	}
	ajaxSave(query);
}

function ajaxDelete(table,id,subtable,f_id_field,filename,dir) {
	subtable = (subtable == undefined) ? '' : subtable;
	f_id_field = (f_id_field == undefined) ? '' : f_id_field;
	filename = (filename == undefined) ? '' : filename;
	dir = (dir == undefined) ? '' : dir;
	
	ajaxSave('action=delete&table='+table+'&id='+id+'&subtable='+subtable+'&f_id_field='+f_id_field+'&filename='+filename+'&dir='+dir);
}

function ajaxDeleteFile(filename) {
	ajaxSave('action=delete_file&filename='+filename);
}

var in_grid = 0;
function ajaxPmUpdate() {
	var query = '';
	
	if ($('.pm_class_container #form_table').length > 0) {
		var table = $('.pm_class_container #form_table').attr('value');
		
		query += 'action=check_table&table='+table;
		$('.pm_class_container .form_db_field').each(function () {
			query += '&'+$(this).attr('name')+'='+$(this).attr('value');
		});
		$('.pm_class_container .form_radio_inputs').each(function () {
			query += '&'+$(this).attr('name')+'='+$(this).attr('value');
		});
	}
	$('.pm_class_container .method_id').each(function (i) {
		query += '&l_order[admin_controls_methods]['+i+']='+$(this).attr('value');
	});
	$('.pm_class_container').each(function (i) {
		query += '&l_order[admin_controls]['+i+']='+$(this).attr('id').replace('control_','');
	});
	
	if (query.length > 0) 
		ajaxSave(query);
}

function ajaxHistoryStart() {
	$('body').append('<div style="display:none;" id="ajax_history"><input type="hidden" id="ajax_current_url" value=""  /></div>');
}

function ajaxHistoryAdd(url,elem_id) {
	window.location.hash = url+'/aid='+elem_id;
	$('#ajax_current_url').attr('value','#'+url+'/aid='+elem_id);
}

function ajaxHashChange() {
	alert('habob');
	ajaxGetPage(url,'main');
}

function ajaxUpdateHash(url) {
	window.location.hash = url;
}

function urlencode (str) {
    str = (str+'').toString();
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+').replace(/~/g, '%7E');
}

$(document).ready(function() {
	ajaxHistoryStart();
	var ajax_int = setInterval(function() {
		if (window.location.hash != $('#ajax_current_url').attr('value')) {
			if (window.location.hash.length > 0) {
				var parts = window.location.hash.split('/aid=');
				if (parts[1]) {
					ajaxGetPage(parts[0].replace('#',''),parts[1]);
					$('#ajax_current_url').attr('value',window.location.hash);
				}
			}
			else {
				var parts = window.location.href.split('/');
				var c = parts.length - 1;
				var parts1 = $('#ajax_current_url').attr('value').split('/aid=');
				
				if (parts[c]) {
					ajaxGetPage(parts[c],parts1[1]);
					$('#ajax_current_url').attr('value',parts[c]);
				}
				else {
					ajaxGetPage('index.php',parts1[1]);
					$('#ajax_current_url').attr('value','index.php');
				}
			}
		}
	},200);
});