
var dmenu = new Class({Implements:Options,
		options: {	openDelay:150,
					closeDelay:500,
					link:'cancel',
					transition:Fx.Transitions.Linear,
					duration:250,
					floated:'left',
					bybase: 0
					},
		initialize: function(a,b){
			this.menu=a;
			this.setOptions(b);
			if(Browser.Engine.webkit){ window.addEvent('domready', this.domReady.delay(200,this))}
			else{ window.addEvent('domready', this.domReady.bind(this))}
		},
		domReady: function(){
			this.menu = $(this.menu);
			if(!$defined(this.menu))return false; 
			if(this.menu.get('tag')!='ul'){
				this.menu=this.menu.getElement('ul');
				if(!$defined(this.menu))return false;
			}
			this.menu.setStyles({visibility:'hidden',display:'block',overflow:'hidden',height:0,marginLeft:(Browser.Engine.trident?1:-1)});
			this.createSubmenu(this.menu);
			
			this.menu.getChildren('li').setStyles({'float':this.options.floated, display:'block',top:0});

			var a=new Element('li',
													{	html:"&nbsp;", 
														styles:{
															clear:'left', display:(Browser.Engine.trident?'inline':'block'), position:'relative',
															top:0,height:0,width:0,fontSize:0,lineHeight:0,margin:0,padding:0
														}
													}).inject(this.menu);
			this.menu.setStyles({height:'auto', overflow:'visible', visibility:'visible'});
			this.menu.getElements('a').setStyles({'display':(Browser.Engine.trident?'inline-block':'block')});
		},
		createSubmenu:function(c){
			var d = c.getChildren('li');
			var f = 0;
			//var corr = (Browser.Engine.trident?0:10);
			var corr = (Browser.Engine.trident?-2:9);
			var w = 0;

			d.each(
				function(a){
					
					a.setStyles({position:'relative', display:'block', top:-f, zIndex:1});
					f += a.getSize().y;
					var b=a.getFirst('ul');
					
					if($defined(b)){
						
						if(this.options.bybase > 0){
							w = this.options.bybase;
							b.setStyle('width', this.options.bybase); 
						}else{
							//var w = 0;
							w = 0;
							b.getChildren('li').each( function(ch){ ch.getChildren('a').each(function(cha){ var chax=cha.getSize().x; if(w<=chax) w=chax; }, this)}, this);
							b.getChildren('li').each( function(ch){ch.setStyle('width',w);},this);
						}
						
						c.getElements('ul').setStyle('display','none');

						if(c==this.menu){
							a.addClass('submenu-down');
							var x=0;
							var y=a.getSize().y+corr;
							this.options.link='cancel';
							a.store('animation', new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0), this.options));
						}else{
							a.addClass('submenu-left');
							var x=a.getSize().x-(!Browser.Engine.trident?2:1)*a.getStyle('border-left-width').toInt();
							var y=-a.getStyle('border-bottom-width').toInt();
							this.options.link='chain';
							a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options));
							f=a.getSize().y+a.getPosition(this.menu).y;
						}
						b.setStyles({position:'absolute',top:y,opacity:0});
						c.getElements('ul').setStyle('display','block');
						b.setStyles({left:x,marginLeft:-x});
						
						this.createSubmenu(b);
						a.addEvent('mouseenter',function(){$clear(a.retrieve('closeDelay'));a.store('openDelay',this.showChildList.delay(this.options.openDelay,this,a))}.bind(this));
						a.addEvent('mouseleave',function(){$clear(a.retrieve('openDelay'));a.store('closeDelay',this.hideChildList.delay(this.options.closeDelay,this,a))}.bind(this));
					}
				}, 
				this);
		},
		showChildList:function(b){
			var c=b.getFirst('ul');
			var d=$$(c.getChildren('li'));
			var e=b.retrieve('animation');
			
			if(b.getParent('ul')!=this.menu){
				e.cancel();
				var f={0:{opacity:1},1:{opacity:1}};
				f[0]['marginLeft']=0;
				e.start(f);
				var g={};
			}else{
				var g={0:{opacity:1}};
			}
			
			d.each(function(a,i){g[i+1]={top:0, opacity:1}});
			b.setStyle('z-index', 99);
			e.start(g);
		},
		hideChildList:function(b){
			var c=b.retrieve('animation');
			var d=b.getFirst('ul');
			var e=$$(d.getChildren('li'));
			var f=0;
			var g={};
			e.each(function(a,i){g[i+1]={top:-f,opacity:0};f+=a.getSize().y});
			b.setStyle('z-index',1);
			if(b.getParent('ul')!=this.menu){
				g[1]=null;
				c.cancel();
				c.start(g);
				var h={0:{opacity:0},1:{opacity:0}};
				h[0]['marginLeft']=-d.getSize().x;
				c.start(h);
			}else{
				g[0]={opacity:0};c.start(g)
			}
		}
});


var ta = new Class({Implements:Options,
		options: {},
		initialize: function(a, b, c){
			this.t = a;
			this.cc = b;
			this.max = c;
			//this.setOptions(c);
			if(Browser.Engine.webkit){ window.addEvent('domready', this.domReady.delay(200,this)); } else { window.addEvent('domready', this.domReady.bind(this)); }
		},
		domReady: function(){
			this.t = $(this.t);
			this.cc = $(this.cc);
			if(!$defined(this.t))return false; 
			if(!$defined(this.cc))return false; 
			if(this.t.get('tag')!='textarea'){
				this.t = this.t.getElement('textarea');
				if(!$defined(this.t))return false;
			}
			this.setevents(this.t, this.cc, this.max);
		},
		setevents: function(t, cc, max){
			cc.innerHTML = '('+ 0 +' / '+ max +')';
			t.addEvent('keyup', function() {
				cv	= t.value; cl = cv.length;
				rm = max - cl;
				cc.innerHTML = '('+ cl +' / '+ rm +')';
				
				if (rm > 25) { cc.setStyle('color', '#330000'); }
				else if(rm < 25 && rm > 0){ cc.setStyle('color', '#990000'); } 
				else { 
					cc.setStyle('color', 'blue'); 
					t.set("value", t.get("value").substring(0, max)); 
				}
			});
		}
});

var autoform = new Class({Implements:Options,
		options: {},
		initialize: function(a,b){
			this.frm = a;
			this.setOptions(b);
			if(Browser.Engine.webkit){ window.addEvent('domready', this.domReady.delay(200,this)); } else { window.addEvent('domready', this.domReady.bind(this)); }
		},
		domReady: function(){
			this.frm = $(this.frm);
			if(!$defined(this.frm))return false; 
			if(this.frm.get('tag')!='form'){
				this.frm = this.frm.getElement('form');
				if(!$defined(this.frm))return false;
			}
			this.autosubmit(this.frm);
		},
		autosubmit: function(frm){
			frm.submit();
		}
});

var ctree = new Class({Implements:Options,
		options: {	
							collapse:"COLLAPSE",
							expand:"EXPAND"
						},
		initialize: function(a,b){
			this.tree = a;
			this.level = 0;
			this.setOptions(b);
			if(Browser.Engine.webkit){ window.addEvent('domready', this.domReady.delay(200,this)); } else { window.addEvent('domready', this.domReady.bind(this)); }
		},
		domReady: function(){
			this.tree = $(this.tree);
			if(!$defined(this.tree))return false; 
			if(this.tree.get('tag')!='ul'){
				this.tree = this.tree.getElement('ul');
				if(!$defined(this.tree))return false;
			}
			this.lock(this.tree);
		},
		lock: function(ul){
			//some
		},
		tog: function(im){
			im = $(im);
			var ul = im.retrieve('ul');
			
			if(!$defined(ul)){
				ul = im.getParent('li').getFirst('ul');
				if($defined(ul)){
					im.store('ul',ul);
				}else{
				 return false;
				}
			}
			
			if (ul.getStyle("display") == "none") {
				im.set("class","openfolder").setProperty("alt", this.options.collapse);
				ul.setStyle("display", "");
			}else{
				im.set("class","folder").setProperty("alt", this.options.expand);
				ul.setStyle("display", "none");
			}
			
		}
});
