SuagenciaFramework = Class.create({
	initialize:function () {
		if(location.href.match("#") )
			{this.selfLocation = location.href;}
		else
			{this.selfLocation = location.href + "#";}
	},
	selfLocation:"",
	Paineis:null,
	SwitchDisplays:null,
	Paginacoes:null,
	ScrollBars:null,
	AjaxLinks:null,
	HTMLTemplates:null,
	Displays:null,
	Forms:null,
	TwitterTemplates:null,
	Legendas:null,
	Classes:{
		ToolBar:null,
		Painel:null,
		Paginacao:null,
		Switch:null,
		HTMLTemplate:null,
		AjaxLink:null,
		PopUp:null,
		BaseDisplay:null,
		FieldInstruction:null,
		ComboBox:null,
		TwitterTemplate:null,
		Legenda:null
		},
	draw:  function(event , vDOM){
		
		if (Suagencia.HTMLTemplates)
		{
				Suagencia.HTMLTemplates.config( event , vDOM );
				Suagencia.HTMLTemplates.draw( vDOM );
		}
		if(	Suagencia.TwitterTemplates )
			{Suagencia.TwitterTemplates.config( event , vDOM ); }

		if( !Prototype.Browser.IE && Suagencia.ScrollBars ) {
				Suagencia.ScrollBars.config( event, vDOM );
		}		
		
	

		if (Suagencia.AjaxLinks)
			{Suagencia.AjaxLinks.config( event , vDOM );}
		if (Suagencia.SwitchDisplays)
			{Suagencia.SwitchDisplays.config( event , vDOM  );}
		if (Suagencia.Paginacoes)
			{Suagencia.Paginacoes.config( event , vDOM  );}
		if(	Suagencia.Forms )
			{Suagencia.Forms.config( event , vDOM ); }
		if(	Suagencia.Legendas )
			{Suagencia.Legendas.config( event , vDOM ); }

			
			

		if( Prototype.Browser.IE && Suagencia.ScrollBars ) {
				Suagencia.ScrollBars.config( event, vDOM );
		}

		if (Suagencia.Paineis)
			{Suagencia.Paineis.config( event , vDOM );}

		if(	Suagencia.TwitterTemplates ){
			Suagencia.TwitterTemplates.items.each( 
				function (obj) {obj.value._firstRequest.bind(obj.value).defer()} 
			);
		}
	
		Suagencia.updateAnchors( vDOM );
		document.fire("suag:ready");

	},
	scrollTo: function( hashname )
	{
		window.location.hash = hashname
	    element = $(hashname);

		if( !element )
			{  element = $$("a[name=" + hashname + "]" ).toArray()[0] }
		
		if( Suagencia.ScrollBars && element )
		{
			var vScroll = element.up("[suag:objeto=scrollWrapper]")
			if (vScroll != undefined )
				{Suagencia.ScrollBars.items.get( vScroll.id ).updateScroll();}
		}

	    return element;
	},
	updateAnchors: function( vDOM )
	{

		if( vDOM )
		{
			vHost = location.protocol + "//" + location.host  + "/#"
			vAnchors = vDOM.select("a[href^=#], a[href^=" + vHost + "]");
		}
		else
			{vAnchors = $$("a[href^=#]");}

		var curLocation;
		if(location.href.match("#") )
			{curLocation = location.href.slice( 0, location.href.indexOf("#")) + "#";	}
		else
			{curLocation = location.href + "#" ;}

		vAnchors.each( function( el ) {
			if( el.hash != "" )
			{
				var mytarget = el.href.slice(  el.href.indexOf("#") + 1 );
				el.writeAttribute( {href:curLocation + mytarget} );
				el.observe( "click" , Suagencia.scrollTo.curry(mytarget) )
			}
		});
	},
	changeDefaultOptions: function ( newOptions )
	{
		this.defaultOptions.update( newOptions )
	},
	emptyfunction: function () {}
});

var Suagencia = new SuagenciaFramework

document.observe("dom:loaded", function() {setTimeout("Suagencia.draw()");} );