var Utils = {};

//{{{ hide_error ()
Utils.hide_error = function ()
{
	if ( Utils.f )
		Utils.f.Show ( false );
};
//}}}
//{{{ destroy_error ()
Utils.destroy_error = function ()
{
        if ( Utils.f )
                Utils.f.Destroy ();
};
//}}}
//{{{ print_error ( elem, str )
Utils.print_error = function ( elem, str )
{
        var s = '<div style = "text-align:center"><p="txt">Inserire i valori<\/p><\/div>';
        var top, f;

        if ( elem )
        {
                if ( str )
                        s = '<div style= "text-align:center"><p class="txt">' + str + '<\/p><\/div>';

                top = Utils.get_input_offsetTop ( elem );
		if (! Utils.f) {
			Utils.f = new Basic.Frame("errorFrame", "Assistente");
			Utils.f.setSize(200,80);
			Utils.f.left = 30;
		}
		Utils.f.top = top;
		Utils.f.Show ( true );
		$("errorFrame").innerHTML = s;
        }
};
//}}}
//{{{ get_input_offsetTop ( elem )
Utils.get_input_offsetTop = function ( elem )
{
        var top = 0;
        if ( elem )
                top = Utils.findPosY ( elem );

        return top;
};
//}}}
//{{{ get_input_width_pos ( elem )
Utils.get_input_width_pos = function ( elem )
{
        var w = 0;
        if ( elem )
                w = elem.scrollWidth;

        return w;
};
//}}}
//{{{ findPosX ( obj )
Utils.findPosX = function( obj )
{
	var curleft = 0;

	if ( obj.offsetParent )
	{
		while ( obj.offsetParent )
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if ( obj.x )
		curleft += obj.x;

	return curleft;
};
//}}}
//{{{ findPosY ( obj )
Utils.findPosY = function ( obj )
{
	var curtop = 0;

	if ( obj.offsetParent )
	{
		while ( obj.offsetParent )
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if ( obj.y )
		curtop += obj.y;

	return curtop;
};
//}}}
//{{{ findCoordinates ( object )
Utils.findCoordinates = function ( object )
{
	var top  = Utils.findPosY ( object );
	var left = Utils.findPosX ( object );

	return new Array ( left, top );
};
//}}}
//{{{ get_now_year ()
Utils.get_now_year = function ()
{
        var d = new Date();

	return d.getFullYear();
};
//}}}
//{{{ get_now_month ( text )
Utils.get_now_month = function ( text )
{
        var s, d = new Date();

	if ( text )
		s = Utils.map_date [ d.getMonth() ];
	else
		s = d.getMonth() + 1;

        return s;
};
//}}}//{{{ get_now_day ()
Utils.get_now_day = function ()
{
        var d = new Date();

        return d.getDate();
};
//}}}
//{{{ get_it_full_nowdate ( sep )
Utils.get_it_full_nowdate = function ( sep )
{
        var s, d = new Date();
        if ( sep )
                s = d.getDate() + sep + Utils.map_date [ d.getMonth() ] + sep + d.getFullYear();
        else
                s = d.getDate() + "&nbsp;" + Utils.map_date [ d.getMonth() ] + "&nbsp;" + d.getFullYear();

        return s;
};
//}}}
//{{{ get_DB_nowdate ( sep )
Utils.get_DB_nowdate = function ( sep )
{
        var s, d = new Date();
        if ( sep )
                s = d.getFullYear() + sep + ( d.getMonth() + 1 )  + sep + d.getDate();
        else
                s = d.getFullYear() + "&nbsp;" + ( d.getMonth() + 1 ) + "&nbsp;" + d.getDate();

        return s;
};
//}}}
//{{{ change_sep_date ( date, curr_sep, newsep )
Utils.change_sep_date = function ( date, curr_sep, newsep )
{
        var s = '';

        if ( date )
        {
                if ( curr_sep && newsep )
                {
                        s = date.split ( curr_sep );
                        s = s [ 0 ] + newsep + s [ 1 ] + newsep + s [ 2 ];
                }
        }

        return s;
};
//}}}
//{{{ check_empty_input ( value )
Utils.check_empty_input = function ( value )
{
	value = value.replace ( /^\s+|\s+$/g, "" );
	if ( value ) 
		return false;

	return true;
};
//}}}
//{{{ trim ( value )
Utils.trim = function ( value )
{
	return value.replace ( /^\s+|\s+$/g, "" );
};
//}}}
//{{{ check_cod_fis ( value )
Utils.check_cod_fis = function ( value )
{
	var caratteri= new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z" );
	var pari= new Array ( 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25 );
   	var dispari=new Array ( 1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23 );
   	var cod = value;//.toLowerCase();
   	var check = true;
	var numeri = '';
	var lettere = '';
	var i, test, somma = 0;
	var lettera, carattere, resto, k;
	
   	if ( cod.length != 16 )
		check=false;
     	else
      	{
		cod = cod.toLowerCase();
      		lettere = cod.substr ( 0, 6 ) + cod.substr ( 8, 1 ) + cod.substr ( 11, 1) + cod.substr ( 15 );
      		numeri  = cod.substr ( 6, 2 ) + cod.substr ( 9, 2 ) + cod.substr ( 12, 3 );
      		for  ( i = 0; i < 10; i++ )
		{
         		if ( lettere.charCodeAt ( i ) < 97 || lettere.charCodeAt ( i ) > 122 )
            			check = false;
      		}
      		for  ( i = 0; i < 8; i++ )
		{
         		if ( numeri.charCodeAt ( i ) < 48 || numeri.charCodeAt ( i ) > 57 )
            			check=false;
      		}   
     	}
   	//checksum del codice fiscale
   	test = cod.substr ( 15,1 );
   	somma = 0;
   	for ( i = 0; i < 16; i = i + 2 )
	{ //dispari
       		carattere = cod.substr ( i, 1 );
       		for ( k = 0; k < 36; k++ )
		{
             		if ( carattere == caratteri [ k ] )
			{
                		somma = somma + dispari [ k ];
             			break;
          		}
       		}
    	}
    	for ( i = 1; i < 15; i= i + 2 )
	{ //pari
       		carattere = cod.substr ( i, 1 );
       		for ( k = 0; k < 36; k++ )
		{
            		if ( carattere == caratteri [ k ] )
			{
             			somma = somma + pari [ k ]; 
             			break;
          		}
       		}
    	}
   	resto = somma % 26;
   	lettera = String.fromCharCode ( 97 + resto );            
   	if ( test != lettera )
      		check = false;

   	return check;
};
//}}}
//{{{ check_email ( value )
Utils.check_email = function ( value )
{
	var check = false;
	var x, y, l = value.length;
	var no_ext = false;
	var appo = '';

	if ( l >= 10 )
	{
		x = value.split ( "@" );
		if ( x [ 1 ] )
		{
			y = x [ 1 ].split ( "." );

			if ( x [ 0 ].length >= 3 && y [ 0 ].length >= 3 && y [ 1 ] && y [ 1 ].length >= 2 )//&& Utils.internet_domini [ y [ 1 ] ] )
				check = true; 
		}
	}	
	//return check;
	return true;
};
//}}}
//{{{ isInteger ( value )
Utils.isInteger = function ( value )
{
	var exp = /(^-?\d\d*$)/;

  	//check for integer characters
  	return exp.test ( value );
};
//}}}
//{{{ reset_elem ( name )
Utils.reset_elem = function ( name )
{
	var res = false;
	if ( name && $ ( name ) )
	{
		$ ( name ).reset();
		res = true;
	}

	return res;
};
//}}}
//{{{ setall_background_form_fields ( name, color )
Utils.setall_background_form_fields = function ( name, color )
{
	var i, l, f;

	if ( name && $ ( name ) && color )
	{
		f = $ ( name );
		l = f.length;
		for ( i = 0; i < l; i++)
			f.elements [ i ].style.background = color;
	}
};
//}}}
//{{{ get_by_class ( cl )
Utils.get_by_class = function ( cl )
{
        var _node = [];
        var _class = new RegExp('\\b'+cl+'\\b');
        var elems = document.getElementsByTagName('*');
        var i, l = elems.length;
        var classes;

        for (var i = 0; i < l; i++)
        {
                classes = elems [ i ].className;
                if ( _class.test ( classes ) ) _node.push ( elems [ i ] );
        }
        return _node;
};
//}}}
//{{{ get_delimiter_location ( str )
Utils.get_delimiter_location = function ( str )
{
	return window.location.href.split ( str );
};
//}}}
Utils.get_parameters_location = function (value) 
{
	var arr = [];

	if ( value.split ( "&" ) )
		arr = value.split ( "&" );

	return arr;
		
};
//{{{ get_mode_location ( mode )
Utils.get_mode_location = function ( mode )
{
	var m = '';
	var ref = '';
	var t, l;

	if ( Utils.get_delimiter_location ( "#" )[ 1 ] )
	{
		ref = Utils.get_delimiter_location ( "#" )[ 1 ];
		
		ref = Utils.get_parameters_location ( ref );
		l = ref.length;

		for ( t = 0; t < l; t++ )
		{
			if ( ref [ t ].split ( "=" )[ 1 ] && Utils.trim ( ref [ t ].split ( "=" )[ 0 ] ) == mode ) 
			{
				m = Utils.trim ( ref [ t ].split ( "=" ) [ 1 ] );
				break;
			}
				
		}

	}

	return m;
};
//}}}

