lastRes = null;
reqArr = new Array();
isIE = (navigator.userAgent.indexOf("MSIE")!=-1);
isOpera = (navigator.userAgent.indexOf("Opera")!=-1);
isFF = (navigator.userAgent.indexOf("Firefox")!=-1);

photo_counter = 1;

function confirmDel(url, id, callback) {
	if (window.confirm('Are u really want to delete a record?')) {
		removeRec(url, id, callback);
	}
}

Function.prototype.bindCtx = function(object) {
  var __method = this;
  return function() {
    return __method.apply(object, arguments);
  }
};

function getRealPos(elem) {
	var T = 0, L = 0, res = {top: 0, left: 0};  
  var obj = (elem.tagName)? elem: document.getElementById(elem);  
  while(obj) {
    L+= obj.offsetLeft;
    T+= obj.offsetTop;
    obj = obj.offsetParent;
  }
  
  res = {top: T, left: L};
  
  return res;
}

Function.prototype.bindCtx = function(object) {
  var __method = this;
  return function() {
    return __method.apply(object, arguments);
  }
};

function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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 eraseCookie(name) {
	createCookie(name,"",-1);
}


function modalShow(url) {
	Modalbox.show(url, {title: '', morph2center: true, transitions: false, afterLoad: function() {
		maskInputs();
		setSelectValues();
		setCheckboxValues();
		textarea_resizer();
	}});
}

function modalClose() {
	Modalbox.hide();
}

function Obj(id) {
	return document.getElementById(id);
}

function check_form(frm) {
	var form = frm.tagName ? frm : Obj(frm);
	for (var i=0; i<form.elements.length; i++) {
		var item = form.elements[i];
		if (item.getAttribute('required') == 'true') {
			if (item.value == '') {
				alert('Fill required field "'+item.getAttribute('desc')+'", pls.');
				item.focus();
				return false;
			}
		}
	}
	return true;
}

function addPhotoInput() {
	if (!$('phoho_upload')) return;
	if (!$('photo_'+photo_counter).value) return;
					
	photo_counter += 1;
	var code = '<tr id="tr_'+photo_counter+'"><td><input type="file" name="Photo['+photo_counter+']" id="photo_'+photo_counter+'"></td>'
		+ '<td style="padding-left: 10px"><input type="button" value="Add" onclick="addPhotoInput()"></td></tr>';
		

	new Insertion.Bottom($('phoho_upload'), code);
	Modalbox.resizeToInclude($('tr_'+photo_counter));
}

function deletePhoto(photo, el, id) {
	//
	var url = 'http://' + location.hostname + '/admin/modules/bitches.php?action=photo_delete&id=' + id + '&photo=' + photo;
	doUrl(url);
	el.parentNode.remove();
}

function setCover(photo, el, id) {
	//
	var url = 'http://' + location.hostname + '/admin/modules/bitches.php?action=set_cover&id=' + id + '&photo=' + photo;
	doUrl(url);
	alert('New Cover defined');
}

function bind_event(element, name, observer, capture) {
	if (typeof element == 'string') {
    element = document.getElementById(element);
  }
  if (element.addEventListener) {
    element.addEventListener(name, observer, capture);
  } else if (element.attachEvent) {
    element.attachEvent('on' + name, observer);
  }
}

function stop_bind(element, name, observer, capture) {
	if (typeof element == 'string') {
    element = document.getElementById(element);
  }
  if (element.removeEventListener) {
  	element.removeEventListener(name, observer, capture);
  }
  else if (element.detachEvent) {
  	element.detachEvent('on' + name, observer);
  }
}

function getParams(objName) {
	var params = '';
	for (var i=0; i<objName.childNodes.length; i++) {
		params += getParams(objName.childNodes[i]);
	}
	
	if (objName.name && (objName.tagName == 'INPUT' && objName.type != 'checkbox' || objName.tagName == 'TEXTAREA' 
		|| objName.tagName == 'SELECT')) params += '&' + objName.name + '=' + objName.value;	
	
	if (objName.name && (objName.tagName == 'INPUT' && objName.type == 'checkbox')) {
		params += '&' + objName.name + '=';	
		params += objName.checked ? objName.value : 0;
	}
	
	return params;
}

function parseBody(response) {
	var tmp = response.split('[##]');	
	
	return ({retCode: tmp[0], body: tmp[1]});
}

function makePostRequest(frm_name, callback, withoutJSON) {
	if (!$(frm_name)) return false;
	
	var params = getParams($(frm_name));
	var url = $(frm_name).getAttribute('action');
	
	new Ajax.Request(url, {
		method: 'post',
		postBody: params,
		onSuccess: function (transport) { 
			var ret = transport.responseText;
			if (withoutJSON) {
				if (callback) callback(ret);
				return;
			}
			ret = ret.evalJSON();
			if (ret.statusCode == 'OK') {
				if (callback) callback(ret);
			}
			else {
				// Alert Error
				alert(ret.message);
			}
		}
	});
}


function showStatus(data) {
	$('modal_status').innerHTML = data.message;
	
	Modalbox.resizeToInclude($('status_wrap'));
	new Effect.Appear($('status_wrap'), {
		speed: 20,
		afterFinish: function() {
			if (data.reloadUrl) {
				new Ajax.Request(data.reloadUrl, {
					method: 'get',
					onSuccess: function (transport) { 
						$('modContent').innerHTML = transport.responseText;
						modalClose();
					}
				});
			}
			else if (data.callback) {
				eval(data.callback);
				modalClose();
			}
			else {
				// Tree
				Modalbox.hide({afterHide: Tree.updateBranch.bind(Tree, data.id, data.postData)});
			}
		}
	});
	
}

function clearFilter(obj) {
	for (var i=0; i<obj.childNodes.length; i++) {
		clearFilter(obj.childNodes[i]);
	}
	
	if (obj.name && (obj.tagName == 'INPUT' && obj.type != 'checkbox' || obj.tagName == 'TEXTAREA' 
		|| obj.tagName == 'SELECT')) obj.value = '';	
	
	if (obj.name && (obj.tagName == 'INPUT' && obj.type == 'checkbox')) {
		obj.checked = false;
	}
	
	return;
}

function applyFilter(frm, reload_area, data) {
	if (data) {
		$(reload_area).innerHTML = data;
		
		var pBar = new PageBar();
		pBar.init({
			width: 400,
			container: 'pagebar'	
		});
		
		return;
	}
	
	var ajax = $('ajaxUse') && $('ajaxUse').checked ? true : false;
	if (!ajax&&false) {
		$(frm).submit();
	}
	else {
		$(frm).action = $(frm).getAttribute('ajax_url') + '&reload';
		makePostRequest(frm, applyFilter.bind(this, null, reload_area), true);
	}
}

function doUrl(url, callback) {
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function (transport) { 
			if (callback) callback();
		}
	});
}

function go2page(page, frm) {
	frm = !frm ? 'frmFilter' : frm;
	$('page').value = page;
	
	applyFilter(frm, 'reload-area');
}

function removeRec(url, recRow, callback) {
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function (transport) { 
			if (!callback) $(recRow).remove();
			else callback();
		}
	});
}

function maskInputs() {
	for (var i=0; i<document.getElementsByTagName('input').length; i++) {
		var elem = document.getElementsByTagName('input')[i];
		
		var mask = elem.getAttribute('mask')
		if (mask) {
			//bind_event(elem, 'keypress', onMaskPress.bind(elem), false);
			elem.onkeypress = onMaskPress.bind(elem);
		}
		
	}
}

function onMaskPress(evt) {
	var mask = this.getAttribute('mask');
	mask = mask.split('-');
	
	var keyNum, charNum;
	if (window.event) { // IE
	  keyNum = evt.keyCode;
	  charNum = evt.keyCode;
	}
	else { // Netscape/Firefox/Opera
	  charNum = evt.which;
	  keyNum = evt.keyCode;
	}	
	key = keyNum ? keyNum : charNum;
	var flag = false;
	for (var i=0; i<mask.length; i++) {
		if (mask[i] == 'num') {
			flag = flag || (key == 8 || key >= 48&&key<=57);
		}
		if (mask[i] == 'dot') {
			flag = flag || (key == 44 || key == 46);
		}
		if (mask[i] == 'seg') {
			flag = flag || (key == 60 || key == 61 || key == 62);
		}
		if (mask[i] == 'seg_first') {
			var innerFlag = (key == 60 || key == 61 || key == 62);
			innerFlag	= innerFlag && (this.value == ''); 
		
			flag = flag || innerFlag;
		}
	}
	//alert(key);
	return flag;
}

function setSelectValues() {
	$A(document.getElementsByTagName('select')).each(function(elem) {
		var selValue = elem.getAttribute('value');
		if (selValue) {
			for (var i=0; i<elem.options.length;i++) {
				var option = elem.options[i];
				if (option.value == selValue) {
					option.selected = true;
					break;
				}
			}
		}
	});
	
}

function setCheckboxValues() {
	$A(document.getElementsByTagName('input')).each(function(elem) {
		var metaValue = elem.getAttribute('metavalue');
		if (metaValue == 1 && elem.type == 'checkbox') {
			elem.checked = true;
		}
	});
}

document.observe('dom:loaded', function() {
	maskInputs();
	setSelectValues();
	setCheckboxValues();
});
