// SITE.CLASS.JS

var SITE												= {

	'ADD':												function (name, object) {

		if (arguments.length > 0) {

			SITE[name]									= object;

		}

	},

	'REMOVE':											function (name) {

		if (arguments.length > 0) {

			delete SITE[name];

		}

	},

	'REDIRECT':											function (href) {

		try {

			if (typeof(href) == 'string') {

				document.location.href					= href;

			}

		}
		catch(e) {}

	},

	'TRY':											 	{

		'these':										function () {

			var returnValue;			

			for (var i = 0; i < arguments.length; i++) {

				var retval								= arguments[i];
				
				try {

					returnValue							= retval();
					break;

				}
				catch(e) {}

			}

			return returnValue;

		}

	},

	'BINDARRAY':										Array.from = function (iterable) {

		if (!iterable) {

			return [];

		}

		if (iterable.toArray) {

			return iterable.toArray();

		} 
		else {

			var results 								= [];

			for (var i = 0; i < iterable.length; i++)

				results.push(iterable[i]);

			return results;

		}

	},
	
		'TOGGLE':											function () {
		
		if (arguments.length) {

			var pattern1								= new RegExp('hidden','img');
			var pattern2								= new RegExp('visible','img');

			for (var i = 0; i < arguments.length; i++) {
			
				var block								= document.getElementById(arguments[i]);
					
				try {
			
					if (block && (block.style || block.className)) {
					
						if (block.style.visibility) {
					
							if (block.style.visibility == 'hidden') {
	
								block.style.visibility	= 'visible';
								block.style.display		= '';						
								
							}
							else if (block.style.visibility == 'visible' || block.style.visibility == '') {
								
								block.style.visibility	= 'hidden';
								block.style.display		= 'none';
							
							}

						}
						else {
							
							var hidden					= pattern1.test(block.className);
							var visible					= pattern2.test(block.className);

							if (hidden) {
								
								block.className			= block.className.replace(pattern1,'visible');
								
							}
							else if (visible) {
								
								block.className			= block.className.replace(pattern2,'hidden');
								
							}
							
						}
				
					}
				
				}
				catch(e) {}
				
			}
					
		}
		
	},
	
	'ELEMENT':											function(id) {
		
		if (typeof(id) != 'undefined') {
						
			return document.getElementById(id);
			
		}
		
	}

}

Function.prototype.bind 								= function() {

	var __method = this, args = SITE.BINDARRAY(arguments), object = args.shift();

	return function() {

		return __method.apply(object, args.concat(SITE.BINDARRAY(arguments)));

	}

}

Object.prototype._toString								= function () {

	return this.toString();

}

Object.prototype.__toArray								= function () {

	var object											= SITE.BINDARRAY(this._toArray());

	var str												= object._toString();

	var text											= str.valueOf();

	var array											= text.split(',');

	return array;

}

Object.prototype._toArray 								= function() {

	if (!this.length) throw("Can't convert");

	var result 											= [];

	for (var i = 0; i != this.length - 1; i++) {

		result.push(this[i]);

	}

	return(result);

}




// BROWSER.CLASS.JS

var BROWSER												= {


	'INIT':												function () {

		this.isIE										= ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) ? true : false);
		this.isOP										= ((navigator.userAgent.toLowerCase().indexOf("opera") != -1) ? true : false);
		this.isFF										= ((navigator.userAgent.toLowerCase().indexOf("gecko") != -1)) ? true : false;


		this.isXML										= this.CHECKXML();

	},

	'CHECKXML':											function () {

		if (this.isIE) {

			try {

				var req									= new ActiveXObject("Microsoft.XMLHTTP");

				if (req) {

					delete req;

					return true;

				}
				else {

					return false;

				}
				
			}
			catch(e) {

				return false;

			}

		}
		else {

			try {

				var req									= new XMLHttpRequest();

				if (req) {

					delete req;
					return true;

				}
				else {

					return false;

				}

			}
			catch(e) {

				return false;

			}

		}

	}

}

BROWSER.INIT();

SITE.ADD('BROWSER',BROWSER);


// URL.CLASS.JS

var URL													= {

	'HASH':												null,

	'HREF':												null,

	'INIT':												function () {

		this.HREF										= document.location.href;
		this.HASH										= document.location.hash;

		this.DETECTSHARP();

	},

	'DETECTSHARP':										function () {

		if (this.HASH) {

			var location								= this.HASH.replace(/#(.*)/gi,'$1');

			this.REDIRECT(location);

		}

	},

	'REDIRECT':											function (location) {

		document.location.href							= '/' + location + '/';

	}

}

URL.INIT();

SITE.ADD('URL',URL);



// CONFIG.CLASS.JS NEW!!!

var CONFIG												= {

	'INIT':												function (host,root,lang,self,module,modid,url,img,xml,js) {

		this.DIR.img									= img;
		this.DIR.xml									= xml;
		this.DIR.js										= js;

		this.COOKIE.host								= host;
		this.COOKIE.path								= '/';
		
		this.MODULE										= module;
		this.MODULEID									= modid;
		this.HOST										= host;
		this.ROOT										= root;
		this.LANG										= lang;
		this.SELF										= self;
		
		this.URL										= url;

	},

	'DIR':												Object(),

	'MODULE':											'',
	'MODULEID':											'',
	'HREF':												'',
	'HOST':												'/',
	'ROOT':												'/',

	'COOKIE':											Object(),

	'LANG':												'',
	'SELF':												'/',

	'URL':												'/'

}

SITE.ADD('CONFIG',CONFIG);



// FIXPNG.JS

function fixPNG(element) {

	if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {

		var src;
	
		if (element.tagName.toUpperCase() == 'IMG')	{

			if (/\.png$/.test(element.src)) {

				src 									= element.src;
				element.src 							= '/_img/blank.gif';

			}
		}

		else
			{

			src 										= element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);

			if (src) {

				src = src[1];
				
				element.runtimeStyle.backgroundImage	= 'none';
				if (element.currentStyle.backgroundRepeat == 'repeat-x') {
					
					var repeat							= 1;
					
				}
				else {
					
					var repeat							= 0;
					
				}
													
			}

		}

		if (src) {
			
			var method									= (repeat ? 'scale' : 'image');
			element.runtimeStyle.filter 				= "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='" + method + "')";
		
		}
	
	}
	
}




// FLASH.CLASS.JS

/*	SWFObject v2.0 <http://code.google.com/p/swfobject/>
	Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();




// EVENT.CLASS.JS

function EVENT(el,type,func) {

	this.ELEMENT										= null;
	this.TYPE											= null;
	this.FUNC											= null;

}


EVENT.prototype.FETCH									= function (el,type,func) {

	this.SETELEMENT(el);
	this.SETTYPE(type);
	this.SETFUNC(func);	

}

EVENT.prototype.SETELEMENT								= function (el) {

	if (arguments.length > 0) {

		if (typeof(el) == 'object')
			this.ELEMENT								= el;
		else if (typeof(el) == 'string')
			this.ELEMENT								= document.getElementById(el);

	}

}

EVENT.prototype.SETTYPE									= function (type) {

	if (arguments.length > 0) {

		if (BROWSER.isIE) {

			this.TYPE									= 'on' + type;
		}
		else {
		
			this.TYPE									= type;	

		}
	}

}

EVENT.prototype.ADD										= function (el,type,func) {

	this.FETCH(el,type,func);

	if (this.ELEMENT && this.TYPE && this.FUNC) {

		if (BROWSER.isIE) {
			
			this.ELEMENT.attachEvent(this.TYPE, this.FUNC);

		}
		else {

			this.ELEMENT.addEventListener(this.TYPE, this.FUNC, true);

		}

	}

}

EVENT.prototype.SETFUNC									= function (func) {

	if (arguments.length > 0) {

		this.FUNC										= func;

	}

}

EVENT.prototype.REMOVE									= function(el,type,func) {

	this.FETCH(el,type,func);

	if (this.ELEMENT && this.TYPE) {

		if (BROWSER.isIE) {

			try {

				this.ELEMENT.detachEvent(this.TYPE, this.FUNC);

			}
			catch (e) {}

		}
		else {

			try {

				if (!this.FUNC)
					this.FUNC							= null;
	
				this.ELEMENT.removeEventListener(this.TYPE, this.FUNC, true);

			}
			catch (e) {}

		}

	}

}



// EVENTS.CLASS.JS

var EVENTS												= {

	'CLICKID':											0,

	'COLLECTION':										Array(),

	'ADD':												function (el,type,func) {

		if (arguments.length == 3) {

			var E										= new EVENT();

			this.REMOVE(el,type,'');

			E.ADD(el,type,func);

			var length									= parseInt(this.COLLECTION.length);
		
			if (length)
				length									= length++;
		
			this.COLLECTION[length]						= E;

		}

	},

	'REMOVE':											function (el,type,func) {

		if (arguments.length > 0) {

			for (var i = 0; i < this.COLLECTION.length; i++) {

				if (this.COLLECTION[i]) {

					if (this.COLLECTION[i].ELEMENT == el) {

						var	oE							= new EVENT();

						oE.REMOVE(el,type,func);

						this.COLLECTION.splice(i,1);

					}

				}

			}

		}

	},

	'CHECKCLICKID':										function () {

		this.CLICKID									= 0;

	}

}

SITE.ADD('EVENTS',EVENTS);


// DOM.CLASS.JS


var DOM													= {

	'LOAD':												function () {

	},

	'NEW':												function () {

	},

	'LEFT':												function (obj) {

		if (typeof(obj) == 'object') {

			var ret 									= obj.offsetLeft;
	
			while((obj = obj.offsetParent) != null) {

				ret 									+= obj.offsetLeft;

			}
	
			return ret;

		}

		return 0;

	},

	'TOP':												function (obj) {

		if (typeof(obj) == 'object') {

			var ret 									= obj.offsetTop;
	
			while((obj = obj.offsetParent) != null) {

				ret 									+= obj.offsetTop;

			}
	
			return ret;

		}

		return 0;

	},

	'HEIGHT':											function (obj) {

		if (typeof(obj) == 'object') {

			return obj.offsetHeight;

		}

		return 0;

	},

	'WIDTH':											function (obj) {

		if (typeof(obj) == 'object') {

			return obj.offsetWidth;

		}

		return 0;

	},

	'COORD2OBJ':										function (x, y, ref) {

		var dX, dY, top, left, width, height;
		var o											= null;

		if (arguments.length >= 2) {

			if (typeof(x) == 'number' && typeof(y) == 'number') {

				if (typeof(ref) == 'object') {

					node								= ref;

				}
				else {

					node								= document.body;

				}

				nodes									= node.getElementsByTagName("*");

				for (var i = 0; i < nodes.length; i++) {

					top									= this.TOP(nodes[i]);
					left								= this.LEFT(nodes[i]);
					width								= this.WIDTH(nodes[i]);
					height								= this.HEIGHT(nodes[i]);

					if ((top < y) && (left < x) && ((width + left) > x) && ((height + top) > y)) {

						if (dX && dY) {

							if (((x - left) < dX) && ((y-top) < dY)) {

								o						= nodes[i];
							
								dX						= x - left;
								dY						= y - top;
									
							}
							else {
	
								dX						= x - left;
								dY						= y - top;
	
							}

						}

						else {

							o							= nodes[i];

							dX							= x - left;
							dY							= y - top;

						}

					}

				}

			}

		}

		return (o);

	},

	'E':												function (e) {

		if (e) {

			if (typeof(e) == 'undefined') {

				e 										= window.event;
				e.src									= e.srcElement;
	
			}
			else {

				if (SITE.BROWSER.isIE) {

					e.src								= e.srcElement;

				}
				else {

					e.src								= e.target;

				}

			}
			

			if (typeof(e.layerX) == 'undefined') {
	
				e.layerX 								= e.offsetX;

			}

			if (typeof(e.layerY) == 'undefined') {

				e.layerY 								= e.offsetY;
	
			}

			return e;

		}
		else {

			return null;

		}

	},

	'TOSTRING':											function (node) {

		var text										= '';

		if (node) {

			if (node.nodeValue) {

				// Парный нод

				text									= '<' + node.tagName + ' ';

				var attributes							= node.attributes;

				for (var i = 0; i < attributes.length; i++) {

					var attribute						= attributes[i];
					text								+= attribute.name + '="' + attribute.value + '" ';

				}

				text									+= '>' + node.nodeValue;

				text									+= '</ ' + node.tagName + '>';

			}
			else {

				// Одиночный нод

				text									= '<' + node.tagName + ' ';

				var attributes							= node.attributes;

				for (var i = 0; i < attributes.length; i++) {

					var attribute						= attributes[i];

					if (attribute.specified)
						text							+= attribute.name + '="' + attribute.value + '" ';

				}

				text									+= '/>';

			}

			var children								= node.childNodes;

		}

		return text;

	},

	'UTF2WIN':											function (oString) {

		if (typeof(oString) == 'string') {

			try {

				var oReturn									= '';
	
				for (var i = 0; i < oString.length; i++) {
	
					var n									= oString.charCodeAt(i);

					if (n >= 0x410 && n <= 0x44F) 

						n 									-= 0x350;

					else if (n == 0x451)
	
						n 									= 0xB8;

					else if (n == 0x401)

						n 									= 0xA8;

					if ((n < 65 || n > 90) && (n < 97 || n > 122) && n < 256) {

			            if (n < 16)

							oReturn 						+= '%0'+n.toString(16);

			            else

							oReturn 						+= '%'+n.toString(16);

	        		}
			        else

			            oReturn 							+= oString.fromCharCode(n);

				}

				return oReturn;

			}

			catch(e) {return '';}

		}

		return '';

	},

	'INNERTEXT':											function (node) {

		if (typeof(node) == 'object') {

			var txt 										= '', i;

			for (i = node.firstChild; i; i = i.nextSibling) {

				if (i.nodeType == 3) {

					txt 									+= i.data;

				}
				else if (i.nodeType == 1)	{
	
					txt 									+= this.INNERTEXT(i);

				}

			}

			return txt;

		}

		return '';

	},
	
	'X':													0,
	
	'Y':													0,
	
	'SCREENX':												0,
	
	'SCREENY':												0,
	
	'COORDINATES':											function (e) {
		
		if (!e) {
			
			e												= window.event;
						
		}
				
		if (e.pageX || e.pageY) {
			
			SITE.DOM.X										= e.pageX;
			SITE.DOM.Y										= e.pageY;
			
			SITE.DOM.SCREENX								= e.clientX;
			SITE.DOM.SCREENY								= e.clientY;
		
		}
		else if (e.clientX || e.clientY) {
			
			SITE.DOM.X										= e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
			SITE.DOM.Y										= e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
			
			SITE.DOM.SCREENX								= e.clientX;
			SITE.DOM.SCREENY								= e.clientY;
			
		}
		

		/*
		if (document.all) {
			
			window.status									= 'X: ' + SITE.DOM.X + '; Y: ' + SITE.DOM.Y;
			
		}
		*/
		
	},
	
	'INIT':													function () {
		
		// Запуск отслеживания положения курсора
						
		SITE.EVENTS.ADD(document,'mousemove',SITE.DOM.COORDINATES);

//		document.body.onmousemove						= function (e) {SITE.DOM.COORDINATES(e);};
			
		
	}
	
}

SITE.ADD('DOM',DOM);
SITE.DOM.INIT();




// AJAX.CLASS.JS

/*

	AJAX v1.0 by Dmitry Kamnev [Contegral - MedInvest]

*/

var WAITER												= {

	'IMG':												new Image(),	
	'CONTAINER':										null,
	'SHOWN':											0,
	
	'START':											function () {
		
		if (!SITE.WAITER.SHOWN) {
				
			SITE.WAITER.SHOWN							= 1;		
				
			SITE.EVENTS.ADD(document,'mousemove',SITE.WAITER.SHOW);
			SITE.WAITER.SHOW();
			
		}
		else {
			
			SITE.WAITER.SHOW();
			
		}
		
	},
	
	'STOP':												function () {
				
		if (SITE.WAITER.SHOWN) {			
				
			SITE.WAITER.SHOWN							= 0;
						
			SITE.EVENTS.REMOVE(document,'mousemove',SITE.WAITER.SHOW);
			
			SITE.WAITER.HIDE();
						
		}
		
	},
	
	'SHOW':												function (e) {				

		if (SITE.DOM.X != 'NaN' && SITE.DOM.Y != 'NaN') {
				
			SITE.WAITER.CONTAINER.style.visibility		= 'visible';
			SITE.WAITER.CONTAINER.style.display			= 'block';
					
			SITE.WAITER.CONTAINER.style.left			= SITE.DOM.X + 15;
			SITE.WAITER.CONTAINER.style.top				= SITE.DOM.Y;
			
		}
		
	},
	
	'HIDE':												function () {
				
		SITE.WAITER.CONTAINER.style.visibility			= 'hidden';
		SITE.WAITER.CONTAINER.style.display				= 'none';	
						
	},
	
	'INIT':												function (img) {
		
		SITE.WAITER.IMG.src								= img;
		
		SITE.WAITER.CONTAINER							= document.createElement('TABLE');
		SITE.WAITER.CONTAINER.style.cssText				= 'position: absolute; z-index: 100; top: 0; left: 0; visibility: hidden; display: none;';

		document.body.appendChild(SITE.WAITER.CONTAINER);
		
		var TBODY										= this.CONTAINER.appendChild(document.createElement('TBODY'));
		var TR											= TBODY.appendChild(document.createElement('TR'));
		var TDi											= TR.appendChild(document.createElement('TD'));		
		
		var I											= TDi.appendChild(document.createElement('IMG'));
		I.src											= SITE.WAITER.IMG.src;
				
	}
	
}

SITE.ADD('WAITER',WAITER);

var AJAXOBJECT											= {

	'AJAXHANDLER':										null,

	'LOAD':												function (request, callback, showWaitMessage, method, type) {

		this.AJAXHANDLER								= new AJAX(request, callback, showWaitMessage, method, type);

		return this.AJAXHANDLER;

	},

	'RESPONSE':											function () {

		if (this.AJAXHANDLER) {
	
			with(this.AJAXHANDLER) {

				if (arguments.length) {

					var	str								= SITE.BINDARRAY(arguments);

					DROPIFRAME(str);

				}
				else {

					DROPIFRAME();

				}

			}

		}

	}

}

function AJAX(request, callback, showWaitMessage, method, type) {
	
	this.RESET();

	this.METHOD											= '';
	this.XMLHTTP										= '';
	this.REQUEST										= '';
	this.IFRAME											= '';
	this.DIVIFRAME										= '';
	this.RESPONSE										= '';
	this.oFORM											= '';
	this.CALLBACK										= '';
	this.URL											= '';
	this.VARS											= '';
	this.TYPE											= ''; // '' - Обычный запрос, (typeof(type) == object) - объект [форма/файл]
	this.HANDLER										= '';
	this.SHOWWAITMESSAGE								= 0;

	this.LOAD(request, callback, showWaitMessage, method, type);

}

AJAX.prototype.LOAD										= function (request, callback, showWaitMessage, method, type) {

	if (this.FETCH(request, callback, showWaitMessage, method, type)) {

		this.MAKEREQUEST();

	}
	else {

		alert(this.ERROR);

	}

}

AJAX.prototype.SETMETHOD								= function (method) {

	if (typeof(method) == 'string') {

		switch(method.toLowerCase()) {

			case 'post': {

				this.METHOD								= 'post';

				break;

			}
			case 'get': {
 			
				this.METHOD								= 'get';

				break;

			}
			default: {

				this.METHOD								= 'get';

			}

		}

	}
	else {

		this.METHOD										= 'get';

	}

	return 1;

}

AJAX.prototype.SETREQUEST								= function (request) {

	if (typeof(request) == 'string') {

		this.REQUEST									= request;

		return 1;

	}

	this.ERROR											= 'Unknown request!';

	return 0;

}

AJAX.prototype.SETCALLBACK								= function (callback) {

	if (typeof(callback) == 'string') {

		this.CALLBACK									= callback;

		return 1;

	}

	this.ERROR											= 'Unknown Call-back function!';

	return 0;

}

AJAX.prototype.SETWAITMESSAGE							= function (showWaitMessage) {

	if (typeof(showWaitMessage) != 'undefined') {

		this.SHOWWAITMESSAGE							= parseInt(showWaitMessage);
		
	}
	
}

AJAX.prototype.SETTYPE									= function (type) {

	if (typeof(type) == 'object') {

		this.HANDLER									= type;

		try {

			if (this.HANDLER.nodeName.toLowerCase() == 'form') {

				this.TYPE								= 'form';
				this.SETMETHOD('post');

			}
			else if ((this.HANDLER.nodeName.toLowerCase() == 'input') && (this.HANDLER.attributes.getNamedItem('type').value.toLowerCase() == 'file')) {

				this.TYPE								= 'file';
				this.SETMETHOD('post');

			}
		}
		catch(e) {}

	}

}


AJAX.prototype.FETCH									= function (request, callback, showWaitMessage, method, type) {

	if (this.SETMETHOD(method) && this.SETREQUEST(request) && this.SETCALLBACK(callback)) {

		this.SETTYPE(type);

		this.SETWAITMESSAGE(showWaitMessage);

		return 1;

	}

	return 0;

}

AJAX.prototype.MAKEREQUEST								= function () {

	if (this.REQUEST) {

		if (this.GETXMLHTTP()) {

			this.PROCESS();

		}
		else {

			this.ERROR									= 'Your browser version is obsolete. Get the latest version of IE, FireFox or Opera to use all features of entire site.';

			alert(this.ERROR);			

		}

	}

}

AJAX.prototype.GETXMLHTTP								= function () {		

	this.XMLHTTP 										= SITE.TRY.these (

      function() {return new ActiveXObject('Msxml2.XMLHTTP')},

      function() {return new ActiveXObject('Microsoft.XMLHTTP')},

      function() {return new XMLHttpRequest()}		

	) || false;

	if (this.XMLHTTP) {

		return true;

	}
	else {

		return false;

	}

}


AJAX.prototype.PROCESS									= function () {

	if (typeof(this.XMLHTTP) == 'object') {

		try {

			if (netscape.security.PrivilegeManager.enablePrivilege) {

				netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

			}

		}
		catch(e) {}

		this.XMLHTTP.onreadystatechange					= this.CHANGE.bind(this);

		if (this.METHOD == 'get') {

			this.GET();

		}

		else {

			this.POST();

		}

	}
	else {

		this.ERROR										= 'Can\'t create AJAX object.';
		alert(this.ERROR);

	}

}

AJAX.prototype.CHANGE									= function () {

	if (typeof(this) == 'object') {

		if (this.XMLHTTP.readyState == 4) {

			// Убираем картинку загрузки
			
			if (this.SHOWWAITMESSAGE) {
				
				if (SITE.WAITER) {
					
					SITE.WAITER.STOP();
					
				}

			}
			
			// Проверяем безошибочность обработки ответа
						

			if (this.XMLHTTP.status == 200)	{										

				try {

					this.RESPONSE						= this.XMLHTTP.responseXML.documentElement;

					this.RESPONSE.normalize();

					this.JSON();

				}
				catch(e) {}

			}

			if (this.XMLHTTP.status == 404) {

				alert('Ошибка 404. Документ не найден');

			}

			if (this.XMLHTTP.status == 500) {

				alert('Ошибка 500. Сбой сервера');
	
			}
		}

		else {

			// Вывести форму, что данные ещё обрабатываются...	

			if (this.SHOWWAITMESSAGE) {

				if (SITE.WAITER) {
					
					SITE.WAITER.START();
					
				}

			}

		}

	}

}

AJAX.prototype.PARSEURL									= function () {

	if (this.REQUEST) {

		this.URL										= this.REQUEST.replace(/^(.*)\?(.*)$/,'$1');
		this.VARS										= this.REQUEST.replace(/^(.*)\?(.*)$/,'$2');

	}

}

AJAX.prototype.GET										= function () {

	try {

		this.XMLHTTP.open("GET", this.REQUEST, true);
		this.XMLHTTP.send((SITE.BROWSER.isIE ? '' : null));

	}
	catch(e) {}

}

AJAX.prototype.POST										= function () {

	this.PARSEURL();

	switch(this.TYPE) {

		case 'file': {

			this.UPLOAD(this.HANDLER);
			
			break;

		}
		case 'form': {

			this.UPLOAD(this.HANDLER);

			break;

		}
		default: {

			this.XMLHTTP.open("POST", this.URL, true);
			this.XMLHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			this.XMLHTTP.send(this.VARS);

		}

	}

},

AJAX.prototype.UPLOAD									= function (node) {

	if (typeof(node) == 'object') {

		this.CREATEIFRAME();
		this.FORM(node);

	}

}

AJAX.prototype.FORM										= function (node) {

	try {

		if (node.nodeName.toUpperCase() == 'FORM') {			
			
			this.oFORM									= node;			
			
			if (!SITE.BROWSER.isIE) {
								
				node.parentNode.replaceChild(node.cloneNode(true),node);
				
			}
			
			if (SITE.BROWSER.isIE) {
				
				this.oFORM.encType 						= 'multipart/form-data';
				this.oFORM.attributes.getNamedItem('action').value 	= '/_xml/' + SITE.CONFIG.MODULE + '.php';
				this.oFORM.attributes.getNamedItem('target').value	= 'AJAXHiddenIFrame';
				this.oFORM.attributes.getNamedItem('method').value	= this.METHOD;
				
			}
			else {
			
				this.oFORM.setAttribute('action',SITE.CONFIG.DIR.xml + '/' + SITE.CONFIG.MODULE + '.php');
				this.oFORM.setAttribute('target','AJAXHiddenIFrame');
				this.IFRAME.parentNode.appendChild(this.oFORM);

			}

			if (!SITE.BROWSER.isIE) {
				
				this.oFORM.style.cssText				= 'position:absolute; visibility: hidden;';
				
			}
			else {
				
				this.oFORM.parentNode.style.cssText		= 'position:absolute; visibility: hidden;';	
				
			}			
			
			this.oFORM.submit();
			
		}
		else if ((node.nodeName.toUpperCase() == 'INPUT') && (node.attributes.getNamedItem('type').toUpperCase() == 'FILE')) {

			

		}

	}
	catch(e) {

		alert(e.message);

	}

}

AJAX.prototype.DROPIFRAME								= function () {

	this.RESPONSE										= SITE.BINDARRAY(arguments._toArray());

	try {

		this.DIVIFRAME.parentNode.removeChild(this.DIVIFRAME);

	}
	catch(e) {

		alert(e);

	}

	for (var i in SITE.WINDOWS.ARRAY) {
		
		var W											= SITE.WINDOWS.ARRAY[i];
		
		if (W.ID) {
		
			W._closeWindow();
			
		}
		
	}

/*	if (objWindow) {

		objWindow._closeWindow();

	}
*/
	this.JSON();

}

AJAX.prototype.CREATEIFRAME								= function () {

	this.DIVIFRAME										= document.createElement('DIV');
	this.DIVIFRAME.id 									= 'hiddenForm';
	this.DIVIFRAME.style.cssText 						= 'position: absolute; visibility: hidden; width: 0; heigth: 0; z-index: -5; left: 0; top: 0;';
	this.DIVIFRAME.innerHTML 							= '<FORM></FORM><IFRAME src="javascript:\'\'" name="AJAXHiddenIFrame" id="AJAXHiddenIFrame" style="width:0px; height:0px; overflow:hidden; border:none;"></IFRAME>';

	document.body.appendChild(this.DIVIFRAME);	

	this.IFRAME											= document.getElementById('AJAXHiddenIFrame');

}

AJAX.prototype.JSON										= function () {

	if (this.RESPONSE && this.CALLBACK) {

		try {

			var callback								= this.CALLBACK + '(this.RESPONSE)';

			eval(callback);

			delete this;

		}
		catch (e) {}

	}

}

AJAX.prototype.RESET									= function () {

	this.CALLBACK										= null;
	this.RESPONSE										= null;
	this.XMLHTTP										= null;

}


SITE.ADD('AJAX',AJAXOBJECT);



// META.CLASS.JS

oMeta													= function()
	{
	this.metaDescription								= '';
	this.metaKeywords									= '';

	this.metaArray										= '';

	return this;
	}

oMeta.prototype.__getMeta								= function()
	{
	this.metaArray										= document.getElementsByTagName('META');
	this._length										= this.metaArray.length;
	}

oMeta.prototype.__setMeta								= function(metaDescription,metaKeywords,metas)
	{
	if (metaDescription)
		this.metaDescription							= metaDescription;

	if (metaKeywords)
		this.metaKeywords								= metaKeywords;
		
	if (metas)
		this.metas										= metas;

	this.__updateMeta();
	this.__updateMetas();
	}

oMeta.prototype.__updateMeta							= function()
	{
	this.__getMeta();
	
	if (this._length)
		{
		for (var i = 0; i < this._length; i++)
			{
			var name									= this.metaArray[i].getAttribute('name');

			if (name)
				{
				if (name.toLowerCase() == 'description')
					this.metaArray[i].content			= this.metaDescription;					

				if (name.toLowerCase() == 'keywords')
					this.metaArray[i].content			= this.metaKeywords;
				}												
			}
		}
	}

oMeta.prototype.__updateMetas							= function() {
	
	if (this._length) {
		
		try {
		
			for (var i = 0; i < this._length; i++) {

				if (this.metaArray[i].hasAttribute('name')) {
				
					var name							= this.metaArray[i].getAttribute('name');
		
					if (name) {
						
						if (name.toLowerCase() != 'description' && name.toLowerCase() != 'keywords' && name.toLowerCase() != 'content-type') {
							
							document.getElementsByTagName('head')[0].removeChild(this.metaArray[i]);
							
						}
							
					}
					else {
						
						document.getElementsByTagName('head')[0].removeChild(this.metaArray[i]);
						
					}
					
				}
					
			}
			
			if (this.metas) {
			
				document.getElementsByTagName('head')[0].innerHTML += this.metas;
			
			}
			
		}
		catch(e) {}
					
	}
	
}

var oMeta												= new oMeta();



// ADV.JS

var advBlocks											= {

	'obj' :												null,

	'loadBlocks' :										function (xml) {

	if (xml != undefined)
		{
		this.CLEAROLDBLOCKS();

		this.blocks										= xml.getElementsByTagName('advBlock');

		for (var i = 0; i < this.blocks.length; i++)
			{
			advBlock.loadBlock(this.blocks[i]);
			}

		}

	},

	'CLEAROLDBLOCKS' :									function () {

		if (this.blocks) {

			if (this.blocks.length) {

				for (var i = 0; i < this.blocks.length; i++) {

					advBlock.clearBlock(this.blocks[i]);

				}

			}

		}

	}

}

var advBlock											= {

	'obj' :												null,

	'getID' :											function (xml) {

		if (xml) {

			this.id										= xml.attributes.getNamedItem('id').value;

		}
		else
			this.id										= 0;

	},

	'getContent' :										function (xml) {

		if (xml) {

			if (xml.firstChild)
				this.content							= xml.firstChild.data;
			else
				this.content							= '';

		}

	},

	'getDivStyle' :										function (xml) {

		if (xml) {

			this.divStyle								= xml.attributes.getNamedItem('divStyle').value;

		}
		else
			this.divStyle								= '';

	},

	'loadBlock' : 										function (xml) {

		this.getID(xml);
		this.getContent(xml);
		this.getDivStyle(xml);

		this.drawBlock();

	},

	'drawBlock' : 										function () {

		div												= document.getElementById(this.id);

		if (div) {

			div.style.cssText							= this.divStyle;
			div.innerHTML								= this.content;

		}

	},

	'clearBlock' :										function (xml) {

		if (xml) {
	
			this.getID(xml);
			this.getDivStyle(xml);
			
			if (this.id) {
	
				div										= document.getElementById(this.id);

				if (div) {

					div.style.cssText					= this.divStyle;
					div.innerHTML						= '';

				}

			}

		}

	}

}


// DOCUMENT.CLASS.JS

var SITEDOCUMENT											= {
	
	'NAME':													'',
	'ID':													0,
	
	'TITLE':												'',
	'DOCTITLE':												'',
	'PATH':													'',
	'MODULE':												'',
	
	'SCRIPTS':												[],
	
	'CONTENT':												'',
	'HTML':													'',
	
	'OPEN':													function (name, wait) {
				
		if (typeof(name) != 'undefined') {
			
			if (typeof(wait) == 'undefined') {
				
				wait										= 1;
				
			}
			else {
				
				wait										= parseInt(wait);
				
			}
			
			SITE.DOCUMENT.NAME								= name;
			
			SITE.DOCUMENT.SCRIPTS							= [];

			var container 									= document.getElementById('flashHeader');
			
			if (container != null) {
			
				container.activateMarker(SITE.DOCUMENT.NAME);
				
			}
						
			SITE.DOCUMENT.HASH();
			
			if (SITE.BROWSER.isXML) {
				
				// Возможно осуществить AJAX вгрузку данных
				
				var request									= SITE.CONFIG.DIR.xml + 'getmain.php?mod=' + SITE.DOCUMENT.NAME;

				SITE.AJAX.LOAD(request,'SITE.DOCUMENT.PARSE',wait);
				
			}
			else {
				
				// Нет поддержки AJAX'а
				
				SITE.REDIRECT(SITE.CONFIG.HOST + SITE.DOCUMENT.NAME + '/');
				
			}
			
		}
		else {
			
			alert('Невозможно открыть несуществующий документ');
			
		}
		
	},
	
	'HASH':													function() {
		
		document.location.hash								= '#' + SITE.DOCUMENT.NAME.replace(/&([^=]*)=([^&]*)/igm,'/$2');
		
	},
	
	'PARSE':												function(xml) {
			
		SITE.DOCUMENT.HTML									= '';
				
		try {

			SITE.DOCUMENT.TITLE								= xml.getElementsByTagName('title')[0].firstChild.data;
			SITE.DOCUMENT.DOCTITLE							= xml.getElementsByTagName('docTitle')[0].firstChild.data;


			if (xml.getElementsByTagName('docPath')[0].firstChild != null) {
				
				SITE.DOCUMENT.PATH							= xml.getElementsByTagName('docPath')[0].firstChild.data;
				
			}
			

			SITE.DOCUMENT.CONTENT							= xml.getElementsByTagName('output')[0];
			SITE.DOCUMENT.HTML								= SITE.DOCUMENT.CONTENT.firstChild.data;

			// Парсинг JS-скриптов
			SITE.DOCUMENT.SCRIPT();
					
			SITE.DOCUMENT.MODULE							= xml.getElementsByTagName('myModule')[0].firstChild.data;						
			
			if (xml.getElementsByTagName('metaDescription')[0].firstChild != null)
			
				var metaDescription							= xml.getElementsByTagName('metaDescription')[0].firstChild.data;
				
			else
			
				var metaDescription							= '';
	
			if (xml.getElementsByTagName('metaKeywords')[0].firstChild != null)
			
				metaKeywords								= xml.getElementsByTagName('metaKeywords')[0].firstChild.data;
				
			else
			
				metaKeywords								= '';

			if (xml.getElementsByTagName('metas')[0].firstChild != null)

				var metas									= xml.getElementsByTagName('metas')[0].firstChild.data;
			else
			
				var metas									= '';		
						
			advBlocks.loadBlocks(xml);			
			oMeta.__setMeta(metaDescription,metaKeywords,metas);
									
		}
		catch(e) {alert(e.message);}
				
		var BLOCKS											= {
			
			'TITLE':										SITE.DOCUMENT.TITLE,
			
			'DOCTITLE':										SITE.DOCUMENT.DOCTITLE,
			
			'HTML':											SITE.DOCUMENT.HTML
						
		}
		
		// MENU HACK
		
		try {
						
			document.getElementById('menu').innerHTML = xml.getElementsByTagName('menuCode')[0].firstChild.data;
						
		}
		catch(e) {alert(e.message);}
		
		// END OF MENU HACK		
		
		SITE.DOCUMENT.OUTPUT(BLOCKS);		
		
	},
	
	'SCRIPT':												function() {

		if (SITE.DOCUMENT.HTML) {
		
			var re_scripts 									= /<SCRIPT([^>]*?)>([\w\W]*?)<\/SCRIPT>/ig;
					
			SITE.DOCUMENT.HTML.replace(re_scripts, function(match, attributes, script) {SITE.DOCUMENT.SCRIPTS.push(script);});

		}
		
	},
	
	'HTML':													function(input) {
		
		try {
		
			var childNodes									= input.childNodes;
			var length					 					= childNodes.length;
	
			if (input.nodeName != "output" && input.nodeName != "#text") {
				
				SITE.DOCUMENT.HTML							+= '<' + input.nodeName + '>';
			
			}
		
			if (input.nodeValue) {
				
				SITE.DOCUMENT.HTML							+= input.nodeValue;
			
			}
		
			for (var i = 0; i < length; i++) {
				
				SITE.DOCUMENT.HTML(input.childNodes.item(i));
						
			}		
			
			if (input.nodeName != "output" && input.nodeName != "#text") {
				
				SITE.DOCUMENT.HTML							+= '</' + input.nodeName + '>';
			
			}
			
		}
		catch(e) {alert(e.message);}
		
	},
	
	'OUTPUT':												function(BLOCKS) {
		
		if (typeof(BLOCKS) == 'object') {
		
			for (var i in BLOCKS) {

				switch(i) {
					
					case 'TITLE':							{
						
						SITE.DOCUMENT.SETTITLE(BLOCKS[i]);
						break;
						
					}
					
					case 'DOCTITLE':						{
						
						SITE.DOCUMENT.SETDOCTITLE(BLOCKS[i]);
						break;
						
					}
					
					case 'HTML':							{
						
						SITE.DOCUMENT.SETHTML(BLOCKS[i]);
						break;
						
					}
					
				}
				
			}
			
		}
		
	},
	
	'SETHTML':												function(html) {
		
		if (typeof(html) != 'undefined' && html != '') {
			
			document.getElementById('mainDocument').innerHTML = html;
			
			(window.execScript || self.eval)(SITE.DOCUMENT.SCRIPTS.join('\n'));
			
		}
		
	},
	
	'SETTITLE':												function(title) {
		
		if (typeof(title) != 'undefined' && title != '') {
			
			document.title									= title;
			
		}
		
	},
	
	'SETDOCTITLE':											function(doctitle) {
		
		if (typeof(doctitle) != 'undefined' && doctitle != '') {						
						
			document.getElementById('docTitle').innerHTML	= doctitle;
			
			if (SITE.DOCUMENT.MODULE != 'start') {
				
				document.getElementById('docTitle').className = 'visible';
				
			}
			
		}
		
	},
	
	'INIT':													function() {
		
		
	}
	
}





SITE.ADD('DOCUMENT',SITEDOCUMENT);

SITE.DOCUMENT.INIT();


var oCONTROLLER											= {
	
	'BUSY':												false,
	
	'ELEMENT':											null,
	
	'FIRSTTIME':										true,
	
	'AFTER':											null,			// CALLBACK-AFTER
	
	'SPEED':											0,
	'MAXV':												20,				// MAX Р_Р_Р_Р Р_Р_Р_Р¬ - 20 px Р_ С_Р+Р" / speed.
	'INTERVAL':											null,
	'V':												0,

	'OPENED':											0,

	'BOX':												{
		
		'O':											null,			// OBJECT
		'W':											0,				// WIDTH
		'H':											0				// HEIGHT
		
	},

	'COLLAPSE':											function(element,before,after) {
		
		if (typeof(element) != 'undefined' && !this.BUSY) {

			this.BUSY									= true;

			if (before) {
				
				eval(before);
				
			}
			
			if (after) {
				
				this.AFTER								= after;
				
			}			
										
			this.ELEMENT								= element;
			
			this.SPEED									= 10;
			this.A										= 1;
						
			this.BOX.O									= this.ELEMENT.getElementsByTagName('div')[0];			

			this.OPENED									= parseInt(this.BOX.O.offsetHeight) > 0 ? 1 : 0;
			
			if (this.OPENED) {
					
				this.BOX.O.style.height					= parseInt(this.BOX.O.offsetHeight);
				
			}
			
			var DIMS									= this.GETDIMENSIONS(this.BOX.O);
						
			if (DIMS[1]) {
				
				this.BOX.W								= DIMS[0];
				this.BOX.H								= DIMS[1];				
												
				this.CLIPPING(this.BOX.O);
								
				if (!this.OPENED) {

					this.ELEMENT.style.fontSize			= '0%';								
					this.BOX.O.style.height				= '0px';
					this.BOX.O.style.display			= 'block';
				
//					SITE.TOGGLE(this.ELEMENT.id);
					
				}
																								
				this.INTERVAL							= setInterval('SITE.CONTROLLER.DOCOLLAPSE()',this.SPEED);
								
			}			
			
		}
		
	},
	
	'DOCOLLAPSE':										function() {		
		
		if ((parseInt(this.BOX.O.style.height) < this.BOX.H && !this.OPENED) || (parseInt(this.BOX.O.style.height) > 0 && this.OPENED)) {			

			if (this.FIRSTTIME && !this.OPENED) {
				
				SITE.TOGGLE(this.ELEMENT.id);
				this.FIRSTTIME							= false;
				
			}
		
			var current									= parseInt(this.BOX.O.style.height);

			var V										= parseInt(this.BOX.H / 10);

			if (this.OPENED) {
							
				var diff								= current;
				
			}
			else {

				this.ELEMENT.style.fontSize				= '100%';
				var diff								= this.BOX.H - current;
				
			}

			if (diff <= 0.2 * this.BOX.H) {
								
				this.V									= this.V - (diff / 100);
				
			}
			
			else {
				
				this.V									= V;
				
			}
			
			if (this.V < 1) {				
				
				this.V									= 1;
				
			}

			if (this.OPENED) {
				
				if (parseInt(current - this.V) < 0) {
										
					this.BOX.O.style.height				= 0;
					
				}
				else {
				
					this.BOX.O.style.height				= parseInt(current - this.V);
					
				}
				
			}
			else {
						
				this.BOX.O.style.height					= parseInt(current + this.V);
				
			}
			
			if (parseInt(this.BOX.O.style.height) == 0 && this.OPENED) {
			
				this.BOX.O.style.display				= 'none';
				
			}
						
		}
		else {
												
			clearInterval(this.INTERVAL);
			
			if (!this.OPENED) {
						
				if (parseInt(this.BOX.O.style.height) > this.BOX.H) {
					
					this.BOX.O.style.height				= this.BOX.H;
					
				}

			}
			else {
												
				this.ELEMENT.style.fontSize				= '0%';
				this.BOX.O.style.height					= 0;				
				this.BOX.O.style.display				= 'none';				
				
			}															
			
			if (this.OPENED) {
								
				SITE.TOGGLE(this.ELEMENT.id);
				
				this.BOX.O.style.height					= 'auto';			
				this.ELEMENT.style.fontSize				= '100%';
				this.BOX.O.style.display				= 'block';
				
			}
			
			this.CLIPPING(this.BOX.O);			
			this.FIRSTTIME								= true;			
			
			if (this.AFTER) {
				
				eval(this.AFTER);
				
			}						
			
			this.BOX.O.style.height						= 'auto';
			
			this.BUSY									= false;
			
		}
		
		
	},
	
	'CLIPPING':											function(element) {
		
		if (typeof(element) != 'undefined') {
			
			if (element.style) {
				
				if (element.style.overflow == 'hidden' || element.style.overflow) {
					
					try {					
										
						element.style.overflow			= '';
						
					}
					catch(e) {}
					
				}
				else {
					
					element.style.overflow				= 'hidden';
					
				}
				
			}
			
		}
		
	},
	
	'GETDIMENSIONS':									function(element) {
		
		if (typeof(element) != 'undefined') {
			
			var tmpObject								= element.cloneNode(1);
			
			if (tmpObject) {
												
				tmpObject.style.position				= 'absolute';
				tmpObject.style.visibility				= 'hidden';				
				tmpObject.style.cssText					= 'border: none;';
								
				this.ELEMENT.parentNode.appendChild(tmpObject);				
								
				var w									= parseInt(tmpObject.offsetWidth);
				var h									= parseInt(tmpObject.offsetHeight);			
			
				this.ELEMENT.parentNode.removeChild(tmpObject);
			
				return [w,h];
				
			}
						
		}
		
		return [0,0];
		
	}
	
}

SITE.ADD('CONTROLLER',oCONTROLLER);

var TBLOCK												= {

	'BUSY':												false,				
	'ID':												null,
	'TMPOVER':											'',
	'TMPOUT':											'',	
	
	'SETACTIVE':										function(id) {
							
		if (typeof(id) != 'undefined' && !this.BUSY) {
		
			this.BUSY									= true;
		
			if (id != this.ID) {
		
				this.UNSETOLD();
			
				this.ID									= id;
													
				node									= document.getElementById(this.ID).previousSibling;
																			
				while (node && node.nodeName.toUpperCase() != 'A') {
					
					node								= node.previousSibling;
					
				}
				
				this.TMPOVER							= node.onmouseover;
				this.TMPOUT								= node.onmouseout;
				
				node.onmouseover 						= 'return false;';
				node.onmouseout 						= 'return false;';
				
			}
			else {
				
				if (this.ID) {

					var i								= this.ID.replace(/[a-zA-Z]+([1-9]+)/ig,'$1');
						
					node								= document.getElementById(this.ID).previousSibling;
																						
					while (node && node.nodeName.toUpperCase() != 'A') {
						
						node							= node.previousSibling;
						
					}															
					
					node.onmouseover 					= this.TMPOVER;
					node.onmouseout 					= this.TMPOUT;
												
				}
				
				this.ID									= null;														
				
			}
			
			this.BUSY									= false;

		}
		
	},
	
	'UNSETOLD':											function() {																	
		
		if (this.ID) {

			var i										= this.ID.replace(/[a-zA-Z]+([1-9]+)/ig,'$1');
				
			node										= document.getElementById(this.ID).previousSibling;
																				
			while (node && node.nodeName.toUpperCase() != 'A') {
				
				node									= node.previousSibling;
				
			}															
			
			node.onmouseover 							= this.TMPOVER;
			node.onmouseout 							= this.TMPOUT;

			SITE.TOGGLE('i' + i + '_1','i' + i + '_2');
			
			SITE.TOGGLE(this.ID);	
		
		}
		
	}
	
}

SITE.ADD('TBLOCK',TBLOCK);
