// 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 winClose () {
	window.close();
}

function showMenu () { if (!new Effect.Appear ('main-menu'))  document.getElementById('main-menu').style.display = 'block'; }
function showHideMenu () {
	var menu = menu || document.getElementById('second-menu');
	if (menu.className.indexOf('hidden') >= 0) menu.className = 'shown'; /*.replace(/hidden/g, "shown");*/
	else if (menu.className.indexOf('shown') >= 0) menu.className = 'hidden'; /*.replace(/shown/g, "hidden");*/
}

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) { // sostituito con la funzione di Prototype '$'
	if (typeof(what) == 'string')
		var elem = document.getElementById(what);
	else var elem = what;
	if (elem) return elem;
	else return false;
}
function elemValue (id) { // sostituito con la funzione di Prototype '$F'
	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 clearField () {
	Field.clear(this);
}
function highlightElement (what) {
	if (typeof(what) == 'string')
		var elem = document.getElementById(what);
	else var elem = what;
	elem.className = elem.className+((elem.className.indexOf("highlight")<0)?' highlight':'');
}
function lowspotElement (what) {
	if (typeof(what) == 'string')
		var elem = document.getElementById(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 = document.getElementById(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 checkEmail () {
	if (undefined === this) return false;
	var val = this.value;
	var classe = this.className;
	var pattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	if (val && !pattern.test(val)) {       
		fieldError (this,'il campo richiede un indirizzo email valido');
		return;
	}
	else lowspotElement(this);   
}

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 initEvents () {
	/*if (page == 'index') {
		Event.observe('link-photo','mouseover',showHideMenu);
		Event.observe('link-photo','activate',showHideMenu);
		Event.observe('link-photo','focus',showHideMenu);
		Event.observe('link-photo','mouseout',showHideMenu);
		Event.observe('link-photo','deactivate',showHideMenu);
		Event.observe('link-photo','blur',showHideMenu);
	}*/
	if (page == 'contatti') {
		Event.observe('field1-4','blur',checkEmail);
		Event.observe('field1-5','focus',selectFieldContent);
	}
}
Event.observe(window,'load',initEvents);

function initPage() {
//	$('#header .search-box input').one("focus", function() { $(this).val(""); });
//	$('#header .search-box .sendform').click(function(e) { e.preventDefault(); $(this).parents('form').trigger('submit'); });
//	$('#header .search-box .privacy').fancybox();	
	//$('#main-menu ul.menu-top').superfish({ delay: 400, autoArrows: false, dropShadows: false });
//	$('.goback').click(function(e){ e.preventDefault(); history.back(); });
}

function initComments() {
	// conteggio caratteri textarea commento
	$('.product-detail .comments .add textarea').textareaCount({
		'maxCharacterSize': 250,
		'originalStyle': 'originalDisplayInfo',
		'warningStyle': 'warningDisplayInfo',
		'warningNumber': 15,
		'displayFormat': '#input Caratteri | #left Caratteri rimanenti'
	});
	// nascondi form inserimento commento
	$('#commentsform').hide();
	// mostra lista commenti
	$('.product-detail .comments .list .readall a').click(function(e){ e.preventDefault(); $('.product-detail .comments .list').load('include/html/ajax_comment_list.php?id='+prodid); });
	// mostra form inserimento commento
	$('.product-detail .comments .add .addcomment a').click(function(e){ e.preventDefault(); $('#commentsform').toggle('slow'); });

//	$('.product-detail .comments .add a.send').click(function(e){ e.preventDefault();  });
	// aggiungi commento
	$(".product-detail .comments .add a.send").click(function(e) {
		e.preventDefault();
		$(".product-detail .comments .add .error").hide();
		var hasError = false;

		var nameVal = $("#commentsform-nome").val();
		if(nameVal == '') {
			$("#commentsform-nome").after('<span class="error">Prego specificare un nome/nickname</span>');
			hasError = true;
		}

		var messageVal = $("#commentsform-testo").val();
		if(messageVal == '') {
			$("#commentsform-testo").after('<span class="error">Prego inserire un commento</span>');
			hasError = true;
		}
		var id = $("#commentsform-id").val();
		var idcat = $("#commentsform-idcat").val();

		if(hasError == false) {
			$(".product-detail .comments .add .buttons"/* this */).hide();
			$(".product-detail .comments .add a.send").append('<img src="images/loading.gif" alt="Loading" id="loading" />');

			$.post("include/html/ajax_addcomment.php",
   				{ nameVal: nameVal, messageVal: messageVal, idcat: idcat, id: id, action: "addcomment" },
				function(data){
					// console.log('risultato: '+data.result);
					// console.log('messaggio: '+data.message);
					if (data.result == "SUCCESS") {
						$("#commentsform").slideUp("normal", function() {				   
							$("#commentsform").before('<div class="add success">Il tuo commento &egrave; stato inviato.</div>');
							$(".product-detail .comments .add .addcomment a").unbind('click');
						});
					}
					else
						alert ('errore in invio del messaggio. risposta del server: '+data.message);
				},
				"json"
			);
		}

		return false;
	});
}
