
/*** BROWSER IDENTIFICATION ***/

var IE = 0;
var NE = 0;		// Default

function BrowserIdentification()
{
	var appName = window.navigator.appName;
	var appVersion = window.navigator.appVersion;

	appVersion = parseFloat(appVersion);
	if ( appName.indexOf("Microsoft", 0) >= 0 )
		IE = 1;	
	else
		NE = 1;
}
BrowserIdentification();


/*** QUERY ARGS ***/

  //////////////
 // CQueryArgs
//
function CQueryArgs()
{
	this.args = [];
	this.init();
}

//
// CQueryArgs.init
//
function CQueryArgs_init()
{
try
{
	var str = document.location.search;
	if ( IsEmpty(str) )
		return [];
	var tmp = str.split(/[\?&]/);
	for (var i=0; i<tmp.length; i++)
	{
		tmp[i] = tmp[i].split("=");
		tmp[i][0] = unescape(tmp[i][0]);
		tmp[i][1] = unescape(tmp[i][1]);
	}
	this.args = tmp;
}
catch(e)
{
	this.args = [];
}
}
CQueryArgs.prototype.init = CQueryArgs_init;

//
// CQueryArgs.getArg
//
function CQueryArgs_getArg(name)
{
	for (var i=0; i<this.args.length; i++)
	{
		if ( this.args[i][0] == name )
			return this.args[i][1];
	}		
	return null;
}
CQueryArgs.prototype.getArg = CQueryArgs_getArg;


/*** DEBUGGING ***/

function DebugProperties(target)
{
	var p;
	var str = "";

	for (p in target)
		str += "\n" + p + " = " + target[p];
	return str;
}


/*** IS FUNCTIONS ***/

var undefined;

function IsUndefined(v) { return (v == undefined); }
function IsEmptyString(v) { return (v == undefined || v === ""); }
function IsEmpty(v) { try {	return (v == undefined || v == null || v === ""); } catch (e) {	return false; } }

// Controllo sulla data d, m, y
// Ritorna: 
//	0 se la data è corretta
//	1, 2, 3 se l'errore è su giorno, mese o anno
//
function IsInvalidDate(d, m, y)
{
	d = parseInt(d, 10); if ( isNaN(d) ) return 1;
	m = parseInt(m, 10); if ( isNaN(m) ) return 2;
	y = parseInt(y, 10); if ( isNaN(y) ) return 3;

	if ( y < 0 ) return 3;
	if ( m < 0 || m > 12 ) return 2;
	if ( d < 1 ) return 1;
	switch ( m )
	{
		case 4, 6, 9, 11: 
			if ( d > 30 ) 
				return 1;
			break;

		case 2:
			if ( !(y % 400) || (!(y % 4) && (y % 100)) )
			{
				if ( d > 29 )
					return 1;
			}
			else if ( d > 28 )
				return 1;
			break;	

		default:
			if ( d > 31 ) 
				return 1;
			break;
	}
	return 0;
}

// Controllo sull'ora con h, m, s, ms (millisecondi opzionali) numerici interi
// Ritorna: 
//	0 se l'ora e' corretta
//	1, 2, 3, 4 se l'errore e' su ora, minuti, secondi o millisecondi
//
function IsInvalidTime(h, m, s, ms)
{
	if ( h < 0 || h > 23 ) return 1;
	if ( m < 0 || m > 59 ) return 2;
	if ( s < 0 || s > 59 ) return 3;

	if ( arguments.length > 3 )
		if ( ms < 0 || ms > 999 )
			return 4;

	return 0;
}




/*** TRIM ***/

function TrimLeft(s)
{
	return s.replace(/(^\s*)/, "");
}


function TrimRight(s)
{
	return s.replace(/(\s*$)/, "");
}


function Trim(s)
{
	return TrimRight(TrimLeft(s));
}


function TrimSearchExpression(s)
{
	// Sostituzione di cr, tab, ecc. con spazi singoli
	s = s.replace(/(\f|\n|\r|\t|\v)+/g, " ");
	// Raddoppio degli apici e trim degli spazi
	return Trim(s.replace(/'/g, "''"));
}

function OpenUrl(url, target, features)
{
	if ( IsEmpty(url) )
		return;
	
	switch ( target )
	{
		case "_same": 
			window.location = url;
			break;
		
		case "_replace":
			window.location.replace(url);
			break;
		
		default:	
			if ( IsEmpty(features) )
				window.open(url, target);
			else
				window.open(url, target, features);
	}	
}

/*** FORMATI STANDARD ***/

function StdDateTimeString(year, month, day, hour, min, sec)
{
	if ( IsEmpty(hour) ) hour = 0;
	if ( IsEmpty(min) ) min = 0;
	if ( IsEmpty(sec) ) sec = 0;

	year = "0000" + year;
	month = "00" + month;
	day = "00" + day;
	hour = "00" + hour;
	min = "00" + min;
	sec = "00" + sec;
	
	return year.slice(-4) + "-" + month.slice(-2) + "-" + day.slice(-2) + " " + hour.slice(-2) + ":" + min.slice(-2) + ":" + sec.slice(-2);
}

