var sapiOptions={
allowDebug:true
};

if(!window.sapiEvents)sapiEvents={attachEvent:function(obj,eventid,func){if(!obj) return;try { sapiEvents.detachEvent(obj,eventid,func);if(obj.addEventListener){obj.addEventListener(eventid,func,false);} else {if(!obj['arr'+eventid]) obj['arr'+eventid]=new Array();obj['arr'+eventid].push(func);obj['on'+eventid]=sapiEvents.ieCatcher;}} catch (e) {dputs("Error in sapievents.js : sapiEvents.attachEvent");};},detachEvent:function(obj,eventid,func){if(!obj) return;try { if(obj.removeEventListener){obj.removeEventListener(eventid,func,false);} else {var a=obj['arr'+eventid];if(!a) return;var b=new Array();var l=a.length;for(var cnt=0;cnt<l;cnt++)if(a[cnt]!=func){b.push(a[cnt]);} else {a[cnt]=0;};obj['arr'+eventid]=b;}} catch(e) {dputs("Error in sapievents.js : sapiEvents.detachEvent");}},ieCatcher:function(evt){if(!evt) evt=window.event;if(!evt)for(var cnt=0;cnt<document.frames.length;cnt++)if(evt=document.frames[cnt].event)break;if(!evt) return;var queue=this['arr'+evt.type];if(!queue) return;var l=queue.length;for(var cnt=0;cnt<l;cnt++)if(queue[cnt]){try{this.snarkBuf=queue[cnt];this.snarkBuf(evt);} catch (e){dputs(e.message);}};this.snarkBuf="";},stop:function(e){try {if(!e) e=window.event;e.cancelBubble = true;e.returnValue = false;if(e.stopPropagation){e.stopPropagation();e.preventDefault();}} catch (err){};return false;},getPos:function(e){var o={x:0,y:0};if (e.pageX || e.pageY) {o.x = e.pageX;o.y = e.pageY;}else if (e.clientX || e.clientY) {o.x = e.clientX + document.body.scrollLeft+ document.documentElement.scrollLeft;o.y = e.clientY + document.body.scrollTop+ document.documentElement.scrollTop;};return o;}};window.regAction=function(func){sapiEvents.attachEvent(window,"load",func);};if(!window.sapiDebug)sapiDebug={ debugTxt:"",inited:false,colorCnt:true,tbHeight:30,height:300,width:400,dputs:function(str){var me=sapiDebug;if(!window.sapiOptions) return;if(!window.sapiOptions.allowDebug) return;var st="#eeeeee;";if(me.colorCnt) st="#ffffff;";me.colorCnt=!me.colorCnt;me.debugTxt="<div style='display:block;margin:0;clear:both;background-color:"+st+"'><xmp style='color:black;margin:5px;font-family:Arial;font-size:11px;'>"+str+"</xmp></div>"+me.debugTxt;if(!me.inited){if(!document.body){regAction(me.create);} else {me.create();};} else {me.redraw();}},create:function(){var me=sapiDebug;var d=document.createElement("DIV");d.style.position="absolute";d.style.border="1px solid black";d.style.bottom=0;d.style.right=0;d.style.width=me.width+"px";d.style.height=me.height+"px";d.style.zIndex=20000;d.style.padding=0;d.style.overflow="hidden";d.style.backgroundColor="#ffffff";d.style.color="#000000";d.style.display="block";me.debugWin=d;var d=document.createElement("DIV");d.style.position="relative";d.style.backgroundColor="#222288";d.style.display="block";d.style.height=me.tbHeight+"px";d.style.lineHeight=me.tbHeight+"px";me.debugWin.appendChild(d);var b=me.mkBut();b.innerHTML="CLEAR";sapiEvents.attachEvent(b,"click",me.onClear);d.appendChild(b);var b=sapiDebug.mkBut();b.innerHTML="HIDE";sapiEvents.attachEvent(b,"click",me.onHide);d.appendChild(b);var d=document.createElement("DIV");d.style.position="relative";d.style.backgroundColor="#ffffff";d.style.color="#000000";d.style.display="block";d.style.height=(me.height-me.tbHeight)+"px";d.style.overflow="auto";me.debugWin.appendChild(d);me.debugScreen=d;document.body.appendChild(me.debugWin);me.inited=true;me.redraw();},redraw:function(){sapiDebug.debugWin.style.display="block";sapiDebug.debugScreen.innerHTML=sapiDebug.debugTxt;},mkBut:function(){var b=document.createElement("A");b.href="#";b.style.position="relative";b.style.color="#ffffff";b.style.margin="0px 10px";b.style.fontFamily="Arial";b.style.fontSize="11px";b.style.lineHeight=sapiDebug.tbHeight+"px";return b;},onHide:function(){sapiDebug.debugWin.style.display="none";return false;},onClear:function(){sapiDebug.debugTxt="";sapiDebug.colorCnt=true;sapiDebug.redraw();return false;}};window.dputs=sapiDebug.dputs;
if(!window.sapiGATE)sapiGATE={method:"post",action:"gate.php",admaction:"snarkgate.php",send:function(obj){var me=sapiGATE;var extraFields={};if(arguments.length>1) extraFields=arguments[1];me.prepareSend(obj,me.action,extraFields);},senda:function(obj){var me=sapiGATE;var extraFields={};if(arguments.length>1) extraFields=arguments[1];me.prepareSend(obj,me.admaction,extraFields);},prepareSend:function(obj,action,extraFields){var me=sapiGATE;if(obj){if(obj.elements){if(!me.canUseHTTP(obj)){me.sendIFRAME(obj,action,extraFields);} else {me.sendHTTP(me.form2obj(obj),action,extraFields);}} else if(typeof(obj)==typeof({})){me.sendHTTP(obj,action,extraFields);} else {dputs("Err: sapiGATE.send - wrong paramenter");};} else {dputs("Err: sapiGATE.send - nill paramenter");}},processReceive:function(str){var data="";try {eval("data="+str);} catch (e){dputs("**************************");dputs(str);dputs("**************************");dputs(e.message);dputs("Err: sapiGATE.processReceive - unsupported server answer");return;};if(data.phplog){dputs("**************************");dputs(data.phplog);dputs("PHP LOG*******************");};if(data.js)try {eval(data.js);} catch (e){dputs("Err: sapiGATE.processReceive - wrong js field");dputs(e.message);dputs("**************************");dputs(data.js);dputs("**************************");return;}},getUniqName:function(){var me=sapiGATE;if(!me.uniqid) me.uniqid=1;me.uniqid++;return "uniq"+me.uniqid.toString()+"_"+Math.random();},canUseHTTP:function(form){var e=form.elements;var l=e.length;for(var cnt=0;cnt<l;cnt++)if(e[cnt].type=="file")return false;return true;},form2obj:function(f){var ret={};var e=f.elements;for(var cnt=0;cnt<e.length;cnt++){var o=e[cnt];var t=o.type.toUpperCase();var p="";var varname="";if(o.name){varname=o.name;} else if(o.id){varname=o.id;} else {continue;};switch(t){case "CHECKBOX":if(o.checked){ret[varname]=o.value;} else {ret[varname]="";};break;case "RADIO":if(o.checked)ret[varname]=o.value;break;case "BUTTON":case "IMAGE":case "SUBMIT":case "RESET":break;default:ret[varname]=o.value;break;};};return ret;},sendIFRAME:function(obj){var me=sapiGATE;var action=me.action;var extraFields={};if(arguments.length>1) action=arguments[1];if(arguments.length>2) extraFields=arguments[2];if(!obj.submit){dputs("Err: sapiGATE.sendIFRAME - param is not a form");return;};var iframe=null;var bufName=me.getUniqName();try{iframe=document.createElement("<IFRAME name='"+bufName+"'>");extraFields['snarkie7output']=1;} catch(e){iframe=document.createElement("IFRAME");};if(!iframe){dputs("Err: sapiGATE.sendIFRAME - can't create iframe");return;};iframe.width=1;iframe.height=1;iframe.name=bufName;var divCont=document.createElement("DIV");divCont.style.position="absolute";divCont.style.zIndex=1000;divCont.style.width="1px";divCont.style.height="1px";divCont.style.top="0px";divCont.style.left="0px";document.body.appendChild(divCont);divCont.appendChild(iframe);for(var o in extraFields)if(!obj.elements[o]){var i=document.createElement('INPUT');i.type='hidden';i.name=o;i.value=extraFields[o];obj.appendChild(i);};obj.acceptCharset="UTF-8";obj.action=action;obj.method=me.method;obj.enctype="multipart/form-data";obj.encoding="multipart/form-data";obj.target=iframe.name;var e=obj.elements;for(var cnt=0;cnt<e.length;cnt++)if(e[cnt].id)if(!e[cnt].name)e[cnt].name=e[cnt].id;sapiEvents.attachEvent(iframe,"load",me.onIFRAMEload);sapiEvents.attachEvent(iframe,"readystatechange",me.onIFRAMEreadyState);obj.submit();},onIFRAMEreadyState:function(){if(this.readyState=="complete"){var me=sapiGATE;var o=this.contentWindow.document.body;if(!o){dputs(this.contentWindow.document);for(var prop in this.contentWindow.document) dputs(prop+"="+this.contentWindow.document[prop]);};var str="";if(o.textContent){str=o.textContent;} else {str=o.innerText;};me.processReceive(str);me.dropIFRAME(this);}},onIFRAMEload:function(){var me=sapiGATE;var o=this.contentWindow.document.body;var str="";if(o.textContent){str=o.textContent;} else {str=o.innerText;};me.processReceive(str);me.dropIFRAME(this);},dropIFRAME:function(iframe){var me=sapiGATE;var p=iframe.parentNode;sapiEvents.detachEvent(iframe,"load",me.onIFRAMEload);sapiEvents.detachEvent(iframe,"readystatechange",me.onIFRAMEreadyState);iframe.src="about:blank";p.removeChild(iframe);var p1=p.parentNode;p1.removeChild(p);},sendHTTP:function(obj){var me=sapiGATE;var action=me.action;var extraFields={};if(arguments.length>1) action=arguments[1];if(arguments.length>2) extraFields=arguments[2];var rObj=me.registerHTTP(obj);if(!rObj) return;var xmlhttp=false;try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} catch (E) {xmlhttp = false;}};if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp = new XMLHttpRequest();if(!xmlhttp){dputs("Err: sapiGATE.sendHTTP - can't create HTTP Request Object");me.unregisterHTTP(rObj);return;} else {var params="rnd="+me.getUniqName();for(var o in obj) params+="&"+o+"="+encodeURIComponent(obj[o]);for(var o in extraFields) params+="&"+o+"="+encodeURIComponent(extraFields[o]);try{if(me.method=="get"){xmlhttp.open(me.method,action+"?"+params,true);xmlhttp.send(null);} else {xmlhttp.open(me.method,action,true);xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');xmlhttp.send(params);};rObj.xmlhttp=xmlhttp;} catch (e) {dputs("Err: sapiGATE.sendHTTP - can't send request");dputs(e.message);rObj.removeMe=true;return;}};},registerHTTP:function(obj){var me=sapiGATE;if(!obj.mod){dputs("Err: sapiGATE.registerHTTP - no required 'mod' named variable in the request");return null;};var check=obj.mod+"#"+obj.mode;if(!me.requests) me.requests=[];var l=me.requests.length;var r=me.requests;for(var cnt=0;cnt<l;cnt++)if(r[cnt].check==check)return null;var ret={check:check};me.requests.push(ret);if(!me.requestsTimer)me.requestsTimer=setInterval(me.onIntervalHTTP,200);return ret;},onIntervalHTTP:function(){var me=sapiGATE;if(me.inInterval) return;me.inInterval=true;if(!me.requests) me.requests=[];var l=me.requests.length;var r=me.requests;var a=[];for(var cnt=0;cnt<l;cnt++){if(r[cnt].removeMe) continue;if(r[cnt].xmlhttp)if(r[cnt].xmlhttp.readyState==4){var str=r[cnt].xmlhttp.responseText;r[cnt].xmlhttp=null;r[cnt].removeMe=true;r[cnt].check="";sapiGATE.processReceive(str);continue;};};var r=me.requests;var l=me.requests.length;var a=[];for(var cnt=0;cnt<l;cnt++)if(!r[cnt].removeMe)a.push(r[cnt]);me.requests=a;if(!a.length){clearInterval(me.requestsTimer);me.requestsTimer=0;};me.inInterval=false;}}

sapiMenu={
	switchSubmenu:function(obj){
		var me=sapiMenu;
		if(me.switchMode) return;
		me.switchMode=true;
		var o=obj;
		while(o){
			if(o.tagName=='LI') break;
			o=o.parentNode;
		};
		if(!o) return;
		me.switchObj=o;
		setTimeout(me.timeSwitch,20);
	},
	timeSwitch:function(){
		var me=sapiMenu;
		while(me.switchObj=me.switchObj.nextSibling){
			if(!me.switchObj.tagName) continue;
			if(me.switchObj.className!="submenu"){
				me.switchMode=false;
				me.switchObj=null;
			} else {
				if(me.switchObj.style.display=="none") {
					me.switchObj.style.display="block";
				} else {
					me.switchObj.style.display="none";
				};
				setTimeout(me.timeSwitch,20);
			};
			break;
		}
	},
	adjustMenu:function(id){
	},
	subscribe:function(){
		var o=document.getElementById("addr");
		if(!o) return false;
		var mask=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		if(mask.test(o.value)){
			document.forms.subform.submit();
		} else {
			o.focus();
		}
		return false;
	}
}

sapiVideo={
	setup:function(){
		var pagesobj=document.getElementById('videopages');
		var list=document.getElementById('videolist');
		var listcont=document.getElementById('videolistcontent');
		var preview=document.getElementById('videopreview');
		var npages=listcont.offsetHeight/list.clientHeight;
		var inpages=Math.round(npages);
		if((Math.abs(npages-inpages)*list.clientHeight)<10) npages=inpages;
		if(npages>1)
			for(var cnt=0;cnt<npages;cnt++){
				var a=document.createElement("A");
				a.href="#";
				a.innerHTML=(cnt+1);
				a.onclick=sapiVideo.setPage;
				if(!cnt) a.className='sel';
				pagesobj.appendChild(a);
			}
		var divs=listcont.getElementsByTagName('DIV');
		for(var cnt=0;cnt<divs.length;cnt++)
			if(divs[cnt].className=="video_button"){
				sapiVideo.set(divs[cnt]);
				break;
			}
	},
	setPage:function(){
		var nPage=this.innerText-1;
		var list=document.getElementById('videolist');
		var listcont=document.getElementById('videolistcontent');
		listcont.style.top=-nPage*list.clientHeight+"px";
		var pagesobj=document.getElementById('videopages');
		var links=pagesobj.getElementsByTagName('A');
		for(var cnt=0;cnt<links.length;cnt++)
			links[cnt].className='';
		this.className='sel';

		return false;
	},
	set:function(obj){
		var o=document.getElementById('videopreview');
		var divs=obj.getElementsByTagName('DIV');
		for(var cnt=0;cnt<divs.length;cnt++)
			if(divs[cnt].className=="video_data"){
				o.innerHTML=divs[cnt].innerHTML;
				break;
			}

		var listcont=document.getElementById('videolistcontent');
		var divs=listcont.getElementsByTagName('DIV');
		for(var cnt=0;cnt<divs.length;cnt++)
			if(divs[cnt].className=="video_button")
				divs[cnt].id='';

		obj.id='selvideo';
	}
}

sapiImages={
	ICON_WIDTH:102,
	ICON_DW:10,
	ICON_MAX:10,	

	GROUP_HEIGHT:54,
	GROUP_DH:0,
	GROUP_NUM:7,

	TYPE_GROUP:1,
	TYPE_ITEM:2,
	TYPE_ITEM_HTML:3,

	THEME_STEP:20,

	data:{},
	check:{},
	vids:{},
//fill data	
	pushGroup:function(id,parentid,name,note){
		var me=sapiImages;
		id='i'+id;
		parentid='i'+parentid;
		if(me.check[id]) return;
		if(!me.data[parentid]) me.data[parentid]=[];
		var o={id:id,name:name,note:note,type:me.TYPE_GROUP};
		me.data[parentid].push(o);
		me.check[id]=true;
	},
	pushItem:function(id,parentid,name,ico,img){
		var me=sapiImages;
		id='i'+id;
		parentid='i'+parentid;
		if(me.check[id]) return;
		if(!me.data[parentid]) me.data[parentid]=[];
		me.data[parentid].push({id:id,name:name,ico:ico,img:img,type:me.TYPE_ITEM});
		me.check[id]=true;
	},
//end
	pushHTML:function(id,parentid,name,ico,codepiece){
		var me=sapiImages;
		id='i'+id;
		parentid='i'+parentid;
		if(me.check[id]) return;
		if(!me.data[parentid]) me.data[parentid]=[];
		me.data[parentid].push({id:id,name:name,ico:ico,codepiece:codepiece,type:me.TYPE_ITEM_HTML});
		me.check[id]=true;
	},

	initDraw:function(groupid){
		var me=sapiImages;
		var vidid='images'+groupid;
		groupid='i'+groupid;
		if(arguments.length>1) vidid=arguments[1];
		var forceTopMenu=false;
		if(arguments.length>2)
			if(arguments[2]==1)
				forceTopMenu=true;

		var showBig=false;
		if(arguments.length>3)
			if(arguments[3]==1)
				showBig=true;

		var showTitle=false;
		if(arguments.length>4)
			if(arguments[4]==1)
				showTitle=true;
				

		if(me.vids[vidid]) return;
		var parentObj=document.getElementById(vidid);
		if(!parentObj) return;

		var vobj={vidid:vidid,groupid:groupid,forceTopMenu:forceTopMenu,showBig:showBig};
		vobj.themePanel=me.mkD("images_theme_panel",parentObj);
			vobj.themeList=me.mkD("images_theme_list",vobj.themePanel);
			vobj.themeListContent=me.mkD("images_theme_list_content",vobj.themeList);
			vobj.themeLeft=me.mkD("images_theme_left",vobj.themePanel);
			vobj.themeRight=me.mkD("images_theme_right",vobj.themePanel);

		vobj.panel=me.mkD("images_panel",parentObj);

		var groupPanel=me.mkD("images_group_panel",vobj.panel);
			vobj.groupList=me.mkD("images_group_list",groupPanel);
			vobj.groupPages=me.mkD("images_group_pages",groupPanel);

		var imgPanel=me.mkD("images_image_panel",vobj.panel);
			vobj.imgShow=me.mkD("images_show",imgPanel);
			
			var titlePanel=me.mkD("images_title_panel",imgPanel);
			if(!showTitle) titlePanel.style.display="none";
			vobj.imgTitle=titlePanel;

			var icoPanel=me.mkD("images_ico_panel",imgPanel);
				vobj.icoLeft=me.mkD("images_ico_left",icoPanel);
				vobj.icoList=me.mkD("images_ico_list",icoPanel);
				vobj.icoRight=me.mkD("images_ico_right",icoPanel);


		vobj.level1={active:0,start:0,dst:0,timer:0,items:null,containers:[],pageLen:0};
		vobj.level2={active:0,start:0,dst:0,timer:0,items:null,containers:[],pageLen:me.GROUP_NUM};
		vobj.level3={active:0,start:0,dst:0,timer:0,items:null,containers:[],pageLen:me.ICON_MAX};

		for(var cnt=0;cnt<me.ICON_MAX;cnt++){
			var o=me.mkD("images_ico_button",vobj.icoList);
			o.style.left=cnt*(me.ICON_WIDTH+me.ICON_DW)+"px";
			vobj.level3.containers.push(o);
		};

		for(var cnt=0;cnt<me.GROUP_NUM;cnt++){
			var o=me.mkD("images_group_button",vobj.groupList);
			o.style.top=cnt*(me.GROUP_HEIGHT+me.GROUP_DH)+"px";
			vobj.level2.containers.push(o);
		};
				
		me.attachEvent(vobj.imgShow,"click",me.onClick,vidid);
		me.attachEvent(vobj.icoList,"click",me.onClick,vidid);
		me.attachEvent(vobj.groupList,"click",me.onClick,vidid);
		me.attachEvent(vobj.groupPages,"click",me.onClick,vidid);
		me.attachEvent(vobj.icoLeft,"click",me.onClick,vidid);
		me.attachEvent(vobj.icoRight,"click",me.onClick,vidid);
		me.attachEvent(vobj.themeList,"click",me.onClick,vidid);
		me.attachEvent(vobj.themeLeft,"click",me.onClick,vidid);
		me.attachEvent(vobj.themeRight,"click",me.onClick,vidid);


		me.vids[vidid]=vobj;
		me.setupLevel1(vidid,groupid);
		me.setupArrows(vidid);
	},

	attachEvent:function(obj,evt,catcher,vidid){
		obj.sapiimages_vidid=vidid;
		sapiEvents.attachEvent(obj,evt,catcher);
	},

//--------------------SETUP---------------------
	setupLevel1:function(vidid,groupid){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		vobj.level1.items=[]
		vobj.level1.start=0;
		vobj.level1.active=0;

		var forceTopMenu=vobj.forceTopMenu;
		found=false;		
		var a=me.data[groupid];
		if(!a) a=[];
		for(var cnt=0;cnt<a.length;cnt++)
			if(a[cnt].type==me.TYPE_GROUP){
				if(forceTopMenu){
					found=true;
				} else {
					var b=me.data[a[cnt].id];
					if(b)
						for(var cnt1=0;cnt1<b.length;cnt1++)
							if(b[cnt1].type==me.TYPE_GROUP){
								found=true;
								break;
							};
				};
				if(found) break;
			};

		if(!found){
			vobj.themePanel.id="nothemes";
			me.setupLevel2(vidid,groupid);
		} else {
			vobj.themePanel.id="";
			for(var cnt=0;cnt<a.length;cnt++)
				if(a[cnt].type==me.TYPE_GROUP)
					vobj.level1.items.push(me.dubObj(a[cnt]));

			me.drawLevel(vidid,1);
			me.setupLevel2(vidid,vobj.level1.items[0].id);
		};
	},

	setupLevel2:function(vidid,groupid){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		vobj.level2.items=[]
		vobj.level2.start=0;
		vobj.level2.active=0;
		vobj.groupPages.innerHTML="";

		found=false;		
		var a=me.data[groupid];
		if(!a) a=[];
		for(var cnt=0;cnt<a.length;cnt++)
			if(a[cnt].type==me.TYPE_GROUP){
				found=true;
				break;
			};
		if(!found){
			vobj.panel.id="nogroups";
			me.setupLevel3(vidid,groupid);
		} else {
			vobj.panel.id="";
			for(var cnt=0;cnt<a.length;cnt++)
				if(a[cnt].type==me.TYPE_GROUP){
					if(a[cnt].cache) a[cnt].cache.id="";
					vobj.level2.items.push(me.dubObj(a[cnt]));
				};

			var npages=vobj.level2.items.length/vobj.level2.pageLen;
			if(npages>1)
				for(var cnt=0;cnt<npages;cnt++)
					me.mkD("images_pages_button",vobj.groupPages,(cnt+1));

			me.drawLevel(vidid,2);
			me.setupLevel3(vidid,vobj.level2.items[0].id);
		};
	},

	setupLevel3:function(vidid,groupid){
		var me=sapiImages;
		var vobj=me.vids[vidid];
//let's recalc page settings
		var bufW=vobj.icoList.offsetWidth;
		var nItems=Math.floor(bufW/me.ICON_WIDTH);
		if(nItems<2){
			nItems=1;
			vobj.ICON_DW=0;
		} else {
			vobj.ICON_DW=Math.floor((bufW-me.ICON_WIDTH*nItems)/(nItems-1));			
		};

		vobj.level3.pageLen=Math.floor((vobj.icoList.offsetWidth+vobj.ICON_DW)/(me.ICON_WIDTH+vobj.ICON_DW));
		if(vobj.level3.pageLen>me.ICON_MAX) vobj.level3.pageLen=me.ICON_MAX;

		for(var cnt=0;cnt<me.ICON_MAX;cnt++)
			vobj.level3.containers[cnt].style.left=(me.ICON_WIDTH+vobj.ICON_DW)*cnt+"px";

		for(var cnt=vobj.level3.pageLen;cnt<me.ICON_MAX;cnt++)
			vobj.level3.containers[cnt].style.display="none";


		vobj.level3.items=[]
		vobj.level3.start=0;
		vobj.level3.active=0;

		found=false;		
		var a=me.data[groupid];
		if(!a) a=[];
		for(var cnt=0;cnt<a.length;cnt++)
			if(a[cnt].type==me.TYPE_ITEM || a[cnt].type==me.TYPE_ITEM_HTML){
				found=true;
				break;
			};

		if(!found){
			me.drawLevel(vidid,3);
			me.activateElement(vidid,0,3);
		} else {
			for(var cnt=0;cnt<a.length;cnt++)
				if(a[cnt].type==me.TYPE_ITEM || a[cnt].type==me.TYPE_ITEM_HTML){
					if(a[cnt].cache) a[cnt].cache.id="";
					vobj.level3.items.push(me.dubObj(a[cnt]));
				};

			if(vobj.level3.pageLen>vobj.level3.items.length){
				var l=vobj.level3.items.length;
				vobj.level3.pageLen=l;
				for(var cnt=vobj.level3.pageLen;cnt<me.ICON_MAX;cnt++)
					vobj.level3.containers[cnt].style.display="none";

				var totalW=vobj.icoList.offsetWidth;
				var cLen=0;
				if(l==1){
					cLen=me.ICON_WIDTH;
				} else {
					vobj.ICON_DW=(totalW-l*me.ICON_WIDTH)/(l-1);
					if(vobj.ICON_DW>me.ICON_DW) vobj.ICON_DW=me.ICON_DW;		
					cLen=me.ICON_WIDTH*l+vobj.ICON_DW*(l-1);
				};								
				var x=Math.floor(totalW/2-cLen/2);
				for(var cnt=0;cnt<l;cnt++)
					vobj.level3.containers[cnt].style.left=Math.floor(cnt*(me.ICON_WIDTH+vobj.ICON_DW)+x)+"px";
			};

			me.drawLevel(vidid,3);
			me.activateElement(vidid,0,3);
		};
	},
//--------------------DRAW--------------------
	drawLevel:function(vidid,level){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		switch(level){
			case 1:
				var a=vobj.level1.items;
				for(var cnt=0;cnt<a.length;cnt++){
					var o=me.mkD("images_themes_button",vobj.themeListContent,a[cnt].name);
					o.sapiimages_id=cnt;
					a[cnt].cache=o;
					if(cnt==vobj.level1.active) a[cnt].cache.id="sel";
				};
			break;
			case 2:
				me.drawStd(vobj.level2);
			break;
			case 3:
				me.drawStd(vobj.level3);
			break;
		};		
	},
	drawStd:function(levelobj){
		var me=sapiImages;
		var maxI=levelobj.items.length;
		for(var cnt=0;cnt<levelobj.pageLen;cnt++){
			var i=levelobj.start+cnt;
			var cont=levelobj.containers[cnt];
			if(cont.firstChild) cont.removeChild(cont.firstChild);
			if(i<maxI){
				cont.style.display="block";
				if(!levelobj.items[i].cache) levelobj.items[i].cache=me.getCache(levelobj.items[i]);
				if(i==levelobj.active) levelobj.items[i].cache.id="sel";
				cont.sapiimages_id=i;
				cont.appendChild(levelobj.items[i].cache);
			} else {
				cont.style.display="none";
			}
		}
	},
	getCache:function(item){
		var me=sapiImages;
		switch(item.type){
			case me.TYPE_GROUP:
				var o=me.mkD('images_group_button_content');
				me.mkD('images_group_button_title',o,item.name);
				me.mkD('images_group_button_note',o,item.note);
				return o;
			break;
			case me.TYPE_ITEM:
			case me.TYPE_ITEM_HTML:
				var o=me.mkD('images_ico_button_content');
				me.mkI(o,item.ico);
				return o;
			break;
		}
	},
//--------------------CLICK---------------------
	onClick:function(evt){
		var me=sapiImages;
		var vidid=this.sapiimages_vidid;
		var vobj=me.vids[vidid];
		switch(this.className){
			case "images_theme_list":
				if(vobj.level1.timer==0 && vobj.level2.timer==0 && vobj.level3.timer==0){
					var obj = evt.target || evt.srcElement;
					while(obj){
						if(obj.className=="images_themes_button"){
							me.activateElement(vidid,obj.sapiimages_id,1);
							break;
						};
						obj=obj.parentNode;
					};
				};
			break;
			case "images_theme_right":
				if(vobj.level1.timer==0){
					var a=vobj.themeListContent.getElementsByTagName("DIV");
					if(vobj.level1.start<a.length-1){
						vobj.level1.start++;
						var x=0;
						for(var cnt=0;cnt<vobj.level1.start;cnt++)
							x+=a[cnt].offsetWidth;
						
						vobj.level1.curX=vobj.themeListContent.offsetLeft;
						vobj.level1.timer=setInterval("sapiImages.onTick('"+this.sapiimages_vidid+"',1,-"+x+")",10);
					}
				};
			break;
			case "images_theme_left":
				if(vobj.level1.timer==0){
					if(vobj.level1.start>0){
						var a=vobj.themeListContent.getElementsByTagName("DIV");
						vobj.level1.start--;
						var x=0;
						for(var cnt=0;cnt<vobj.level1.start;cnt++)
							x+=a[cnt].offsetWidth;
						vobj.level1.curX=vobj.themeListContent.offsetLeft;
						vobj.level1.timer=setInterval("sapiImages.onTick('"+this.sapiimages_vidid+"',1,-"+x+")",10);
					}
				};
			break;			
			case "images_ico_left":
				if(vobj.level3.timer==0){
					if(vobj.level3.start>0){
						var x=vobj.level3.start-vobj.level3.pageLen;
						if(x<0) x=0;
						vobj.level3.timer=setInterval("sapiImages.onTick('"+this.sapiimages_vidid+"',3,"+x+")",10);
					}
				};
			break;
			case "images_ico_right":
				if(vobj.level3.timer==0){
					var x=vobj.level3.start+vobj.level3.pageLen;
					if(x<vobj.level3.items.length){
						vobj.level3.timer=setInterval("sapiImages.onTick('"+this.sapiimages_vidid+"',3,"+x+")",10);
					};
				};
			break;
			case "images_ico_list":
				var obj = evt.target || evt.srcElement;
				while(obj){
					if(obj.className=="images_ico_button"){
						me.activateElement(vidid,obj.sapiimages_id,3);
						break;
					};
					obj=obj.parentNode;
				}
			break;
			case "images_group_list":
				var obj = evt.target || evt.srcElement;
				while(obj){
					if(obj.className=="images_group_button"){
						me.activateElement(vidid,obj.sapiimages_id,2);
						break;
					};
					obj=obj.parentNode;
				}
			break;
			case "images_group_pages":
				if(vobj.level2.timer==0){
					var obj = evt.target || evt.srcElement;
					while(obj){
						if(obj.className=="images_pages_button"){
							var nPage=obj.innerText;
							x=(nPage-1)*vobj.level2.pageLen;
							vobj.level2.timer=setInterval("sapiImages.onTick('"+this.sapiimages_vidid+"',2,"+x+")",20);
							obj.id="sel";
						};
						obj=obj.parentNode;
					};
				};

			break;
			case "images_show":
				if(vobj.showBig){
					if(!vobj.bigPanel){
						var bigPanel=me.mkD("images_big_view",document.body);
						vobj.bigPanel=bigPanel;
						var bigPanelBG=me.mkD("images_big_view_bg",bigPanel);
						var bigPanelClose=me.mkD("images_big_view_close",bigPanel);
						vobj.bigPanelView=me.mkD("images_big_view_show",bigPanel);
						me.attachEvent(vobj.bigPanel,"click",me.onClick,vidid);

						var mask=/iPad|iPhone/i;
						if(mask.test(navigator.userAgent)){
							vobj.bigPanel.style.position="absolute";
							vobj.bigPanel.style.width="100%";
							vobj.bigPanel.style.height="100%";
							vobj.bigPanel.style.bottom="auto";
							me.reposFunc=function(){
								var t=0;
								var o=document.documentElement;
								if(o.scrollTop) t+=o.scrollTop;
								if(document.body.scrollTop)
									t+=document.body.scrollTop;
								bigPanel.style.top=t+"px";
								return false;
							};							
							me.attachEvent(window,"scroll",me.reposFunc);
							me.reposFunc();
						};
					};
					var imgs=this.getElementsByTagName("IMG");
					for(var cnt=0;cnt<imgs.length;cnt++)
						if(imgs[cnt].className=="sapiimagesimage"){
							vobj.bigPanelView.style.backgroundImage="url("+imgs[cnt].src+")";
							vobj.bigPanel.style.display="block";
							break;
						}
				};
			break;
			case "images_big_view":
				vobj.bigPanelView.style.backgroundImage="";
				vobj.bigPanel.style.display="none";
				if(me.reposFunc)
					me.detachEvent(window,"scroll",me.reposFunc);
			break;
		};
	},
	
//------------------ACTIVATION-------------------
	activateElement:function(vidid,itemid,level){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		switch(level){
			case 1:
				var o=vobj.level1.items[vobj.level1.active];
				if(o.cache) o.cache.id="";
				vobj.level1.active=itemid;
				var o=vobj.level1.items[vobj.level1.active];
				if(o.cache) o.cache.id="sel";
				me.setupLevel2(vidid,o.id);
				me.setupArrows(vidid);
			break;
			case 2:
				var o=vobj.level2.items[vobj.level2.active];
				if(o.cache) o.cache.id="";
				vobj.level2.active=itemid;
				var o=vobj.level2.items[vobj.level2.active];
				if(o.cache) o.cache.id="sel";
				me.setupLevel3(vidid,o.id);
				me.setupArrows(vidid);
			break;
			case 3:
				while(vobj.imgShow.firstChild)
					vobj.imgShow.removeChild(vobj.imgShow.firstChild);

				if(vobj.level3.items.length){
					var o=vobj.level3.items[vobj.level3.active];
					if(o.cache) o.cache.id="";
					vobj.level3.active=itemid;
					var o=vobj.level3.items[vobj.level3.active];
					if(o.cache) o.cache.id="sel";
					switch(o.type){
						case me.TYPE_ITEM:
							if(o.img){
								vobj.imgTitle.innerHTML=o.name;
								var im=me.mkI(vobj.imgShow,o.img);
								im.className="sapiimagesimage";
								var imgZoom=me.mkD("images_show_zoom",vobj.imgShow);
							};
						break;
						case me.TYPE_ITEM_HTML:
							if(o.codepiece){
								vobj.imgTitle.innerHTML=o.name;
								var bufobj=me.mkD("images_show_html",vobj.imgShow,o.codepiece);
								me.ajustHTMLShow(vidid);
								var imgZoom=me.mkD("images_show_zoom",vobj.imgShow);

							};
						break;
					};
				};
			break;
		};
	},
	ajustHTMLShow:function(vidid){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		var o=vobj.imgShow.firstChild;
		if(vobj.imgShow.firstChild)
			if(vobj.imgShow.firstChild.className=="images_show_html"){
				o.style.left=Math.floor(vobj.imgShow.clientWidth/2-o.clientWidth/2)+"px";
				o.style.top=Math.floor(vobj.imgShow.clientHeight/2-o.clientHeight/2)+"px";
			}
	},
		

//------------------TIMER------------------------
	onTick:function(vidid,level,dest){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		switch(level){
			case 1:
				if(dest>vobj.level1.curX){
					vobj.level1.curX+=me.THEME_STEP;
					if(vobj.level1.curX>dest) vobj.level1.curX=dest;
				} else {
					vobj.level1.curX-=me.THEME_STEP;
					if(vobj.level1.curX<dest) vobj.level1.curX=dest;
				};

				vobj.themeListContent.style.left=vobj.level1.curX+"px";
				if(vobj.level1.curX==dest){
					clearInterval(vobj.level1.timer);
					vobj.level1.timer=0;
					me.setupArrows(vidid);
				};								
			break;
			case 2:
				if(dest==vobj.level2.start){
					clearInterval(vobj.level2.timer);
					vobj.level2.timer=0;
					me.setupArrows(vidid);
				} else if(dest>vobj.level2.start){
					vobj.level2.start++;
				} else {
					vobj.level2.start--;
				};
				me.drawStd(vobj.level2);
			break;
			case 3:
				if(dest==vobj.level3.start){
					clearInterval(vobj.level3.timer);
					vobj.level3.timer=0;
					me.setupArrows(vidid);
				} else if(dest>vobj.level3.start){
					vobj.level3.start++;
				} else {
					vobj.level3.start--;
				};
				me.drawStd(vobj.level3);
			break;
		}		
	},
//------------------ARROWS-----------------------
	setupArrows:function(vidid){
		var me=sapiImages;
		var vobj=me.vids[vidid];
		var x=vobj.themeListContent.offsetLeft;
		var w1=vobj.themeList.clientWidth;
		var w2=vobj.themeListContent.clientWidth;
		if(w1<w2){
			if(x<0){
				vobj.themeLeft.style.display='block';
			} else {
				vobj.themeLeft.style.display='none';
			};
			if((x+w2)>w1){
				vobj.themeRight.style.display='block';
			} else {
				vobj.themeRight.style.display='none';
			};
		} else {
			vobj.themeLeft.style.display='none';
			vobj.themeRight.style.display='none';
		};

		if(vobj.level3.start>0){
			vobj.icoLeft.style.display='block';
		} else {
			vobj.icoLeft.style.display='none';
		};
		if((vobj.level3.start+vobj.level3.pageLen)<vobj.level3.items.length){
			vobj.icoRight.style.display='block';
		} else {
			vobj.icoRight.style.display='none';
		};
		var curPage=vobj.level2.start/vobj.level2.pageLen;
		var divs=vobj.groupPages.getElementsByTagName("DIV");
		for(var cnt=0;cnt<divs.length;cnt++)
			divs[cnt].id="";
		if(curPage<divs.length) divs[curPage].id="sel";
	},

//------------------TOOLS------------------------
	calcLevels:function(groupid,level){
		var me=sapiImages;
		var retlevel=level;
		if(!me.data[groupid]) return retlevel;
		var a=me.data[groupid];
		retlevel=level+1;
		for(var cnt=0;cnt<a.length;cnt++){
			var loclevel=sapiImages.calcLevels(a[cnt].id,level+1);
			if(loclevel>retlevel) retlevel=loclevel;
		};
		return retlevel;
	},
	mkD:function(className,parentObj,cont){
		var o=document.createElement('DIV');
		o.className=className;
		if(parentObj) parentObj.appendChild(o);
		if(cont) o.innerHTML=cont;
		return o;
	},
	mkI:function(parentObj,src){
		var o=document.createElement('IMG');
		if(parentObj) parentObj.appendChild(o);
		if(src) o.src=src;
		return o;
	},
	dubObj:function(obj){
		var ret={};
		for(var o in obj)
			if(o!='cache')
				ret[o]=obj[o];
		return ret;
	},
	reinit:function(){}
}

sapiPersons={
	data:{},
	check:{},
	vids:{},
	pushItem:function(id,parentid,name,ico,img,role,article){
		var me=sapiPersons;
		id='i'+id;
		parentid='i'+parentid;
		if(me.check[id]) return;
		if(!me.data[parentid]) me.data[parentid]=[];
		me.data[parentid].push({id:id,name:name,ico:ico,img:img,role:role,article:article});
		me.check[id]=true;
	},
	initDraw:function(groupid){
		var me=sapiPersons;
		var vidid='persons'+groupid;
		groupid='i'+groupid;
		if(arguments.length>1) vidid=arguments[1];
		var nrow=4;
		if(arguments.length>2) nrow=arguments[2];
		
		if(me.vids[vidid]) return;
		var parentObj=document.getElementById(vidid);
		if(!parentObj) return;

		var vobj={vidid:vidid,groupid:groupid};

		vobj.pagePanel=me.mkD("persons_page",parentObj);

		var cnt1=0;		
		for(var cnt=0;cnt<me.data[groupid].length;cnt++){
			var obj=me.data[groupid][cnt];
			var o=me.mkD("persons_item",vobj.pagePanel);
			o.persondata=obj;
			var o1=me.mkD("persons_item_image",o);
			o1.style.backgroundImage="url("+obj.ico+")";
			var o2=me.mkD("persons_item_name",o);
			o2.innerHTML=obj.name;
			var o3=me.mkD("persons_item_role",o);
			o3.innerHTML=obj.role;
			cnt1++;
			if(cnt1>=nrow){
				cnt1=0;
				me.mkD("persons_clear",vobj.pagePanel);
			};
		}
		if(cnt1) me.mkD("persons_clear",vobj.pagePanel);

		me.attachEvent(vobj.pagePanel,"click",me.onClick,vidid);
		me.vids[vidid]=vobj;
	},

	attachEvent:function(obj,evt,catcher,vidid){
		obj.sapiimages_vidid=vidid;
		sapiEvents.attachEvent(obj,evt,catcher);
	},

	onClick:function(evt){
		var me=sapiPersons;
		var vidid=this.sapiimages_vidid;
		var vobj=me.vids[vidid];
		switch(this.className){
			case "persons_page":
				var obj = evt.target || evt.srcElement;
				while(obj){
					if(obj.className=="persons_item"){
						if(!vobj.bigPanel){
							var bigPanel=me.mkD("persons_big_view",document.body);
							vobj.bigPanel=bigPanel;
							var bigPanelBG=me.mkD("persons_big_view_bg",bigPanel);
							var bigPanelClose=me.mkD("persons_big_view_close",bigPanel);
							var bigPanelContainer=me.mkD("persons_big_view_container",bigPanel);
							vobj.bigPanelImage=me.mkD("persons_big_view_image",bigPanelContainer);
							vobj.bigPanelArticle=me.mkD("persons_big_view_article",bigPanelContainer);
							me.attachEvent(vobj.bigPanel,"click",me.onClick,vidid);

							var mask=/iPad|iPhone/i;
							if(mask.test(navigator.userAgent)){
								vobj.bigPanel.style.position="absolute";
								vobj.bigPanel.style.width="100%";
								vobj.bigPanel.style.height="100%";
								vobj.bigPanel.style.bottom="auto";
								me.reposFunc=function(){
									var t=0;
									var o=document.documentElement;
									if(o.scrollTop) t+=o.scrollTop;
									if(document.body.scrollTop)
										t+=document.body.scrollTop;
									bigPanel.style.top=t+"px";
									return false;
								};							
								me.attachEvent(window,"scroll",me.reposFunc);
								me.reposFunc();
							};


						};

						vobj.bigPanelImage.style.backgroundImage="url("+obj.persondata.img+")";
						vobj.bigPanelArticle.innerHTML="<p class='persons_big_name'>"+obj.persondata.name+"</p><p class='persons_big_role'>"+obj.persondata.role+"</p>"+obj.persondata.article;
						vobj.bigPanel.style.display="block";
						break;
					};
					obj=obj.parentNode;
				}
			break;
			case "persons_big_view":
				vobj.bigPanel.style.display="none";
				if(me.reposFunc)
					me.detachEvent(window,"scroll",me.reposFunc);
			
			break;
		};
	},
	mkD:function(className,parentObj,cont){
		var o=document.createElement('DIV');
		o.className=className;
		if(parentObj) parentObj.appendChild(o);
		if(cont) o.innerHTML=cont;
		return o;
	}
}

sapiNPIC={
	show:function(path){
		var me=sapiNPIC;
		try{
		if(!me.bigPanel){
			var bigPanel=sapiPersons.mkD("images_big_view",document.body);
			me.bigPanel=bigPanel;
			var bigPanelBG=sapiPersons.mkD("images_big_view_bg",bigPanel);
			var bigPanelClose=sapiPersons.mkD("images_big_view_close",bigPanel);
			me.bigPanelView=sapiPersons.mkD("images_big_view_show",bigPanel);
			sapiEvents.attachEvent(me.bigPanel,"click",me.hide);

			var mask=/iPad|iPhone/i;
			if(mask.test(navigator.userAgent)){
				me.bigPanel.style.position="absolute";
				me.bigPanel.style.width="100%";
				me.bigPanel.style.height="100%";
				me.bigPanel.style.bottom="auto";
				me.reposFunc=function(){
					var t=0;
					var o=document.documentElement;
					if(o.scrollTop) t+=o.scrollTop;
					if(document.body.scrollTop)
						t+=document.body.scrollTop;
						bigPanel.style.top=t+"px";
						return false;
				};							
				sapiEvents.attachEvent(window,"scroll",me.reposFunc);
				me.reposFunc();
			};
		};
		me.bigPanelView.style.backgroundImage="url("+path+")";
		me.bigPanel.style.display="block";
		} catch(e){
			alert(e.message);
		}
	},
	hide:function(){
		var me=sapiNPIC;
		me.bigPanelView.style.backgroundImage="";
		me.bigPanel.style.display="none";
		if(me.reposFunc)
			sapiEvents.detachEvent(window,"scroll",me.reposFunc);
	}
}
