//visualizations
function display() {
	var self=this;
	self.set_display=function(el,cont,mode) {
		$(el,cont).style.display=mode;
	}
	self.cset_display=function(el,cont,mode,cel,ccont,cmode) {
		var cond=$(cel,ccont);
		if (cond.display==cmode) self.set_display(el,cont,mode);
	}
	self.show=function(el,cont,mode) {
		if (!mode) mode='block';
		self.set_display(el,cont,mode);
	}
	self.hide=function(el,cont) {
		self.set_display(el,cont,'none');
	}
	self.swap=function(elid,cont,mode) {
		if (!mode) mode='block';
		var el=$(elid,cont);
		if (el.style.display==mode || el.style.display=='') self.hide(elid,cont);
		else self.show(elid,cont,mode);
	}
	self.swap2=function(el1,el2,td) {
		if (!td) td='block';
		if (el1.style.display=='none') {
			el1.style.display=td;
			el2.style.display='none';
		}
		else {
			el2.style.display=td;
			el1.style.display='none';
		}
	}
	self.smart_swap=function(el) {
		var el1=$(el+"_idle");
		var el2=$(el+"_active");
		if (el1.style.display=='none') {
			el1.style.display=el2.style.display;
			el2.style.display='none';
		}
		else {
			el2.style.display=el1.style.display;
			el1.style.display='none';
		}
	}
	self.radioCheck=function(obj,tarObj,mode) {
		if (!mode) mode='block';
		if (tarObj) {
			obj.checked ? tarObj.style.display=mode : tarObj.style.display='none';
		}
		return obj.checked;
	}
	self.selectCheck=function(obj,tarObj,val,mode) {
		if (!mode) mode='block';
		if (tarObj) {
			obj.value==val ? tarObj.style.display=mode : tarObj.style.display='none';
		}
		return obj.value;
	}
	self.radioSwap=function(obj) {
		if (obj.checked==true) obj.checked=false;
		else obj.checked=true;
	}
	self.swapImage=function (elem) {
		image=elem;
		current=image.src;
		image.src=image.name;
		image.name=current;
	}
	self.swapClass=function(elem,class1,class2) {
		if (!class2) class2='';
		if (elem.className==class2) elem.className=class1;
		else elem.className=class2;
	}
	self.reset_and_highlight=function(cont,tagname,toh,cIdle,cActive) {
		var alltag=getTags(tagname,cont);
		for (i=0; i<alltag.length;i++) {
			var currel=alltag[i];
			currel.className=cIdle;
			if(currel.id==toh) currel.className=cActive;
		}
	}
	self.rah=self.reset_and_highlight;
	self.resize=function(el,x,y) {
		if (x) 	$(el).style.width=x+"px";
		if (y) 	$(el).style.height=y+"px";
	}
	self.resize_from_client=function(el,ox,oy) {
		ox ? x=+ox : x=false;
		oy ? y=document.body.clientHeight+oy : y=false;
		self.resize(el,x,y);
	}
}
d=new display();

interactive_inputs=function(cont) {
	var self=this;
	var cont=cont;
	self.opt=Array();
	self.clicked=false;
	self.opt.autoselect		=	true;
	self.opt.idleClassname	=	'inputIdle';
	self.opt.idleEmptyClassname	=	'inputIdleEmpty';
	self.opt.hoverClassname	=	'inputOver';
	self.opt.activeClassname	=	'inputActive';
	self.make_interactive_input=function(elem) {
		if (elem.value!='') elem.className=self.opt.idleClassname;
		else elem.className=self.opt.idleEmptyClassname;
		elem.onmouseover=function() { 
			if (this.id!=self.clicked) this.className=self.opt.hoverClassname;
		};
		elem.onmousedown=function() {
			this.className=self.opt.activeClassname;
			self.clicked=this.id;
		};			
		elem.onfocus=function() {
			self.clicked=this.id;
			this.className=self.opt.activeClassname;
			try{
				if (self.opt.autoselect) this.select();
			}
			catch (e) {};
		};			
		elem.onmouseout=function() {
				if (this.id!=self.clicked) {
					if (this.value!='') this.className=self.opt.idleClassname;
					else this.className=self.opt.idleEmptyClassname;
				}
			};	
		elem.onblur=function() { 
			if (this.value!='') this.className=self.opt.idleClassname;
			else this.className=self.opt.idleEmptyClassname;
			self.clicked=false;
		};
	};
	self.init=function(cont) {
		var inputs=getTags("input",cont);
		var textareas=getTags("textarea",cont);
		//alert(inputs.length);
		for (i=0;i<inputs.length;i++) {
			if (inputs[i].type=='checkbox' || inputs[i].type=='radio') {}
			else if (inputs[i].type!='button' &&
				 inputs[i].type!='submit' &&
				 inputs[i].type!='file' &&
				 inputs[i].type!='reset'
				)  self.make_interactive_input(inputs[i]);
		} 
		for (i=0;i<textareas.length;i++) {
			 self.make_interactive_input(textareas[i]);
		}
	}
	self.init(self.cont);
}
welcome_handler=function (page,cont,shell,fader,welcome_flag,dcall) {
	shell.getOnly(page,cont);
	var self=this;
	self.cont=cont;
	self.fader=fader;
	self.index=1;
	self.deactivate_call=dcall;
	self.show=function(id) {
		self.resetall();
		self.index==1 ? d.hide('welcome_navigator') : d.show('welcome_navigator');
		d.show(cont+"_"+id);
		self.index=id;
		self.fader.IN(cont+"_"+id,90,true);
	}
	self.next=function() {
		self.index++;
		self.show(self.index);
	}
	self.prev=function() {
		self.index--;
		if (self.index<1) self.index=1;
		self.show(self.index);
	}
	self.close=function() {
		d.hide(self.cont);
	}
	self.deactivate=function() {
		eval(self.deactivate_call);
		self.close();
	}
	self.resetall=function() {
		var allla=getTags("form",self.cont);
		for (i=0; i<allla.length; i++) {
			var currel=allla[i];
			if (!currel.id) currel.id=cont+"_"+(i+1);
			currel.style.display='none';
		}
	}
	if (welcome_flag!='y') {
		self.close();
		return true;
	}
	self.resetall();
	self.show(self.index);
}


function data_generator() {
	var s=this;
	s.generate_user=function(str) {
		var username_s='';
		var vocals="'abcdefghilmnopqrstuvzwxyj_";
		splitted=str.split('');
		for ( i in splitted) {
			if(vocals.indexOf(splitted[i])!=-1) username_s+=splitted[i];
		}
		if (username_s.length>6) username_s=username_s.substr(0,6);
		if (username_s.length<6) username_s+=s.generate_pass(6-username_s.length);
		return username_s;
	}
	s.generate_pass=function() {
		var trt=String(Math.floor(Math.random()*1000))+String(Math.floor(Math.random()*1000));
		trt=trt.substr(0,7);
		return trt;
	}
	s.generate_credentials=function(u_id,u_tg_id,p_tg_id) {
		$(u_tg_id).value=s.generate_user($(u_id).value);
		$(p_tg_id).value=s.generate_pass();
	}
		
}
credentials=new data_generator();

function admin_core () {
	that=this;
	that.autoNewPass=function() {
		var newPass=generateRandomPass();
		document.getElementById('autoPass').innerHTML=newPass;
		document.getElementById('autoPass_user').style.display="inline";
	};
	that.useNewPass=function() {
		var newPass=document.getElementById('autoPass').innerHTML;
		document.getElementById('pass').value=newPass;
		document.getElementById('pass2').value=newPass;
	}	
	that.checkPass=function(f1,f2,imgok,imgko) {
		if (getEl(f1).value==getEl(f2).value) {
			getEl(imgok).style.display='inline';
			getEl(imgko).style.display='none';		
		}
		else {
			getEl(imgok).style.display='none';
			getEl(imgko).style.display='inline';		
		}
	}
}
admin=new admin_core;





menu_handler=function(idcont,tagel) {
	var self=this;
	if (!tagel) tagel="a";
	self.tagel=tagel;
	self.idcont=idcont;
	self.reset=function() {
		var labels=getTags(self.tagel,self.idcont);
		for (var i=0;i<labels.length;i++) {
			var currel=labels[i];
			currel.className='';
		}
	}
	self.highlight=function(idth) {
		self.reset();
		var th=$(idth);
		th.className="hover";
	}
}

	
list_order_handler=function() {
	var self=this;
	var labsph;
	var listph;
	self.init=function(labs,list,container) {
		labsph=labs;
		listph=list;
		self.hcolor="#f6f9fa";
	}
	self.highlight=function(tit,verse) {
		var verse=verse.toUpperCase();
		var labs=$(labsph);
		var alla=labs.getElementsByTagName("a");
		var curr_index;
		for (i=0;i<alla.length;i++) {
			var currel=alla[i];
			currel.className=currel.className.replace(/ order_ASC/i,"");
			currel.className=currel.className.replace(/ order_DESC/i,"");
			if (currel.rel==tit) {
				var curr_index=i;
				currel.className+=' order_'+verse;
			}
		}
		//self.highlight_list(curr_index);
	}
	self.highlight_list=function(index) {
		if (index) {
			var alla=self.list.getElementsByTagName("ul");
			for (i=0;i<alla.length;i++) {
				var currel=alla[i];
				var th=currel.getElementsByTagName("li")[index];
				th.style.background=self.hcolor;
			}
		}
	}
}
order_handler=new list_order_handler();



function labels_handler(container) {
	var self=this;
	self.container=container;
	self.opt=Array();
	self.opt.labels=Array();
	self.opt.labels.container_id='cardLabels';
	self.opt.labels.tagName='a';
	self.opt.labels.active_className='cardLabelsActive';
	self.opt.labels.idle_className='cardLabelsIdle';
	self.opt.data_container_classname='armonium';
	self.make=function() {
		self.labels_container=$(self.opt.labels.container_id,self.container);
		self.labels=self.labels_container.getElementsByTagName(self.opt.labels.tagName);
		for (var i=0;i<self.labels.length;i++) {
			var currel=self.labels[i];
			currel.onclick=function() {
				self.open(this);
				return false;
			}
		}
	}
	self.open=function(label_obj) {
		self.hide_all();
		d.show(label_obj.target,self.container,"inline-block");
		label_obj.className=self.opt.labels.active_className;
	}
	self.close=function(label_obj) {
		d.hide(label_obj.target,self.container);
		label_obj.className=self.opt.labels.idle_className;
	}
	self.hide_all=function() {
		for (var i=0;i<self.labels.length;i++) {
			var currel=self.labels[i];
			self.close(currel);
		}
	}
	self.init=function() {
		self.make();
		self.hide_all();
		self.open(self.labels[0]);
	}
	self.init();
}

function view_handler() {
	var self=this;
	self.mode='detailed';
	self.set=function(mode) {
		self.mode=mode;
	}
	self.apply=function(listObj) {
		var list=$(listObj);
		list.className+=' '+self.mode;
	}
}
view=new view_handler;


function shower(copt) {
	var self=this;
	self.index=Array();
	self.current=0;
	var opt={
		trigger_cont : false,
		trigger_tag : false,
		content_cont : false,
		content_tag : false,
		trigger_default_class : false,
		trigger_idle_class : false,
		trigger_selected_class : false,
		content_default_class : false,
		content_idle_class : false,
		content_selected_class : false,
		navigator_cont : false,
		navigator_next : false,
		navigator_prev : false,
		tab_callback : Array()
	}
	self.tab_callbacks=Array();
	opt.focus_trigger_callback=function(t) {
		t.className=opt.trigger_selected_class;
	}
	opt.focus_content_callback=function(t) {
		if (!document.all) fader.set_alpha(t.id,0);
		t.style.display='block';
		if (!document.all) 	fader.IN(t.id);
	}
	opt.unfocus_trigger_callback=function(t) {
		t.className=opt.trigger_idle_class;
	}
	opt.show_prev_callback=function() {
		$(opt.navigator_prev).style.display='block';
	}
	opt.show_next_callback=function() {
		$(opt.navigator_next).style.display='block';
	}
	opt.hide_prev_callback=function() {
		$(opt.navigator_prev).style.display='none';
	}
	opt.hide_next_callback=function() {
		$(opt.navigator_next).style.display='none';
	}
	opt.unfocus_content_callback=function(t) {
		t.style.display='none';
	}
	opt.show_navigator_callback=function() {
		d.show(opt.navigator_cont);
	}
	opt.hide_navigator_callback=function() {
		d.hide(opt.navigator_cont);
	}
	self.navigator_check=function(tsw) {
		if (tsw==0) opt.hide_prev_callback();
		else  opt.show_prev_callback();
		if (tsw==self.index.length-1) {
			opt.hide_next_callback();
			if (opt.save_callback) d.show(opt.navigator_save);
		}
		else opt.show_next_callback();
	}
	for (key in copt) opt[key]=copt[key];
	self.get_index=function() {
		var ct=$$(opt.trigger_cont,opt.trigger_tag,opt.trigger_default_class);
		var trt=Array();
		for (var k in ct) self.index[self.index.length]=ct[k].id;
		return true;
	}
	self.get_data=function(stuff) {
		var trt=Array();
		 if (Number(stuff)== stuff) {
			 trt[0]=stuff;
			 trt[1]=self.index[stuff];
		 }
		 else {
			 for (var k in self.index) {
				 if (self.index[k]==stuff) trt[0]=k;
			 }
			 trt[1] = stuff;
		 }
		 return trt;
	}
	self.show=function(stuff,noreset) {
		if (!noreset)	self.reset();
		var tsw=self.get_data(stuff);
		if (opt.navigator_cont) {
			self.navigator_check(tsw[0]);
			opt.show_navigator_callback();
		}
		self.current=tsw[0];
		opt.focus_trigger_callback( $(tsw[1], opt.trigger_cont),opt);
		opt.focus_content_callback( $(tsw[1]+"_content",opt.content_cont),opt);
		try {
			self.tab_callbacks[tsw[1]]();
		}
		catch (e) {};
	}
	self.reset=function() {
		for (var k in self.index) {
			opt.unfocus_trigger_callback( $(self.index[k],opt.trigger_cont),opt);
			opt.unfocus_content_callback( $(self.index[k]+"_content", opt.content_cont) ,opt);
		}
	}
	self.show_all=function() {
		for (var k in self.index) self.show(self.index[k],true);
		if (opt.navigator_cont) opt.hide_navigator_callback();
	}
	self.next=function() {
		stuff=self.current;
		var data=self.get_data(stuff)
		var tsw=Number(data[0])+1;
		self.show(tsw);
		self.navigator_check(tsw);
		if (opt.save_callback && tsw>index.length-1) opt.save_callback();
	}
	self.prev=function() {
		stuff=self.current;
		var tsw=Number(self.get_data(stuff)[0])-1;
		self.show(tsw);
		self.navigator_check(tsw);
	}
	self.get_index();
}






