/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}

function isDate(dateStr) {
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?

	if (matchArray == null) {
	//alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
	return false;
	}

	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];

	if (month < 1 || month > 12) { // check month range
	//alert("Month must be between 1 and 12.");
	return false;
	}

	if (day < 1 || day > 31) {
	//alert("Day must be between 1 and 31.");
	return false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
	//alert("Month "+month+" doesn`t have 31 days!")
	return false;
	}

	if (month == 2) { // check for february 29th
	var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	if (day > 29 || (day==29 && !isleap)) {
	//alert("February " + year + " doesn`t have " + day + " days!");
	return false;
	}
	}
	return true; // date is valid
}
function VisualizzaDataOggi(modulo)
{
	var data = new Date();
	if((modulo.value=="d") || (modulo.value=="D"))
	{
		modulo.value= data.getDate() + "/" + (data.getMonth()+1) + "/" + data.getFullYear() 
	}
	if(isDate(modulo.value + "/" + (data.getMonth()+1) + "/" + data.getFullYear()))
	{
		modulo.value= modulo.value + "/" + (data.getMonth()+1) + "/" + data.getFullYear()
	}
	if(isDate(modulo.value + "/" + data.getFullYear()))
	{
		modulo.value= modulo.value + "/" + data.getFullYear()
	}
	if(!isDate(modulo.value))
	{
		modulo.value=""
	}
}

function CambiaOrdinamento(field, sorting, formid) {

	var strORD = '';
			
	if (document.forms[formid].ordinamenti) {
		var arrORD = String(document.forms[formid].ordinamenti.value).split(',')
		strORD = field + ' ' + sorting;
		for (var i = 0; i <= arrORD.lenght; i++) {
			if (LEFT(Trim(arrORD[i]), LEN(field)) != field) {
				strORD = strORD + ',' + arrORD[i]; 
			}
		}
		document.forms[formid].ordinamenti.value = strORD;
		ChengeSearchPage('1', formid);
	}
				
}
	
function coloreriga_over(id, numcolonne, color)
{
	for(i=1; i<=numcolonne; i++)
	{
		var dd = GetLayerByNameGeneric('r'+i+id);
		dd.style.backgroundColor=color;
	}
}
	
function coloreriga_out(id, numcolonne, color)
{
	for(i=1; i<=numcolonne; i++)
	{
		var dd = GetLayerByNameGeneric('r'+i+id);
		dd.style.backgroundColor=color;
	}
}


function ReTrim(stringa){
	var str=''
	str = stringa.replace(/^ +/,'')
	str = str.replace(/ +$/,'')
	return str
}

function GetLayerByNameGeneric(divname) {
	
	var obj_layer = '';
	
	if (document.getElementById) { // DOM3 = IE5, NS6 
		obj_layer = document.getElementById(divname)
	} 
	else { 
		if (document.layers) { // Netscape 4 
			obj_layer = eval('document.'+divname);
		} 
		else { // IE 4 
			obj_layer = eval('document.all.'+divname);
		} 
	}
	
	return obj_layer

}

function hideDiv(divname) {

	var erdiv = GetLayerByNameGeneric(divname);
	
	if (document.layers) {
		erdiv.visibility = 'hidden';
	}
	else {
		erdiv.style.visibility = 'hidden';
	}
	
}

function showDiv(divname) {

	var erdiv = GetLayerByNameGeneric(divname);
	
	if (document.layers) {
		erdiv.visibility = 'visible';
	}
	else {
		erdiv.style.visibility = 'visible';
	}
	
}

var imgESPANDI = new Image(20, 20);
imgESPANDI.src = '/img/espandi.png';
	
var imgCOMPRIMI = new Image(20, 20);
imgCOMPRIMI.src = '/img/comprimi.png';

function eval_josko(stringa) {
	//alert(stringa + ' ==> ' + eval(stringa));
	return eval(stringa);
}

function VisualizzaLayerSezione(nomesezione, azionelayer) {
	
	var divimg = eval('document.images[\'img_'+nomesezione+'\']');
	var divon = GetLayerByNameGeneric('div_'+nomesezione + '_on');
	var divview = GetLayerByNameGeneric('div_'+nomesezione);
	var html_temp = '';
	
	if (eval_josko('document.forms[0].stato_'+nomesezione) && divimg) {
		
		var bolChange = false;
		
		if (azionelayer == 'on') {
			if (eval_josko('document.forms[0].stato_'+nomesezione+'.value == \'True\'')) {
				bolChange = false;
			}
			else {
				bolChange = true;
			}
		}
		else if (azionelayer == 'off') {
			if (eval_josko('document.forms[0].stato_'+nomesezione+'.value == \'True\'')) {
				bolChange = true;
			}
			else {
				bolChange = false;
			}
		}
		else {
			bolChange = true;
		}
		
		if (bolChange == true) {
		
			if (eval_josko('document.forms[0].stato_'+nomesezione+'.value == \'False\'')) {
				divimg.src = imgCOMPRIMI.src;
				eval_josko('document.forms[0].stato_'+nomesezione+'.value = \'True\';');
			}
			else {
				divimg.src = imgESPANDI.src;
				eval_josko('document.forms[0].stato_'+nomesezione+'.value = \'False\';');
			}
			
			html_temp = divview.innerHTML;
			divview.innerHTML = divon.innerHTML;
			divon.innerHTML = html_temp;
			
		}
	
	}

}
	
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function Mid(STRING,START,END){
	if(!START){START=0};
	if(!END || END > STRING.length){END=STRING.length};
	if(END!=STRING.length){END = START + END};
	return STRING.substring(START,END);
}
