// JavaScript Document

//Switcher hidden/visible elements
var SwitcherLink =
{
	//attiva la funzionalitą di rendere visibile/nascosto il DIV di riferimento 
	//il DIV deve avere come id lo stesso valore del campo "name" decurtato dei caratteri "p-"
	//ES: 	<a class="makeSwitcher" name="p-box1" href="link.html">XXX</a>	--->	<div id="box1">CONTENT</div>
	//(campi individuati tramite la classe "makeSwitcher" e riempiti con i valori dei rispettivi p-"name")
	//NB: č necessario che siano presenti le 2 classi "hide_element" e "show_element" nel foglio di stile
	init: function() {
		var matchedArray = [];
		matchedArray = Core.getElementsByClass('makeSwitcher');
		for (var i=0; i<matchedArray.length; i++) {
			Core.addEventListener(matchedArray[i], 'click', SwitcherLink.show_or_hide_div);
			matchedArray[i].setAttribute('href', '#');
		}
		var matchedArray = [];
		matchedArray = Core.getElementsByClass('show_element');
		for (var i=0; i<matchedArray.length; i++) {
			Core.removeClass(matchedArray[i], 'show_element');
			Core.addClass(matchedArray[i], 'hide_element');
		}
	},
	show_or_hide_div: function(event) {
		var boxID =  this.name.substr(2);
		var target = document.getElementById(boxID);
		if (Core.hasClass(target,'hide_element')) {
			Core.removeClass(target,'hide_element');
			Core.addClass(target,'show_element');
		} else if (Core.hasClass(target,'show_element')) {
			Core.removeClass(target,'show_element');
			Core.addClass(target,'hide_element');
		}
		Core.preventDefault(event);
	}
	
};

//OBJECT automatic deletion
var AutomaticDel =
{
	//inserisce i valori di default nei form, ovvero le "etichette"
	//(campi individuati tramite la classe "fillAutomaticField" e riempiti con i valori dei rispettivi ID)
	init: function() {
		var matchedArray = [];
		matchedArray = Core.getElementsByClass('fillAutomaticField');
		var fieldValue = '';
		for (var i=0; i<matchedArray.length; i++) {
			fieldValue = matchedArray[i].id;
			if (!matchedArray[i].value) {
				matchedArray[i].setAttribute('value', fieldValue);
			}
			Core.addEventListener(matchedArray[i], 'focus', AutomaticDel.clearField);
			Core.addEventListener(matchedArray[i], 'blur', AutomaticDel.resetField);
		}
	},
	//pulizia campo
	clearField: function(event) {
		if (this.value == this.id) { 
			this.value='';
		}
	},
	//reset campo
	resetField: function(event) {
		if (this.value == '') { 
			this.value=this.id;
		}
	}
	
};

//Javascript equivalent for PHP's in_array
function in_array(needle, haystack, argStrict) {
    // http://kevin.vanzonneveld.net
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    var found = false, key, strict = !!argStrict;
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
    return found;
}

//Esegue un controllo sui browsers istruendo l'XHR in maniera corretta
//http://www.webmasterpoint.org/ajax/12-connessione-database-mysql-php-mysql.asp
function createXMLHttpRequest() {
var ua;
if(window.XMLHttpRequest) {
    try {
      ua = new XMLHttpRequest();
    } catch(e) {
      ua = false;
    }
  } else if(window.ActiveXObject) {
    try {
      ua = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
      ua = false;
    }
  }
  return ua;
}

