// JavaScript Document

Array.prototype.sum = function(){
	for(var i=0,sum=0;i<this.length;sum+=this[i++]);
	return sum;
}
Array.prototype.max = function(){
	return Math.max.apply({},this)
}
Array.prototype.min = function(){
	return Math.min.apply({},this)
}
Function.prototype.bind = function (obj) {
	var fx = this;
	var args = [];
	for (var n=1;n<arguments.length;n++)
    args.push(arguments[n]);
	return function() {
		return fx.apply(obj,args);
	}
}

function popUp(url, w, h, option) {
	w = (w=='')?600:w;
	h = (h=='')?500:h;
	var wl = Math.round((screen.width-w)/2);
	var wt = Math.round((screen.height-h)/2);
	// toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes
	if (!option) option = 'status=no,scrollbars=yes,resizable=yes';
	option += ',width='+w+',height='+h+',top='+wt+',left='+wl+'';
	var windowName = '';
	window.open(url, windowName, option);
}

function addListener(element, baseName, handler) {
	if (element.addEventListener)
		element.addEventListener(baseName, handler, false);
	else if (element.attachEvent)
		element.attachEvent('on' + baseName, handler);
}
function bindMethod(method, scope){
    return function() {
        method.apply(scope,arguments);
    }
}

function Elem (what) {
	if (typeof(what) == 'string')
		var elem = document.getElementById(what);
	else var elem = what;
	if (elem) return elem;
	else return false;
}
function elemValue (id) {
	var elem = Elem(id);
	if (elem) return elem.value;
	else return false;
}

function elemClass (id) {
	var elem = Elem(id);
	if (elem) return elem.className;
	else return false;
}

function hideElement (what) {
	var elem = Elem(what);
	if (elem) {
		elem.className = elem.className.replace(/\s?shown/g,"")+((elem.className.indexOf("hidden")<0)?' hidden':'');
	}
}
function showElement (what) {
	var elem = Elem(what);
	if (elem) {
		elem.className = elem.className.replace(/\s?hidden/g,"")+((elem.className.indexOf("shown")<0)?' shown':'');
	}
}
function elemAddClass (what,newClass) {
	var elem = Elem(what);
	if ( elem && ( 'string' == typeof(newClass) ) ) {
		elem.className = elem.className + (elem.className.indexOf(newClass)<0) ? ((elem.className.length > 0) ? ' ' : '') + newClass : '';
	}
}
function elemClassReplace (what,oldClass,newClass,addAnyway) {
	var elem = Elem(what);
	addAnyway = (addAnyway) ? addAnyway : false;
	if ( elem && ( 'string' == typeof(oldClass) == typeof(newClass) ) ) {
		var isItThere = elem.className.indexOf(oldClass)>=0;
		if (isItThere || addAnyway)
			elem.className = ( (oldClass == '*') ? '' : elem.className.replace(new RegExp( oldClass, "g" ),"") ) + ((elem.className.indexOf(newClass)<0)?' '+newClass:'');
	}
}

function winClose () {
	window.close();
}

function clearField () {
	Field.clear(this);
}
function highlightElement (what) {
	if (typeof(what) == 'string')
		var elem = Elem(what);
	else var elem = what;
	elem.className = elem.className+((elem.className.indexOf("highlight")<0)?' highlight':'');
}
function lowspotElement (what) {
	if (typeof(what) == 'string')
		var elem = Elem(what);
	else var elem = what;
	elem.className = elem.className.replace(/\s?highlight/g,"");
}
function selectFieldContent () {
	//var elem = document.getElementById(id);
	if (undefined === this) return false;
	this.select();
}

function fieldError(what,text) {
	if (typeof(what) == 'string')
		var elem = Elem(what);
	else var elem = what;
	if (elem[0]) {
		for (var i=0;i<elem.length;i++) {
			highlightElement(elem[i]);
			Elem(elem[i]).select();
		}
	}
	else {
		highlightElement(elem);
		elem.select();
	}
	alert (text || 'errore nella compilazione del campo');	
}

function getPage(page) {
	if (isNaN(page)) return;
	Elem('formSearch-page').value = parseInt(page,10);
	Elem('form-search').submit();
}

function doLogin() {
	var frm;
	if (frm = $('loginForm'))
		frm.submit();
}

function toggleSignIn() {
	var sel = Elem('form-reg-reg1').checked;
	if (sel) {
		hideElement('form-register-reg');
		showElement('form-register-log');
	}
	else {
		hideElement('form-register-log');
		showElement('form-register-reg');
	}
}
function showLogin() {
	hideElement('form-register-reg');
	showElement('form-register-log');
}
function showReg() {
	hideElement('form-register-log');
	showElement('form-register-reg');
}

function clickMenuInit1 () {
	clickMenu1 = new ClickShowHideMenu('click-menu1');
	clickMenu1.init();
}
function feesDetails() {
	$('#info-spese').click(function(event){
		event.preventDefault();
		popUp('pop_spese.php','400','450');
	});
}
