var isOpera = (navigator.userAgent.indexOf('Opera') != -1);
var isIE = (!isOpera && navigator.userAgent.indexOf('MSIE') != -1);
var isNN=(navigator.appName=="Netscape")?1:0;
var messagebox =Class.create({
	initialize:function(_message,_type,mmask,_nobutton){
		
		this.message = _message;
		this.buttons=Array();
		
		this.type = (typeof(_type)=='undefined')?'warning':_type;
		this.nobutton = (typeof(_nobutton)!=='undefined')?_nobutton:false;
		if((typeof(mmask)!=='undefined')&&(mmask))
			AppAdmin.set_modal_mask();
		
		
	},
	addButton:function(_name,action){
		
		this.buttons.push({nombre:_name,accion:action,type:"button"});
	},
	addInput:function(_name,_defval){
		if(typeof(_defval)=='undefined') _defval = "";
		this.buttons.push({nombre:_name,defval:_defval,type:"input"});
	},
	close:function(){
		this.container.remove();
	},
	renderButton:function(button){
		var tagbtn = new Element('div',{id:button.nombre,className:"msgbox_btn"});
			tagbtn.insert('<a href="javascript:void(0);">'+button.nombre+'</a>');
			tagbtn.observe('click',(button.accion));
			this.button_cont.insert(tagbtn);
	},
	renderInput:function(button){
		var tagbtn = new Element('input',{id:button.nombre,name:button.nombre,className:""});
			tagbtn.value = button._defval;
			this.button_cont.insert(tagbtn);
	},
	render:function(){
		
		if ((this.buttons.length==0)&&(this.nobutton==false)){
			this.addButton('Aceptar',this.close);
		}
		var div = new Element('div',{id: 'messagebox', className: 'messagebox'});
			
			div.setStyle({zIndex:110});
			pathimage=gicspath+'/system/images/messagebox_'+this.type+'.png';
			div.insert('<div class="messagebox_image">' +
					'<img src="'+pathimage+'" style="margin-right:10px;margin-bottom:10px;">' +
					'</div>');
			
			div.insert('<div class="messagebox_message">'
						+(this.message)+'</div>');
			
		this.button_cont = new Element('div',{id:'buttonscont',className:"msgbox_btn_cont"});
		for(i=0; i<this.buttons.length;i++){
			switch(this.buttons[i].type){
				case "button":
					this.renderButton(this.buttons[i]);
					break;
				case "input":
					this.renderInput(this.buttons[i]);
					break;
			}
			
			
		}
		div.insert(this.button_cont);
		var objBody = $$('body')[0];
		objBody.appendChild(div);
		this.container=div;
		AppSite.centerFloating('messagebox');
	
			
	},
	close:function(){
		var mask = $('downmask');
		if(mask!=null)mask.remove();
		$('messagebox').remove();
	},
	hide:function(){
		
		this.container.hide();
	}
	
	

});

var appsite = Class.create({
	
	initialize:function(){
		document.observe('dom:loaded',function(){
			AppSite.show_debug();
			
			
		});
		this.debug_texts=Array();
		this.mboxes=Array();
	},
	getDocHeight:function(){
		if(window.innerHeight){
			return window.innerHeight;
			
		}
		if(document.documentElement){
		return document.documentElement.clientHeight;
		}
		return document.body.clientHeight; 	
	},
	set_modal_mask:function(){
		modal_down_div = document.createElement('div');
		modal_down_image=gicspath+'/system/images/maskBG.png';
		var scroll=document.viewport.getScrollOffsets();
		
		var winW = document.viewport.getWidth();
		var winH = this.getDocHeight();
		
		
		modal_down_div.id="downmask";       //give id to it
		if (isIE){	
			modal_down_div.style.cssText='top:0px;left:0px;';
			modal_down_div.style.opacity= ".4";
			modal_down_div.style.filter= 'alpha(opacity=60)';
			modal_down_div.style.backgroundColor='#000';
			modal_down_div.style.width=winW; 
			modal_down_div.style.height=winH;
			modal_down_div.style.position = 'absolute';
			modal_down_div.style.zIndex=70;
		}else{
			modal_down_div.setAttribute('style','position:absolute;top:0px;left:0px;z-index:70;opacity: 0.7;-moz-opacity:0.7;');
			modal_down_div.style.width=winW+'px';
			modal_down_div.style.height=(winH+scroll[1])+'px';
			modal_down_div.style.color="rgba(0, 0, 0)";
			modal_down_div.style.backgroundColor='#000';
			modal_down_div.style.backgroundImage="url('"+modal_down_image+"')";
			modal_down_div.style.backgroundRepeat = "repeat";
			modal_down_div.style.border='0px #cccccc solid';
			//modal_down_div.style.top=
		}
		modal_down_div.style.visibility = "visible";
		//finally add the div id to ur form
		document.observe('onscroll',function(){
			if($('downmask')){
				var scroll=document.viewport.getScrollOffsets();
				$('downmask').setStyle({top:scroll[0]+'px'});
			}
			}
			);
		
		 
		
		document.body.appendChild(modal_down_div);
		return modal_down_div;
	},
	submit:function(form){
		alert($(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(){
			AppAdmin.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);
		
	},
	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;
	},
	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();
//*ADDING METHODS*/

Element.addMethods({
	  clone: function(element) {
	alert(element);	
	if($(element).cloneNode!==undefined){
	    var clone = $(element).cloneNode(true);
	    $(clone).select('*[id]').concat(clone).invoke('writeAttribute', { id: null });
	    return clone;
		}
		return element;
	  }
	});
//ROUND TABLES
var rtables=Class.create({
	
	create:function(search,search2,which){
		var found =search;
		
//		if(!Object.isString(search))
			found=($$(search));
			
		this._search=search2;
		if(!Object.isArray(search)){this.setBox(which,found);}
		else
		for(var i=0;i<found.length;i++){
			this.setBox(which,found[i]);	
		}
	},
	setBox:function(which,where){
		var ext = '.gif';
		
		var content =Element.clone($(where),true);
		
		$(content).removeClassName(this._search);
		
		var newContent=new Element('div',{className:'ventana '+which});
		var abst = new Element('div',{className:'vabst'});
		$(abst).appendChild((new Element('div',{className:'v-top-r'})));

		var absb = new Element('div',{className:'vabsb'});
		var btm = (new Element('div',{className:'v-bottom'}));
		btm.appendChild((new Element('div',{className:'v-bottom-r'})));
		btm.appendChild((new Element('div',{className:'v-bottom-l'})));
		
		$(newContent).insert(abst);
		$(content).addClassName('innervent');
		$(newContent).insert(content);
		$(absb).insert(btm);
		$(newContent).insert(absb);
		Element.replace($(where),$(newContent));
		
	},
	createBox:function(content,which){
		
		var ext = '.gif';
//		$(content).removeClassName(this._search);
		
		var newContent=new Element('div',{className:'ventana '+which});
	
		$(newContent).insert(content);
		$(content).addClassName('vinner');
		
		var right= (new Element('div',{className:'v-r'}));
		$(right).insert((new Element('div',{className:'v-top-r'})));
		var mmid = (new Element('div',{className:'v-mid-r'}))
		$(right).insert(mmid);
		$(newContent).insert(right);
		var btm = (new Element('div',{className:'v-bottom'}))
		btm.appendChild((new Element('div',{className:'v-bottom-l'})));
		var btmm=(new Element('div',{className:'v-bottom-m'}));
		btm.appendChild(btmm);
		btm.appendChild((new Element('div',{className:'v-bottom-r'})));
		$(newContent).insert(btm);
		$(content).addClassName('innervent');
		$(newContent).resize = this.resizeBox;
		$(newContent).mmid = mmid;
		$(newContent).btmm = btmm;
		
		return $(newContent);
		

	},
	resizeBox:function(){
		this.btmm.setStyle({width:(this.getWidth()-20)+'px'});
		this.mmid.setStyle({height:(this.getHeight()-15)+'px'});
	},
	insertChilds:function(element,childs){
		for(var i=0;i<childs.length;i++){
			if (i==0) alert(childs[i]);
			element.insert(childs[i]);
		}
	}
	
	
});
RTables = new rtables();
document.observe('dom:loaded',function(){
			
//			RTables.create('.vcleargrey','vcleargrey','vccc');		
//			RTables.create('.vgris','vgris','vgrey'); 
//			RTables.create('.vroja','vroja','vred');
//			
			
		});


