if (typeof AZUL == "undefined") {
    /**
     * The AZUL global namespace object.  If AZUL is already defined, the
     * existing AZUL object will not be overwritten so that defined
     * namespaces are preserved.
     * @class AZUL
     * @static
     */
    var AZUL = {};
}
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

AZUL.namespace = function() 
{
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) 
    {
        d=a[i].split(".");
        o=AZUL;

        // AZUL is implied, so it is ignored if it is included
        for (j=(d[0] == "AZUL") ? 1 : 0; j<d.length; j=j+1) 
        {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};
AZUL.string = {
	
	abbreviate: function( str, len, delimiter )
	{
		if ( str.length > len ) return str.substring(0,len) + delimiter;
		else return str;
	}
};

AZUL.embedded = {

	/**
	 * Declare constants
	 * IS_MSIE	checks for Internet Explorer 6 and later versions
	 * TAGS		array with affected HTML tags
	 */
	IS_MSIE : (document.removeNode && document.createAttribute) ? true : false,
	TAGS : ['object', 'embed', 'applet'],
	
	
	/**
	 * Activates embedded content reinserting it.
	 * @return void
	 */
	activateContent : function()
	{
		var i = 0;
		for(var _tagName; _tagName = this.TAGS[i]; i++)
		{
			var j = 0;
			for(var _node; _node = document.getElementsByTagName(_tagName)[j]; j++)
			{
				if(this.IS_MSIE)
				{
					this.reinsertHtml(_node);
				}
				else
				{
					this.reinsertNode(_node);
				}
			}
			
		}
	},
	
	
	/**
	 * Sets outerHTML property.
	 * @param object	- The node
	 * @return void
	 */
	reinsertHtml : function(_node)
	{
		var _htmlCode = this.getHtmlCode(_node);
		if(_htmlCode)
		{
			_node.outerHTML = _htmlCode;
		}
	},
	
	
	/**
	 * Replaces the node for a clone.
	 * @param object - The original node
	 * @return void
	 */
	reinsertNode : function(_node)
	{
		var _clone = _node.cloneNode(true);
		var _parent = _node.parentNode;
		if(_clone && _parent)
		{
			_parent.replaceChild(_clone, _node);
		}
	},
	
	
	/**
	 * Retrieves the object and its content in HTML.
	 * @param object - The analyzed node
	 * @return string - The HTML received, NULL for malformed syntax (end tag)
	 */
	getHtmlCode : function(_node)
	{
		var _htmlCode = _node.outerHTML;
		var _name = _node.nodeName.toLowerCase();
		if(_name == 'embed')
		{
			return _htmlCode;
		}
		if(_name == 'object' || _name == 'applet')
		{
			var _startTag = _htmlCode.substr(0, _htmlCode.indexOf('>') + 1);
			var _endTag = _htmlCode.substr(_htmlCode.length - 9).toLowerCase();
			// Filters malformed syntax for avoid unexpected results
			if(_endTag != '</object>' && _endTag != '</applet>')
			{
				return null;
			}
			var _innerHtml = this.getInnerHtml(_node);
			_htmlCode = _startTag + _innerHtml + _endTag;
			return _htmlCode;
		}
	},
	
	
	/**
	 * Retrieves the HTML between start and end tags of the object.
	 * @param object - The analyzed node
	 * @return string - The HTML received
	 *
	 * NOTE: the innerHTML property isn't used because Internet Explorer
	 * sometimes returns a empty result.
	 */
	getInnerHtml : function(_node)
	{
		var _innerHtml = '';
		var i = 0;
		for(var _childNode; _childNode = _node.childNodes[i]; i++)
		{
			_innerHtml += _childNode.outerHTML;
		}
		return _innerHtml;
	}
};

AZUL.extractFunctionBody = function ( functionCode )
{
	var functionBody = new String( functionCode );
	var startPos = functionBody.indexOf("{");
	var endPos = functionBody.lastIndexOf("}");
	if ( endPos == -1 ) endPos = functionBody.length;
	functionBody = functionBody.substring(startPos+1,endPos);
	return functionBody;
};

AZUL.HtmlDecode = function(s)
{
	if (s==null) return;
	var out = "";    
    var l 	= s.length;
    for (var i=0; i<l; i++)
	{
		var ch = s.charAt(i);
		if (ch == '&')
		{
			var semicolonIndex = s.indexOf(';', i+1);
		    if (semicolonIndex > 0)
            {
            	var entity = s.substring(i + 1, semicolonIndex);
                if (entity.length > 1 && entity.charAt(0) == '#')
                {
                	if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X')
                		ch = String.fromCharCode(eval('0'+entity.substring(1)));
                    else
                    	ch = String.fromCharCode(eval(entity.substring(1)));

                }
                else
                {
	                switch (entity)
                    {
						case 'quot': ch = String.fromCharCode(0x0022); break;
						case 'amp': ch = String.fromCharCode(0x0026); break;
						case 'lt': ch = String.fromCharCode(0x003c); break;
						case 'gt': ch = String.fromCharCode(0x003e); break;
						case 'nbsp': ch = String.fromCharCode(0x00a0); break;
						case 'iexcl': ch = String.fromCharCode(0x00a1); break;
						case 'cent': ch = String.fromCharCode(0x00a2); break;
						case 'pound': ch = String.fromCharCode(0x00a3); break;
						case 'curren': ch = String.fromCharCode(0x00a4); break;
						case 'yen': ch = String.fromCharCode(0x00a5); break;
						case 'brvbar': ch = String.fromCharCode(0x00a6); break;
						case 'sect': ch = String.fromCharCode(0x00a7); break;						
						case 'uml': ch = String.fromCharCode(0x00a8); break;						
						case 'copy': ch = String.fromCharCode(0x00a9); break;						
						case 'ordf': ch = String.fromCharCode(0x00aa); break;						
						case 'laquo': ch = String.fromCharCode(0x00ab); break;						
						case 'not': ch = String.fromCharCode(0x00ac); break;	
						case 'shy': ch = String.fromCharCode(0x00ad); break;						
						case 'reg': ch = String.fromCharCode(0x00ae); break;						
						case 'macr': ch = String.fromCharCode(0x00af); break;						
						case 'deg': ch = String.fromCharCode(0x00b0); break;						
						case 'plusmn': ch = String.fromCharCode(0x00b1); break;						
						case 'sup2': ch = String.fromCharCode(0x00b2); break;	
						case 'sup3': ch = String.fromCharCode(0x00b3); break;
						case 'acute': ch = String.fromCharCode(0x00b4); break;
						case 'micro': ch = String.fromCharCode(0x00b5); break;
						case 'para': ch = String.fromCharCode(0x00b6); break;
						case 'middot': ch = String.fromCharCode(0x00b7); break;
						case 'cedil': ch = String.fromCharCode(0x00b8); break;	
						case 'sup1': ch = String.fromCharCode(0x00b9); break;						
						case 'ordm': ch = String.fromCharCode(0x00ba); break;						
						case 'raquo': ch = String.fromCharCode(0x00bb); break;						
						case 'frac14': ch = String.fromCharCode(0x00bc); break;						
						case 'frac12': ch = String.fromCharCode(0x00bd); break;						
						case 'frac34': ch = String.fromCharCode(0x00be); break;	
						case 'iquest': ch = String.fromCharCode(0x00bf); break;						
						case 'Agrave': ch = String.fromCharCode(0x00c0); break;						
						case 'Aacute': ch = String.fromCharCode(0x00c1); break;						
						case 'Acirc': ch = String.fromCharCode(0x00c2); break;						
						case 'Atilde': ch = String.fromCharCode(0x00c3); break;						
						case 'Auml': ch = String.fromCharCode(0x00c4); break;	
						case 'Aring': ch = String.fromCharCode(0x00c5); break;						
						case 'AElig': ch = String.fromCharCode(0x00c6); break;						
						case 'Ccedil': ch = String.fromCharCode(0x00c7); break;						
						case 'Egrave': ch = String.fromCharCode(0x00c8); break;						
						case 'Eacute': ch = String.fromCharCode(0x00c9); break;	
						case 'Ecirc': ch = String.fromCharCode(0x00ca); break;						
						case 'Euml': ch = String.fromCharCode(0x00cb); break;						
						case 'Igrave': ch = String.fromCharCode(0x00cc); break;						
						case 'Iacute': ch = String.fromCharCode(0x00cd); break;						
						case 'Icirc': ch = String.fromCharCode(0x00ce ); break;	
						case 'Iuml': ch = String.fromCharCode(0x00cf); break;						
						case 'ETH': ch = String.fromCharCode(0x00d0); break;						
						case 'Ntilde': ch = String.fromCharCode(0x00d1); break;						
						case 'Ograve': ch = String.fromCharCode(0x00d2); break;						
						case 'Oacute': ch = String.fromCharCode(0x00d3); break;						
						case 'Ocirc': ch = String.fromCharCode(0x00d4); break;	
						case 'Otilde': ch = String.fromCharCode(0x00d5); break;						
						case 'Ouml': ch = String.fromCharCode(0x00d6); break;						
						case 'times': ch = String.fromCharCode(0x00d7); break;						
						case 'Oslash': ch = String.fromCharCode(0x00d8); break;						
						case 'Ugrave': ch = String.fromCharCode(0x00d9); break;						
						case 'Uacute': ch = String.fromCharCode(0x00da); break;	
						case 'Ucirc': ch = String.fromCharCode(0x00db); break;						
						case 'Uuml': ch = String.fromCharCode(0x00dc); break;						
						case 'Yacute': ch = String.fromCharCode(0x00dd); break;						
						case 'THORN': ch = String.fromCharCode(0x00de); break;						
						case 'szlig': ch = String.fromCharCode(0x00df); break;						
						case 'agrave': ch = String.fromCharCode(0x00e0); break;						
						case 'aacute': ch = String.fromCharCode(0x00e1); break;						
						case 'acirc': ch = String.fromCharCode(0x00e2); break;	
						case 'atilde': ch = String.fromCharCode(0x00e3); break;						
						case 'auml': ch = String.fromCharCode(0x00e4); break;						
						case 'aring': ch = String.fromCharCode(0x00e5); break;						
						case 'aelig': ch = String.fromCharCode(0x00e6); break;						
						case 'ccedil': ch = String.fromCharCode(0x00e7); break;						
						case 'egrave': ch = String.fromCharCode(0x00e8); break;						
						case 'eacute': ch = String.fromCharCode(0x00e9); break;						
						case 'ecirc': ch = String.fromCharCode(0x00ea); break;	
						case 'euml': ch = String.fromCharCode(0x00eb); break;						
						case 'igrave': ch = String.fromCharCode(0x00ec); break;						
						case 'iacute': ch = String.fromCharCode(0x00ed); break;						
						case 'icirc': ch = String.fromCharCode(0x00ee); break;						
						case 'iuml': ch = String.fromCharCode(0x00ef); break;						
						case 'eth': ch = String.fromCharCode(0x00f0); break;	
						case 'ntilde': ch = String.fromCharCode(0x00f1); break;						
						case 'ograve': ch = String.fromCharCode(0x00f2); break;						
						case 'oacute': ch = String.fromCharCode(0x00f3); break;						
						case 'ocirc': ch = String.fromCharCode(0x00f4); break;						
						case 'otilde': ch = String.fromCharCode(0x00f5); break;						
						case 'ouml': ch = String.fromCharCode(0x00f6); break;						
						case 'divide': ch = String.fromCharCode(0x00f7); break;	
						case 'oslash': ch = String.fromCharCode(0x00f8); break;						
						case 'ugrave': ch = String.fromCharCode(0x00f9); break;						
						case 'uacute': ch = String.fromCharCode(0x00fa); break;						
						case 'ucirc': ch = String.fromCharCode(0x00fb); break;						
						case 'uuml': ch = String.fromCharCode(0x00fc); break;						
						case 'yacute': ch = String.fromCharCode(0x00fd); break;						
						case 'thorn': ch = String.fromCharCode(0x00fe); break;	
						case 'yuml': ch = String.fromCharCode(0x00ff); break;						
						case 'OElig': ch = String.fromCharCode(0x0152); break;						
						case 'oelig': ch = String.fromCharCode(0x0153); break;						
						case 'Scaron': ch = String.fromCharCode(0x0160); break;						
						case 'scaron': ch = String.fromCharCode(0x0161); break;						
						case 'Yuml': ch = String.fromCharCode(0x0178); break;						
						case 'fnof': ch = String.fromCharCode(0x0192); break;	
						case 'circ': ch = String.fromCharCode(0x02c6); break;						
						case 'tilde': ch = String.fromCharCode(0x02dc); break;						
						case 'Alpha': ch = String.fromCharCode(0x0391); break;						
						case 'Beta': ch = String.fromCharCode(0x0392); break;						
						case 'Gamma': ch = String.fromCharCode(0x0393); break;						
						case 'Delta': ch = String.fromCharCode(0x0394); break;	
						case 'Epsilon': ch = String.fromCharCode(0x0395); break;						
						case 'Zeta': ch = String.fromCharCode(0x0396); break;						
						case 'Eta': ch = String.fromCharCode(0x0397); break;						
						case 'Theta': ch = String.fromCharCode(0x0398); break;						
						case 'Iota': ch = String.fromCharCode(0x0399); break;						
						case 'Kappa': ch = String.fromCharCode(0x039a); break;						
						case 'Lambda': ch = String.fromCharCode(0x039b); break;	
						case 'Mu': ch = String.fromCharCode(0x039c); break;						
						case 'Nu': ch = String.fromCharCode(0x039d); break;						
						case 'Xi': ch = String.fromCharCode(0x039e); break;						
						case 'Omicron': ch = String.fromCharCode(0x039f); break;						
						case 'Pi': ch = String.fromCharCode(0x03a0); break;
						case ' Rho ': ch = String.fromCharCode(0x03a1); break;	
						case 'Sigma': ch = String.fromCharCode(0x03a3); break;						
						case 'Tau': ch = String.fromCharCode(0x03a4); break;						
						case 'Upsilon': ch = String.fromCharCode(0x03a5); break;						
						case 'Phi': ch = String.fromCharCode(0x03a6); break;						
						case 'Chi': ch = String.fromCharCode(0x03a7); break;						
						case 'Psi': ch = String.fromCharCode(0x03a8); break;	
						case 'Omega': ch = String.fromCharCode(0x03a9); break;	
						case 'alpha': ch = String.fromCharCode(0x03b1); break;	
						case 'beta': ch = String.fromCharCode(0x03b2); break;	
						case 'gamma': ch = String.fromCharCode(0x03b3); break;	
						case 'delta': ch = String.fromCharCode(0x03b4); break;	
						case 'epsilon': ch = String.fromCharCode(0x03b5); break;	
						case 'zeta': ch = String.fromCharCode(0x03b6); break;	
						case 'eta': ch = String.fromCharCode(0x03b7); break;	
						case 'theta': ch = String.fromCharCode(0x03b8); break;	
						case 'iota': ch = String.fromCharCode(0x03b9); break;	
						case 'kappa': ch = String.fromCharCode(0x03ba); break;	
						case 'lambda': ch = String.fromCharCode(0x03bb); break;	
						case 'mu': ch = String.fromCharCode(0x03bc); break;	
						case 'nu': ch = String.fromCharCode(0x03bd); break;	
						case 'xi': ch = String.fromCharCode(0x03be); break;	
						case 'omicron': ch = String.fromCharCode(0x03bf); break;	
						case 'pi': ch = String.fromCharCode(0x03c0); break;	
						case 'rho': ch = String.fromCharCode(0x03c1); break;	
						case 'sigmaf': ch = String.fromCharCode(0x03c2); break;	
						case 'sigma': ch = String.fromCharCode(0x03c3); break;	
						case 'tau': ch = String.fromCharCode(0x03c4); break;	
						case 'upsilon': ch = String.fromCharCode(0x03c5); break;	
						case 'phi': ch = String.fromCharCode(0x03c6); break;	
						case 'chi': ch = String.fromCharCode(0x03c7); break;	
						case 'psi': ch = String.fromCharCode(0x03c8); break;	
						case 'omega': ch = String.fromCharCode(0x03c9); break;	
						case 'thetasym': ch = String.fromCharCode(0x03d1); break;	
						case 'upsih': ch = String.fromCharCode(0x03d2); break;	
						case 'piv': ch = String.fromCharCode(0x03d6); break;	
						case 'ensp': ch = String.fromCharCode(0x2002); break;	
						case 'emsp': ch = String.fromCharCode(0x2003); break;	
						case 'thinsp': ch = String.fromCharCode(0x2009); break;	
						case 'zwnj': ch = String.fromCharCode(0x200c); break;	
						case 'zwj': ch = String.fromCharCode(0x200d); break;	
						case 'lrm': ch = String.fromCharCode(0x200e); break;	
						case 'rlm': ch = String.fromCharCode(0x200f); break;	
						case 'ndash': ch = String.fromCharCode(0x2013); break;	
						case 'mdash': ch = String.fromCharCode(0x2014); break;	
						case 'lsquo': ch = String.fromCharCode(0x2018); break;	
						case 'rsquo': ch = String.fromCharCode(0x2019); break;	
						case 'sbquo': ch = String.fromCharCode(0x201a); break;	
						case 'ldquo': ch = String.fromCharCode(0x201c); break;	
						case 'rdquo': ch = String.fromCharCode(0x201d); break;	
						case 'bdquo': ch = String.fromCharCode(0x201e); break;	
						case 'dagger': ch = String.fromCharCode(0x2020); break;	
						case 'Dagger': ch = String.fromCharCode(0x2021); break;	
						case 'bull': ch = String.fromCharCode(0x2022); break;	
						case 'hellip': ch = String.fromCharCode(0x2026); break;	
						case 'permil': ch = String.fromCharCode(0x2030); break;	
						case 'prime': ch = String.fromCharCode(0x2032); break;	
						case 'Prime': ch = String.fromCharCode(0x2033); break;	
						case 'lsaquo': ch = String.fromCharCode(0x2039); break;	
						case 'rsaquo': ch = String.fromCharCode(0x203a); break;	
						case 'oline': ch = String.fromCharCode(0x203e); break;	
						case 'frasl': ch = String.fromCharCode(0x2044); break;	
						case 'euro': ch = String.fromCharCode(0x20ac); break;	
						case 'image': ch = String.fromCharCode(0x2111); break;	
						case 'weierp': ch = String.fromCharCode(0x2118); break;	
						case 'real': ch = String.fromCharCode(0x211c); break;	
						case 'trade': ch = String.fromCharCode(0x2122); break;	
						case 'alefsym': ch = String.fromCharCode(0x2135); break;	
						case 'larr': ch = String.fromCharCode(0x2190); break;	
						case 'uarr': ch = String.fromCharCode(0x2191); break;	
						case 'rarr': ch = String.fromCharCode(0x2192); break;	
						case 'darr': ch = String.fromCharCode(0x2193); break;	
						case 'harr': ch = String.fromCharCode(0x2194); break;	
						case 'crarr': ch = String.fromCharCode(0x21b5); break;	
						case 'lArr': ch = String.fromCharCode(0x21d0); break;	
						case 'uArr': ch = String.fromCharCode(0x21d1); break;	
						case 'rArr': ch = String.fromCharCode(0x21d2); break;	
						case 'dArr': ch = String.fromCharCode(0x21d3); break;	
						case 'hArr': ch = String.fromCharCode(0x21d4); break;	
						case 'forall': ch = String.fromCharCode(0x2200); break;	
						case 'part': ch = String.fromCharCode(0x2202); break;	
						case 'exist': ch = String.fromCharCode(0x2203); break;	
						case 'empty': ch = String.fromCharCode(0x2205); break;	
						case 'nabla': ch = String.fromCharCode(0x2207); break;	
						case 'isin': ch = String.fromCharCode(0x2208); break;	
						case 'notin': ch = String.fromCharCode(0x2209); break;	
						case 'ni': ch = String.fromCharCode(0x220b); break;	
						case 'prod': ch = String.fromCharCode(0x220f); break;	
						case 'sum': ch = String.fromCharCode(0x2211); break;	
						case 'minus': ch = String.fromCharCode(0x2212); break;	
						case 'lowast': ch = String.fromCharCode(0x2217); break;	
						case 'radic': ch = String.fromCharCode(0x221a); break;	
						case 'prop': ch = String.fromCharCode(0x221d); break;	
						case 'infin': ch = String.fromCharCode(0x221e); break;	
						case 'ang': ch = String.fromCharCode(0x2220); break;	
						case 'and': ch = String.fromCharCode(0x2227); break;	
						case 'or': ch = String.fromCharCode(0x2228); break;	
						case 'cap': ch = String.fromCharCode(0x2229); break;	
						case 'cup': ch = String.fromCharCode(0x222a); break;	
						case 'int': ch = String.fromCharCode(0x222b); break;	
						case 'there4': ch = String.fromCharCode(0x2234); break;	
						case 'sim': ch = String.fromCharCode(0x223c); break;	
						case 'cong': ch = String.fromCharCode(0x2245); break;	
						case 'asymp': ch = String.fromCharCode(0x2248); break;	
						case 'ne': ch = String.fromCharCode(0x2260); break;	
						case 'equiv': ch = String.fromCharCode(0x2261); break;	
						case 'le': ch = String.fromCharCode(0x2264); break;	
						case 'ge': ch = String.fromCharCode(0x2265); break;	
						case 'sub': ch = String.fromCharCode(0x2282); break;	
						case 'sup': ch = String.fromCharCode(0x2283); break;	
						case 'nsub': ch = String.fromCharCode(0x2284); break;	
						case 'sube': ch = String.fromCharCode(0x2286); break;	
						case 'supe': ch = String.fromCharCode(0x2287); break;	
						case 'oplus': ch = String.fromCharCode(0x2295); break;	
						case 'otimes': ch = String.fromCharCode(0x2297); break;	
						case 'perp': ch = String.fromCharCode(0x22a5); break;	
						case 'sdot': ch = String.fromCharCode(0x22c5); break;	
						case 'lceil': ch = String.fromCharCode(0x2308); break;	
						case 'rceil': ch = String.fromCharCode(0x2309); break;	
						case 'lfloor': ch = String.fromCharCode(0x230a); break;	
						case 'rfloor': ch = String.fromCharCode(0x230b); break;	
						case 'lang': ch = String.fromCharCode(0x2329); break;	
						case 'rang': ch = String.fromCharCode(0x232a); break;	
						case 'loz': ch = String.fromCharCode(0x25ca); break;	
						case 'spades': ch = String.fromCharCode(0x2660); break;	
						case 'clubs': ch = String.fromCharCode(0x2663); break;	
						case 'hearts': ch = String.fromCharCode(0x2665); break;	
						case 'diams': ch = String.fromCharCode(0x2666); break;	
						default: ch = ''; break;
					}
				}
				i = semicolonIndex;
			}
		}
		out += ch;
	}
    return out;
};

AZUL.dialog = function( data )
{
	
	AZUL.dialog.prototype.init = function( data )
	{
		if (data)
		{
		 	if ( data.dialogid ) this.dialogid  = data.dialogid;
		}						
		this.dlg = new YAHOO.widget.Dialog(this.dialogid,
													{
														fixedcenter 		: true,
														visible 			: false,
														constraintoviewport : true,
														close				: false,
														draggable			: true,
														modal				: true,
														zindex				: 1001,
														buttons : [ { text:"Enviar", handler:this.handleSubmit, isDefault:true },
																	{ text:"Cancelar", handler:this.handleCancel } ]
													 } );
		this.dlg.callback = { 	success: this.handleSuccess,
								failure: this.handleFailure };			
		this.dlg.render();
	};
	AZUL.dialog.prototype.show = function()
	{
		YAHOO.util.Dom.setStyle( this.dialogid,"display","block" );
				
		// Render the Dialog		
		this.dlg.show();
		
		YAHOO.util.Dom.setStyle(this.dialogid + '_mask','z-index',1000);		
	};
	AZUL.dialog.prototype.handleSubmit = function()
	{
		if ( AZUL.processing ) AZUL.processing.show();
		this.submit();
		this.removeMask();
	};
	AZUL.dialog.prototype.handleCancel = function()
	{
		//var aux_dialog = arguments[1]; 
		this.cancel();
		this.removeMask();
	};
	AZUL.dialog.prototype.handleSuccess = function(o)
	{
		
		//AZUL.user.updateRolGroup( AZUL.user.dialogRolCat.dialog.node );
		if ( AZUL.processing ) AZUL.processing.hide();
		
	};
	AZUL.dialog.prototype.handleFailure= function(o)
	{
		if ( AZUL.processing ) AZUL.processing.hide();
		alert("Error: " + o.status);
	};
	AZUL.dialog.prototype.dialogid = "dialog";
	this.init( data );	
};


/**
 * Existe dependencia con los modulos de dom de YAHOO y container
 * Este fichero muestra un panel de "aguarde estamos procesando sus datos" para cualquier submit que 
 * se realice en la pagina.
 */
AZUL.processingEntity = function( tagid )
{
	if ( tagid ) this.tagid 	= tagid;
	else this.tagid 			= "invisible_processing_content";
	this.isHide 				= true;
	
	// Run through all forms on page
	for( var index=0 ; index<document.forms.length ; index++)
	{
		var currentForm = document.forms[index];
		// Register event handler
		var oldEventCode = (currentForm.onsubmit) ? currentForm.onsubmit : function onsubmit(event) { return true };
		oldEventBody =  AZUL.extractFunctionBody(oldEventCode);
		var genEventCode =  "function oldEvent() {" + oldEventBody + "}; ";
		genEventCode += "result = oldEvent(); if ( result ) AZUL.processing.doSubmitOnce(); return result;";
		currentForm.onsubmit = new Function("onsubmit","event",genEventCode);
	}
	
	
	
	this.panel = new YAHOO.widget.Panel(this.tagid,
										{
											width				: "300px",
											fixedcenter 		: true,
											visible 			: false,
											constraintoviewport : true,
											close				: false,
											draggable			: false,
											zindex				: 1001,
											modal				: true
										 } );	
											 
	AZUL.processingEntity.prototype.show = function()
	{
		if ( this.isHide )
		{
			
			// Render the Dialog
			this.panel.render();
			this.panel.show();
			YAHOO.util.Dom.setStyle(this.tagid + '_mask','z-index',1000);
			YAHOO.util.Dom.setStyle( this.tagid,"display","block" );
			this.isHide = false;
		}
		
	};
	AZUL.processingEntity.prototype.updateBody = function( bd )	
	{
		if ( this.panel ) 
		{
			if ( !this.oldBody ) this.oldBody = this.panel.body;
			this.panel.setBody( bd );
		}		
	},
	AZUL.processingEntity.prototype.hide = function()
	{
		if ( !this.isHide && this.panel )
		{	
			this.panel.hide();
			this.panel.removeMask();
			this.isHide = true;
			if( this.oldBody ) this.updateBody( AZUL.processing.oldBody );
			this.oldBody = null;		
		}
	};
	AZUL.processingEntity.prototype.doSubmitOnce=  function()
	{
		this.show();
	};
}
AZUL.processingEntity.updateBody = function( bd )
{
	if ( typeof AZUL.processing == "undefined" )
		AZUL.processing = new AZUL.processingEntity();
	AZUL.processing.updateBody( bd );
}
AZUL.processingEntity.show = function()
{
	if ( typeof AZUL.processing == "undefined" )
		AZUL.processing = new AZUL.processingEntity();
	AZUL.processing.show()
}

AZUL.processingEntity.hide = function()
{
	if ( typeof AZUL.processing == "undefined" )
		AZUL.processing = new AZUL.processingEntity();
	AZUL.processing.hide()
}
YAHOO.util.Event.onDOMReady(function () 
	{
		if ( typeof AZUL.processing == "undefined" ) AZUL.processing = new AZUL.processingEntity();
		if(AZUL.embedded.IS_MSIE)
			AZUL.embedded.activateContent();
		else if(window.opera)
			document.addEventListener('DOMContentLoaded', AZUL.embedded.activateContent, false);
	}
);