

var appsite = Class.create({
	
	initialize:function(){
		document.observe('dom:loaded',function(){
			AppSite.show_debug();
			
			
		});
		this.debug_texts=Array();
		this.mboxes=Array();
	},
	pathBase:function(){
		
		var dir = window.location.pathname.toString();
		actualdir='administrador';
		dir = dir.split('/');
		dir.shift();

		var path=new Array();
		while(dir.length){
			var curdir = dir.shift();
			if (curdir==actualdir) break;
			path.push(curdir);
		}
		if (path.length==0) return'';
		ipath = implode('/',path);
		
		return ipath;
	},
	submit:function(form){
		
		$(form).submit();
	},
	launch:function(funct){
		document.observe('dom:loaded',function(){
			eval(htmlspecialchars_decode(funct,'ENT_QUOTES'));	
		});
	},
	showConsult:function(){
		
		if (this.mboxes.length){
			var objBody = $$('body')[0];
			for(i=0;i<this.mboxes.length;i++){
				this.mboxes[i].render();	
			}
		}
	},
	close_consult:function(){
		$('messagebox').remove();
	},
	consult:function(texto){
		var div = new Element('div',{id: 'consult', className: 'consult'});
		var a = this.consult.arguments;
		var mbox = new messagebox(texto);
		if (a.length>1){
			for (i=1; i< a.length-1;i+=2){
				mbox.addButton(a[i],a[i+1]);	
			}
		}
		this.mboxes.push(mbox);
		document.observe('dom:loaded',function(){
			AppSite.showConsult();
		});
		
	},
	login:function(){
		$('loginpass').value=hex_md5($('loginpass').value);
		
		if ($('formulario')){
			
			$('formulario').submit();
		}
	},
	debug:function(texttodebug){
		this.debug_texts.push(texttodebug);
	},
	show_debug:function(){
		
		if (this.debug_texts.length==0) return false;
		var div = new Element('div',{id: 'debugger', className: 'debugger_container'});
			div.className='debugger_container';
			div.insert('<div style="display:block;">Debugging</div>');
		var closer = new Element('div',{id: 'debuggerx', className: 'debugger_closer'});
			closer.className='debugger_closer';
			closer.insert('X');
			closer.observe('click',function(){
					$('debugger').remove();
			});
			div.insert(closer);	
		var cont_container = new Element('div',{id: 'dbcc', className: 'debugger_content_container'});
			cont_container.className='debugger_content_container';
		for (i=0; i < this.debug_texts.length;i++){
			more = new Element('div',{className:'debugger_content'});
			more.className='debugger_content';
			more.insert(htmlspecialchars_decode(this.debug_texts[i]));
			cont_container.insert(more);
		}
		div.insert(cont_container);
		var objBody = $$('body')[0];
		objBody.appendChild(div);
	},
	centerFloating:function(_name,zndx){
		var qheight = Element.getHeight($(_name));
		
		var qwidth =  Element.getWidth($(_name));
		
		var bheight =(document.viewport.getHeight());
		
		var bwidth = (document.viewport.getWidth());
		var soff= (document.viewport.getScrollOffsets());
		qheight = (bheight-qheight)/2+soff[1];
		
		qwidth = bwidth/2-(qwidth/2)+soff[0];
		
		//style= ';top:'+querydims.height+'px;'+'left:'+querydims.width+'px;position:absolute;';
		if (qheight<120) qheight=120;
		
			 $(_name).setStyle({top:qheight+'px',
			 			left:qwidth+'px',
			 			position:'absolute',zIndex:zndx});
	}
	
});
AppSite = new appsite();


var appWins = Class.create({
	initialize:function(){
		this.wcontent=new Array();
		this.zIbase = 105;
	},
	tozTop:function(wind){
		
		for (var i = 0; i < this.wcontent.length;i++){
			var w = this.wcontent[i].id;
			if (w==wind){
				$(w).setStyle({zIndex:this.zIbase+this.wcontent.length+2});
			}
			else{
				$(w).setStyle({zIndex:this.zIbase+i});
			}
		}
	},
	locate:function(wind){
		var prev = null;
		
		for (var i = 0; i<this.wcontent.length;i++){
			
			var w = this.wcontent[i].id;
			
			if ((w==wind)&&(prev!=null)){
				 var _top = parseInt($(prev).getStyle('top'));
				 var _left = parseInt( $(prev).getStyle('left'));
				 
				 $(wind).setStyle({top:(_top+25)+'px',
		 			left:(_left+25)+'px'});
			}
			prev = wind;
			
		}
			
	},
	findWid:function(_wid){
			for (var i = 0; this.wcontent.length;i++){
				
				
				if (_wid == this.wcontent[i].id){
					return this.wcontent[i];
				}
			}
			return null;
	},
	createWind:function(content,winid,setx){
		
		var windex = this.zIbase+this.wcontent.length+2;//Siempre tiene que haber un margen para máscaras
		var wid = (typeof(winid)!=='undefined')?winid:'wn'+Math.ceil((Math.random()*100));
		wind = {id:wid,frame:content,zid:windex,position:'absolute',className:'siteWindow'}; 


		this.wcontent.push(wind);

		var tstyle="border-collapse:collapse;";
		
		
		var base = AppSite.pathBase();
		if (base!='') base ='/'+base;
		var pathimage=base+'/administrador/templates/ventanas/conmarco/clsw.png';
		
		var imageclose= new Element('div',{src:pathimage,style:"font-weight:bold;margin:0px;padding:4px;cursor:pointer;"});
			imageclose.innerHTML = 'X'
			imageclose.observe('click',function(){eval('AppWins.erase(\''+wid+'\');')})
			
		var divimageclose = new Element('div',{id:'img'+wid,className:'topSiteWindow',style:'position:relative;' +
				'width:100%;text-align:right;border:0px #c00 solid;'});
		//+(Element.getWidth($(content))+8)+
		if (typeof(setx)=='undefined') setx=true;
		if (setx)
		divimageclose.appendChild(imageclose);
		$(content).writeAttribute({windowid:wid});
		
		var windinner = new Element('div',{className:'siteInnerWind'});
			windinner.appendChild(divimageclose);
			windinner.appendChild($(content));
		
		
		var windcontainer=new Element('div',wind);
			
			windcontainer.appendChild(windinner);
		midstyle= 'width:'+(Element.getWidth($(content))-16)+'px;'+
			 	  'height:'+(Element.getHeight($(content))-8)+'px;';
		var objBody ;
		if(typeof(this.whereW)=='undefined')
		objBody = $$('body')[0];
		else objBody = $(this.whereW);
		
		objBody.appendChild(windcontainer);	 	  
		
		
		AppSite.centerFloating(wid,windex);
		/*
		$(wid).observe('click',function(){eval('AppWins.tozTop(\''+wid+'\');')});
		if(typeof(Draggable)!=='undefined')
			new Draggable($(wid));*/
		
	},
	erase:function(contWin){
		
		var wcont = this.wcontent;
		this.wcontent=Array();
		for (var i = 0; i<wcont.length;i++){
			if (wcont[i].id==contWin){
				
				if(typeof($(contWin).mask)!='undefined'){
					$($(contWin).mask).remove();
				}
				$(contWin).remove();
				
				 continue;
			}
			this.wcontent.push(wcont[i]);
		}
		return true;
		
	},
	getSpecialBodyWidth:function(_body){
		
	},
	getSpecialBodyHeight:function(_body){
		
	},
	redim:function(contentWindow){
		
		wn = ($(contentWindow));
		wind = this.findWid(contentWindow);
		
		if (wind==null) return;
		frmcont =$(wind.frame);
		var w,h;
		//Alternativa de cálculo de anchura
		var dbody = (frmcont.childNodes[0].contentDocument)?frmcont.childNodes[0].contentDocument.body:frmcont.document.body;
		
		var desc = $(dbody).descendants();
		var maxw = 0;
		var maxh = 0;
		for(var i=0;i<desc.length;i++){
			if(desc[i].getWidth){
				maxw = (maxw<(desc[i].getWidth()))?desc[i].getWidth():maxw;
			}
		}
		if (frmcont.document){
			h = Element.getHeight(frmcont.document.body);
			if (h>600) h=600;
		}
		else if(frmcont.childNodes[0].contentDocument){
			var bd = frmcont.childNodes[0].contentDocument.body;
			var doc = frmcont.childNodes[0].contentDocument;
			h = bd.getHeight();
			h = (bd.childNodes[1].getHeight()+30);
			//h = this.getSpecialBodyHeight(bd);
			//w = this.getSpecialBodyWidth(bd);
			if (w<600) w=750;
			
		}
		w=maxw;
		if (h<200) h=500; 
	
		//frame.pageXOffset MIRAR
		frmcont.setStyle({width:w+'px',height:h+'px'});
		frmcont.childNodes[0].setStyle({width:w+'px',height:h+'px'});
		 
		wn = (window.parent.$(contentWindow));
		
		tbcont = $('cont'+this.findWid(contentWindow).frame);
		tbcont.setStyle({width:(w-8)+'px',height:h+'px'});
		
		AppSite.centerFloating($(contentWindow));
		currentWindow=contentWindow;
		//new Draggable($(contentWindow));
		//this.locate(contentWindow);
	},
	loadIf:function(_src){
		var idc = Math.ceil((Math.random()*100));
		var frid = 'fr'+idc;
		var winid = 'wn'+idc;	
		var opts={frameBorder:0,border:0};
		var iframe=new Element('iframe',opts);
		Element.observe(iframe,'load',function(){eval('AppWins.redim(\''+winid+'\');')})
		iframe.src = _src;
		var div = new Element('div',{id:frid,className:'framebox',style:'width:50%;' +
				'background-image:url(templates/intranet/Images/loading.gif);' +
				'background-position:center center;background-repeat:no-repeat;' +
				'background-color:#fff;'});
		//Element.observe(iframe,'dom:loaded',function(){alert('frameloaded')})
		//iframe.observe('dom:loaded',function(){alert('frameloaded')});
		div.appendChild(iframe);
		document.body.appendChild(div);
		//AppSite.centerFloating($(frid));
		
		AppWins.createWind(frid,winid);
		
		AppSite.centerFloating($(winid));
		return winid;
	},
	loadImage:function(_src){
		var idc = Math.ceil((Math.random()*100));
		var frid = 'fr'+idc;
		var winid = 'wn'+idc;	
		
		var imag = new Element('img');
		Element.observe(imag,'load',(function(){
			AppSite.centerFloating($(winid));
			}).bind(winid));
		AppWins.createWind(imag,winid);
		
		imag.src=_src;
		
		
	},
	loadIfAction:function(action){
		var current = window.location;
		var uri_path = current.toString();
		var path = uri_path.split("?");
		//Obtenemos el elemento _file_
		var new_path=path[0]+'?'+action;
	
		return this.loadIf(new_path);
		
	},
	loadEmbeded:function(embed){
		
		var idc = Math.ceil((Math.random()*100));
		var frid = 'fr'+idc;
		var winid = 'wn'+idc;
		
		
		var div = new Element('div');
		div.innerHTML = embed;
		
		AppWins.createWind(div,winid);
		
		AppSite.centerFloating($(winid));
		
	},
	embed:function(options,_where){
		var _options = {dbtype:'mysql'};
		this.whereW = _where;
		options = Object.extend(_options,options);
		
		var query = new jsquery(options.dbtype);
		
		this._callback=this.loadEmbeded;
		
		query.loadEmbed(options,this);		
	},
	
	createWinContent:function(content,mask){
		var idc = Math.ceil((Math.random()*100));
		var frid = 'fr'+idc;
		var winid = 'wn'+idc;	
		AppWins.createWind(content,winid);
		AppSite.centerFloating($(winid));
		if((typeof(mask)!=='undefined')&&(mask==true)){
			var maskobj = AppSite.setModalMask();
			$(winid).mask = maskobj.id;
		}

		return winid;
	}
	
});
debugging=(document.location.host=='localhost')?true:false;
function instDebug(texto,zindx){
		if(!debugging)return ;
		if(typeof(zindx)=='undefined') zindx=111;
		if($('instdebug')==null){
			var div = new Element('div',{id:'instdebug'})
			var objBody = $$('body')[0];
			div.setStyle({position:'absolute',zIndex:100,top:0,left:0,border:'1px #cc0 solid'});
			var divX = new Element('div',{id:'closexx',style:"cursor:pointer;border:1px #ccc solid;background-color:#fff;float:right;padding:4px;"});
			divX.innerHTML ='x';
			divX.observe('click',function(){$('instdebug').remove();});
			div.appendChild(divX);
			objBody.appendChild(div);
			if(typeof(Draggable)!=='undefined')
			new Draggable(div);
		}
			var div = new Element('div',{id:'debugel'});
			div.setStyle({borderBottom:"1px #ccc solid",backgroundColor:'#f0f0f0'});
			
			div.innerHTML = texto;
		$('instdebug').insert(div);
		
}

var movhintC = Class.create({
	initialize:function(_element,_text){
		this.element= _element;
		this.text = _text;
		this.setHint();
		this.element.observe('mouseout',(function(){
			if($(this.hintid)!=null)
			$(this.hintid).remove();
		}).bind(this));
	},
	setHint:function(){
		var offset = this.element.cumulativeOffset();
		var nid;
		do { nid = Math.random(1,200)+'hint'}while($(nid)!=null);
		var hint = new Element('div',{id:nid,style:'border:1px #ccc solid;background-color:#e8e8e8;'
			+'padding:3px;font-size:10px;font-family:Verdana;z-index:120;position:absolute;top:'+(offset[1]-20)+'px;left:'+offset[0]+'px;'}
		);
		hint.innerHTML = this.text;
		document.body.appendChild(hint);
		this.hintid = nid;
	}
	
});
AppWins = new appWins();

var hint_timer;
function _show_hint(){
	var div = $('hint_div');
	if (div!==null)
	div.style.display='inline';
}
function show_hint(tag, e,hint){
		e = fixE(e);
		
		var div = $('hint_div');
		var created = false;
		if (div==null){
			div = document.createElement('div');
			div.id = 'hint_div';
			created = true;
		}
		div.innerHTML=hint;
		posxy = mousePosition(e);
		var mLeft=posxy[0];var mTop=posxy[1];
		var dLeft=$(document).viewport.getWidth();
		var dTop=$(document).viewport.getHeight();
		var margin = 15;
		var Sty={display:'none',position:'absolute',zIndex:11,
				fontSize:'11px',
				fontFamily: "Verdana, Arial, Helvetica, sans-serif",color:"#333333",padding:'5px',
				border:"1px #888888 solid", backgroundColor:"#f0f0f0"};
		Element.setStyle(div,Sty);
		
		if (created){
			document.body.appendChild(div);
		}
		
		if(mLeft && mTop){
			var dW=$(div).getWidth();var dH=$(div).getHeight();var nTop=mTop+margin;var nLeft=mLeft+margin;
			var chTop=false;var chLeft=false;
			if(dW+mLeft+margin>dLeft){
				nLeft = mLeft-dW-margin;
				chLeft=true;
			}
			if (dH+mTop+margin>dTop){
				nTop= mTop-dH-margin;
				chTop=true;
			}
			Element.setStyle(div,Object.extend(Sty,{top:nTop+'px',left:nLeft+'px'}));
				 
			
				 
			
		}
		
		
		setTimeout(_show_hint,500);
		tag.onmouseout=hide_hint;
}
function hide_hint(){
	var hint = $('hint_div');
	if (hint !=undefined){
		del_DOM_element(hint);
	}	
}
function getObject(obj){
	
	var el = isIE ? eval('document.all.'+obj) : document.getElementById(obj);
	return el;
}
