/**************************************
» TMTFactory
**************************************/

var AutoTab = function()
{ //v1.0
    for (var d, f=(d=document ).forms, i=f.length; i; addEvent(f[--i], "keyup", function(e)
		{ 
			var k=e.key, el=(e=e.target).form.elements;
        	if (e.value.length>=(e.getAttribute("maxlength")||e.value.length+1) && /[\wÀ-ÿ ]/.test(String.fromCharCode(k)))
			{
    	        for (k=el.length; el[--k]!=e;);				
				{
       	    		while(!el[k= ++k*(k<el.length)].type);
            			el[k].focus();
				}
	        }
    	}
	) 
	);
};

var addEvent = function(o, e, f)
{
    var a, r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [o[e]] : []);
    r[r.length] = f, o[e] = function(e)
	{
        try{
            (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
            e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
            e.target || (e.target = e.srcElement || null);
            e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(f in r)
            a = r[f], a.call ? a.call(o, e) : (o._ = a, o._(e), o._ = null);
        e = null;
    }
};

var removeEvent = function(o, e, f){
    for(var i in e = o["_on" + e])
        if(e[i] == f)
            return delete e[i];
    return false;
};

var MaskInput = function( f, m, c) { //v1.0
    if (f == null) return;
    f.setAttribute( 'size', m.length );
	f.maxLength = m.length;
    for( var i in ( !/^(.)\^(.*)$/.test( m ) && f.setAttribute( 'maxlength', m.length ), { keypress: 0, keyup: 1 } ) )
        addEvent( f, i, function( e ){
            var patterns = { "1": /[A-Z]/i, "2": /[0-9]/, "4": /[À-ÿ]/i, "8": /./ }, rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8 };
            function validChar( c, rule ){
                var r = rules[rule] || 0;
                for( var i = 1; i <= r; i<<=1 )
                    if( r & i && patterns[i].test( c ) )
                        break;
                return i <= r || c == rule;
            }			
            var k, mC, r, c = String.fromCharCode( k = e.key ), l = f.value.length;
            ( !k || k == 8 ? 1 : ( r = /^(.)\^(.*)$/.exec( m ) ) && ( r[0] = r[2].indexOf( c ) + 1 ) + 1 ? r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : validChar( c, r[1] ) || r[0] : ( l = ( f.value += m.substr( l, ( r = /[A|9|C|\*]/i.exec( m.substr( l ) ) ) ? r.index : l ) ).length ) < m.length && validChar( c, m.charAt( l ) ) ) || e.preventDefault();	       
        } );
};

function StopBack(e) 
{ 
    /* CONTROL DE EVENT PARA EXPLORER y FIREFOX */
    out.println("key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;");		
  statusID.value = event.srcElement.id ; 
  if (event.srcElement.id.toUpperCase() == "BODY" || event.srcElement.id == "") 
  { 
     if (key == 8) 
  	 {	 
        alert("Spiacenti, funzionalità INDIETRO tramite backspace disabilitata."); 
        return false; 
     } 
  } 
} 

function doFlash(id) {
 var fun = "document.getElementById('"+id+"').style.visibility = (document.getElementById('"+id+"').style.visibility == 'visible') ? 'hidden' : 'visible'";
 window.setInterval(fun, 800);
}

function compararFechas(f1,f2) {
 var fec1 = f1.getFullYear()+f1.getMonth()+f1.getDate();
 var fec2 = f2.getFullYear()+f2.getMonth()+f2.getDate();
 
 if (fec1 == fec2) return 0; else
 if (fec1 > fec2) return 1; else
 return -1;
}

