var hidden;
Preceptor.widget.use = {
 	setBannerAreas: function( cName , tag , o )
	{
	    	var divClass = YAHOO.util.Dom.getElementsByClassName(  cName , tag , document.body );
	    	for( var i = 0; i < divClass.length; i++ )
	    	{
	    		var attr = ( divClass[i].getAttribute( 'className' ) ) ? ( divClass[i].getAttribute( 'className' )  ) : ( divClass[i].getAttribute( 'class' ) );
	    		if( divClass[i].className.indexOf( "bannerAreasBlockAreas" ) == -1 )
	    		{
 	    			divClass[i].className = attr + " bannerAreasBlockAreas";
 	    			var position = divClass[i].getAttribute('position');
	    			if( divClass[i].id != "" )
	    			{
		    			var divSub = document.createElement( "DIV" );
		    			divSub.id = "replace_" + i;
		    			var href = "<a href='#' style='color:#000' onclick='Preceptor.widget.use.input( null  , { id: " + divClass[i].id + ", host:" + o.host + ", content: " + o.content + ", position:" + position + ", replace: 1 } );'>Trocar</a>";
		    			divSub.innerHTML =  href;
		    			divClass[i].parentNode.insertBefore( divSub , divClass[i].nextSibling );
	    			}
	    			YAHOO.util.Event.addListener( divClass[i] , "dblclick" , Preceptor.widget.use.input , { position: position , host: o.host , id: divClass[i].id , content: o.content , replace: 0 } );		
	    		}
	    		else
	    		{
	    			try{divClass[i].parentNode.removeChild( document.getElementById( "replace_" + i ) );}catch( e ){}
	    			divClass[i].className = attr.substr( 0 , attr.lastIndexOf( " " ) );
	    		}
	    	}
	},
	input: function( ev , param )
	{
		var id = ( param.id != "" ) ? ( "/id/" + param.id ) : ( "" );
		hidden = new Preceptor.util.Toggle( [ "files" , "scriptBind" ] , true );
		Preceptor.widget.use.box();
		new Preceptor.util.AjaxUpdate( 'lightbox' , param.host + "banner/input/content/" + param.content + "/position/" + param.position + "/replace/" + param.replace + id, { evalScripts: true } );
	},
	box: function( overlay  , url , div )
	{
		if( !overlay )
		{
			var height  = YAHOO.util.Dom.getClientHeight();
			var boxOverlay = document.createElement( "DIV" );
			boxOverlay.id = "overlay";
			boxOverlay.style.height =  height + "px";
			document.body.appendChild( boxOverlay );
		}
		if( document.getElementById( "lightbox" ))
			document.body.removeChild( document.getElementById( "lightbox" ) );
		
		var lightbox = document.createElement( "DIV" );
		lightbox.id = "lightbox";
		lightbox.style.left = ( YAHOO.util.Dom.getClientWidth() / 2 - 267 ) + "px";
		document.body.appendChild( lightbox );
		
		
		dd = new YAHOO.util.DD( 'lightbox' );
		dd.setHandleElId( 'drag' );
		
		var UploadValidate = new Validate();

		UploadValidate.addValidate( 'file' , UploadValidate.isnull , 'Campo obrigatório' , false );
	
		YAHOO.util.Event.on( 'formUpload' , 'submit' , function( ev ){
			
			if( !UploadValidate.verify( $('formUpload') ) )
			{
				YAHOO.util.Event.stopEvent( ev );
				return;
			}	
			new Preceptor.util.AjaxUpdate( div , URL + url , { formId:"formUpload" , isUpload:true } );
			document.getElementById('formUpload').reset();
			YAHOO.util.Event.stopEvent( ev );
		});
		YAHOO.util.Event.on( 'file' , 'keypress' , function( ev ){
			YAHOO.util.Event.stopEvent( ev );
		});
		return lightbox;
	},
	destroyBox: function()
	{
		document.body.removeChild( document.getElementById( "lightbox" ) );
		while( document.getElementById( "overlay" ) )
		{
			try{
				document.body.removeChild( document.getElementById( "overlay" ) );
			}catch(e){}
		}
	}
};

/**
 * Objeto de manipulacao para campos tipo text
 */
Preceptor.widget.use.Text = function( name , id , url ){
	
	var transform = function(){
		
		input = document.createElement("input");
		input.value = Preceptor.util.String.trim( $( id ).innerHTML );
		input.id = "input"; 
		input.style.width = "99%";
		
		$( id ).innerHTML = "";
		$( id ).appendChild( input ); 
		
		input.focus();
		
		var validate = new Validate();
		
		validate.addValidate( input.id  , validate.isnull , 'Campo obrigatório' , false );
		
		YAHOO.util.Event.on( input , "blur" , function(){
			if(  validate.verify( $('form') ) )
				save( input );
			
		});
		
		YAHOO.util.Event.on( input , "keypress" , function(ev){
			if ( YAHOO.util.Event.getCharCode(ev) == 13 )
			{
				if(  validate.verify( $('form') ) )
					save( input );
					
				YAHOO.util.Event.stopEvent(ev);
			}
		});
		
		YAHOO.util.Event.removeListener( id , "dblclick" );
		
	}
	
	var save = function( input ){
		if ( ! input.value )
			$( id ).innerHTML = "&nbsp;";
		
		else 
			$( id ).innerHTML = input.value;
		
		new Preceptor.util.AjaxSave( url , '&'+name+'=' + encodeURIComponent( input.value ) );
		
		Preceptor.util.Dom.removeElement( input.id );
		
		YAHOO.util.Event.on( id , "dblclick" , function(){
			transform()
		});
	}
	
	var url = url;
	var id = id;
	var name = name;
	
	YAHOO.util.Event.on( id , "mouseover" , function(){
		$( id ).style.background = "#DFEBFF";
	});
	
	YAHOO.util.Event.on( id , "mouseout" , function(){
		$( id ).style.background = "";
	});
	
	YAHOO.util.Event.on( id , "dblclick" , function(){
		transform()
	});
};

Preceptor.widget.use.Editor = function( name , id , url , toolbar ){
	
	var transform = function(){

		var input  = document.createElement("textarea");
		
		input.value = Preceptor.util.String.trim( $( id ).innerHTML );
		input.id = "input" + new Date().getTime();
		input.style.width = "100%";
		input.style.height = "100px";
		
		$( id ).innerHTML = "";
		$( id ).appendChild( input ); 
		
		(
			function() {
			    var Dom = YAHOO.util.Dom,
			        Event = YAHOO.util.Event,
			        status = null;
			
			    var myConfig = {
			        height: '300px',
			        width: '473px',
			        animate: false,
			        dompath: true,
			        focusAtStart: true
		        
			};
	
    		var myEditor = new YAHOO.widget.Editor( input.id , myConfig );
    
	    	myEditor.on('toolbarLoaded', function() { 
	       
		        var imgConfig = {
		            type: 'push', 
		            label: 'Inserir imagem', 
		            value: 'inserticon'
		           
		        };
	       		myEditor.toolbar.addButtonToGroup(imgConfig, 'insertitem');
	
	        	myEditor.toolbar.on('inserticonClick', function(ev) {
		            var div = Preceptor.widget.use.box(true , '/image/keep' , 'select' );
					div.style.border = 'solid 1px black';
					
					new Preceptor.util.AjaxUpdate( 'lightbox' , URL + "/image" );
					window.location = '#lightbox';
	        	}, myEditor, true);
	
	    	});
    
	    	myEditor.on('toolbarLoaded', function() { 
	       
		        var imgConfig = {
		            type: 'push', 
		            label: 'Inserir arquivo', 
		            value: 'file'
		           
		       	};
	        
	        	myEditor.toolbar.addButtonToGroup(imgConfig, 'insertitem');
	
		        myEditor.toolbar.on('fileClick', function(ev) {
		            var div = Preceptor.widget.use.box(true , '/file/keep' , 'filter' );
					div.style.border = ' solid 1px black';
		
					new Preceptor.util.AjaxUpdate( 'lightbox' , URL + "/file" );
					window.location = '#lightbox';
		        }, myEditor, true);
	
	    	});
    
	    	myEditor.on('toolbarLoaded', function() { 
		        var imgConfig = {
		            type: 'push', 
		            label: 'Salvar', 
		            value: 'save'
		           
		        };
		        
	        	myEditor.toolbar.addButtonToGroup(imgConfig, 'insertitem');
	
	        	myEditor.toolbar.on('saveClick', function(ev) {
		            YAHOO.util.Event.stopEvent( ev );
		        	myEditor.saveHTML();
		        
			        var data = '&'+name+'=' + encodeURIComponent(myEditor.get('textarea').value);
			        var request = YAHOO.util.Connect.asyncRequest( 'POST', url , {} , data );
					
					Preceptor.util.Dom.removeElement( input.id + "_container" );
					$( id ).innerHTML = input.value;
		        }, myEditor, true);
	
	    	});
	
	    	myEditor.render();

		})();
		
		//YAHOO.util.Event.removeListener( id , "dblclick" );
	}
	
	var url = url;
	var id = id;
	var name = name;
	var toolbar = toolbar;
	
	YAHOO.util.Event.on( id , "mouseover" , function(){
		$( id ).style.background = "#DFEBFF";
	});
	
	YAHOO.util.Event.on( id , "mouseout" , function(){
		$( id ).style.background = "";
	});
	
	YAHOO.util.Event.on( id , "dblclick" , function(){
		transform()
	});
};

Preceptor.widget.use.Date = function( name , id , url ){

	var transform = function(){
		
		input = document.createElement("input");
		input.value = Preceptor.util.String.trim( $( id ).innerHTML );
		input.id = "input"; 
		input.style.width = "90px";
		
		$( id ).innerHTML = "";
		$( id ).appendChild( input ); 
		
		hidden = document.createElement( "input" );
		hidden.type  = 'hidden';
		hidden.value = $( 'entered' ).innerHTML;
		hidden.id = "hidden"; 
		
		$( 'form' ).appendChild( hidden );
		
		input.focus();
		
		var mask = new Mask();
		var validate = new Validate();
		
		mask.init( input.id , mask , "00/00/0000" );
		if ( id == 'entered')
			validate.addValidate( input.id , validate.isnull , 'Campo obrigatório' , false );
			
		validate.addValidate( input.id , validate.data , 'Data inválida' );
		
		if ( input.value != "" ) 
			validate.addValidate( hidden.id , validate.dateDependency , 'Data inválida' , input.id );
		
		YAHOO.util.Event.on( input , "blur" , function(){
			if(  validate.verify( $('form') ) )
				save( input );
		});
		
		YAHOO.util.Event.on( input , "keypress" , function(ev){
			if ( YAHOO.util.Event.getCharCode(ev) == 13 )
			{
				input.focus();
				if(  validate.verify( $('form') ) )
					save( input );
				
				YAHOO.util.Event.stopEvent(ev);
			}
		});
		
		YAHOO.util.Event.removeListener( id , "dblclick" );
	}
	
	var save = function( input ){
	
		if ( input.value )
		{ 
			var datas = input.value.split("-");
			$( id ).innerHTML = datas[2] + "/" + datas[1] + "/" + datas[0];
		}

		new Preceptor.util.AjaxSave( url , name + "=" + input.value )
		
		Preceptor.util.Dom.removeElement( input.id );
		
		YAHOO.util.Event.on( id , "dblclick" , function(){
			transform()
		});
	}
	
	var url = url;
	var id = id;
	var name = name;
	
	YAHOO.util.Event.on( id , "mouseover" , function(){
		$( id ).style.background = "#DFEBFF";
	});
	
	YAHOO.util.Event.on( id , "mouseout" , function(){
		$( id ).style.background = "";
	});
	
	YAHOO.util.Event.on( id , "dblclick" , function(){
		transform()
	});
	
};