/*	######### Begin: Функция _OpacityRun ########
	Запуск:
	_OpacityRun({
		iObj: String || Object	// ID обьекта || DOMObject в котором изменяем opacity (по умолчанинию document.body)
		,fObj: String || Object	// ID обьекта || DOMObject альтернативный (по умолчанинию document.body)
		,fn: Function			// внешняя функция запускаемая по завершению изменения opacity (по умолчанинию NULL)
		,opDX: 5				// скорость изменения opacity (по умолчанинию 5)
		,opStart:	100			// начальное значение opacity (по умолчанинию значение opacity обьекта iObj)
		,opEnd:		30			// конечное значение opacity (по умолчанинию значение 30)
		,opDelay:	20			// задержка таймера (по умолчанинию значение 20мск)
		,setColor:	#cecece		// установить цвет фона ID обьекта (по умолчанинию НЕ устанавливать)
		,zIndex:	1000		// установить zIndex (по умолчанинию НЕ устанавливать)
	});
*/
var $Opacity = {
	'tmp': {
		'oHash': {}
		,'rHash': {}
		,'rPar': {}
		,'init': null
		,'dObjID': null
	},'fadeDef': {
		'opStart': 100
		,'opDX': 5
		,'opEnd': 30
		,'opDelay': 20
	}
};

function _OpenWin(iHash) {	//	Заплатка для аналога фишаup
	if(!iHash) iHash = {};
	if(!iHash.fObj) iHash.fObj = 'insBlockDiv';
	if(!iHash.dObj) iHash.dObj = document.getElementById('opDiv');
	_destroy_Opacity();

	var oHash = $Opacity.tmp.oHash;
	for(var prop in $Opacity.fadeDef) oHash[prop] = iHash[prop] || $Opacity.fadeDef[prop];

	$Opacity.tmp.dObjID = iHash.dObj;
	oHash.fObjID = iHash.fObj;
	oHash.fn = _OpenFN;
	if(!iHash.setColor) iHash.setColor = '#000000';

//var ttObj = document.getElementById('overlayBG');
//alert('ttObj= ' + ttObj);

dHide('overlayBG');
if($cnf_Ext.browser.msie) _css_Ext('overlayBG', { position:'absolute' });

//var ovClass = ($cnf_Ext.browser.mozilla ? 't_overlayBG' : 't_overlayBG1');
//if(ttObj) ttObj.className = ovClass;


	_css_Ext(oHash.fObj, { display:'block' });
//_css_Ext(iHash.dObj, { 'backgroundColor':iHash.setColor,  'opacity':oHash.opStart });
	if($win.Obj) {
		var hideID = $win.Obj.tComHash.par.hideID || [];
//alert('$win.Obj= ' + $win.Obj);
		for(var i=0; i<hideID.length; i++) _css_Ext(hideID[i], {display:'none'});
	}
	
//	$Opacity.tmp.oHash.timerID = window.setInterval(_OpacityApply, oHash.opDelay);


}

function _OpenFN(tID) {	//	Заплатка для аналога фишаup
//	var tObj = _css_Ext(tID, { display:'block', 'opacity':100 });
	if($cnf_Ext.browser.msie) {
//		tObj.style.filter = '';
//		document.body.style.filter = '';
	}

}

function _CloseWin(tID, fl) {	//	Заплатка для аналога фишаup
//alert('tID = ' + tID);

//	_destroy_Opacity();
//	var oHash = $Opacity.tmp.oHash;
//	if(!oHash) oHash = $Opacity.tmp.oHash;
	var oHash = $win.Obj.eOpacity;
	for(var prop in $Opacity.fadeDef) if(!oHash[prop]) oHash[prop] = $Opacity.fadeDef[prop];
	oHash.fObjID = tID;
	oHash.fn = _CloseFN;
$Opacity.tmp.oHash = oHash;
	if(!tID) tID = 'insBlockDiv';
	$Opacity.tmp.oHash.timerID = window.setInterval(_OpacityApply, oHash.opDelay);

}

function _CloseResize(tID, fl) {	//	Закрытие изменением размеров
	var oHash = $win.Obj.eOpacity;
	for(var prop in $Opacity.fadeDef) if(!oHash[prop]) oHash[prop] = $Opacity.fadeDef[prop];
	oHash.fObjID = tID;
	oHash.fn = _CloseFN;
$Opacity.tmp.oHash = oHash;
	if(!tID) tID = 'insBlockDiv';

	var eObj = document.documentElement;
	var sw =  eObj.scrollLeft;
	var sh =  eObj.scrollTop;
	if($cnf_Ext.browser.opera) { sw =  window.pageXOffset; sh =  window.pageYOffset; }
//	if(!$cnf_Ext.browser.msie) sw =0, sh=0;
//alert(sh);

var iObj = document.getElementById(tID);

		$Opacity.tmp.divHash = {
			'divLeft':	parseInt(iObj.offsetLeft) + parseInt(sw)
			,'divTop':	parseInt(iObj.offsetTop) + parseInt(sh)
			,'divWidth':	parseInt(iObj.offsetWidth)
			,'divHeight':	parseInt(iObj.offsetHeight)
			,'delta':	oHash.delta || 10
		}
		$Opacity.tmp.divHash.rsDX = parseInt($Opacity.tmp.divHash.divWidth/$Opacity.tmp.divHash.delta);
		$Opacity.tmp.divHash.rsDY = parseInt($Opacity.tmp.divHash.divHeight/$Opacity.tmp.divHash.delta);
if(oHash.overlayBGHidebefore) {
//	var ttObj = document.getElementById('overlayBG');
//	if(ttObj) ttObj.className = '';
dHide('overlayBG', 1);

if(!$cnf_Ext.browser.msie) {
//	$Opacity.tmp.divHash.divLeft += sw;
//	$Opacity.tmp.divHash.divTop += sh;
}
//	if($cnf_Ext.browser.msie) 
_css_Ext(tID, { 'top':$Opacity.tmp.divHash.divTop, 'left':$Opacity.tmp.divHash.divLeft });
}

_css_Ext(tID, { 'overflow':'hidden' });

	$Opacity.tmp.oHash.timerID = window.setInterval(_ResizeApply, oHash.opDelay);

}

function _ResizeApply(tPar) {	//	Функция таймер для Resize
	var fHash = $Opacity.tmp.oHash;
	var divHash = $Opacity.tmp.divHash;
	var fObj = fHash.fObjID || document.body;
	divHash.divWidth -= divHash.rsDX;
	divHash.divHeight -= divHash.rsDY;
	divHash.divLeft += parseInt(divHash.rsDX/2);
	divHash.divTop += parseInt(divHash.rsDY/2);
	if(divHash.divWidth > 0 && divHash.divHeight > 0) {
//alert('dd= ' + fHash.opStart);
if(fHash.mode == 1) _css_Ext(fObj, { 'left':divHash.divLeft, 'width':divHash.divWidth });
else if(fHash.mode == 2) _css_Ext(fObj, { 'top':divHash.divTop, 'height':divHash.divHeight });
else _css_Ext(fObj, { 'top':divHash.divTop, 'left':divHash.divLeft, 'width':divHash.divWidth, 'height':divHash.divHeight });
	} else {
		if(fHash.timerID) clearInterval(fHash.timerID);
		fHash.timerID = null;
		if(fHash.fn) fHash.fn(fHash.fObjID);
//var ttObj = document.getElementById('overlayBG');
//if(ttObj) ttObj.className = '';
dHide('overlayBG', 1);

	}
}

function _CloseFN(tID) {	//	Заплатка для аналога фишаup
	if(!tID) tID = 'insBlockDiv';
//	var tObj = _css_Ext(tID, { display:'none', 'opacity':102 });
	var tObj = _css_Ext(tID, { display:'none' });

	var oHash = $Opacity.tmp.oHash;
	var dObjID = $Opacity.tmp.dObjID || 'opDiv';
//alert('dObjID= ' + dObjID);
	$Opacity.tmp.dObjID = null;
if(1) {
//	var dObj = _css_Ext(dObjID, { 'backgroundColor':'#ffffff' });
//alert('dObjID= ' + dObjID);
	if($cnf_Ext.browser.msie) {
		tObj.style.filter = '';
//		dObj.style.filter = '';
	} else {
		tObj.style.opacity = '';
//		dObj.style.opacity = '';
//alert('dObjID= ' + dObjID);
	}
}
	_destroy_Opacity();
	if($win.Obj) {
		var hideID = $win.Obj.tComHash.par.hideID || [];
		for(var i=0; i<hideID.length; i++) _css_Ext(hideID[i], {display:'block'});
	}
}

function _destroy_Opacity() {	//	Очистка

	var fHash = $Opacity.tmp.oHash;
	if(fHash.timerID) clearInterval(fHash.timerID);
	fHash.init = null;
	var rHash = $Opacity.tmp.rHash;
	var c_debug = 'destroy';
	delete $Opacity.tmp.oHash;	$Opacity.tmp.oHash = {};
	delete $Opacity.tmp.rHash;	$Opacity.tmp.rHash = {};
}

function _OpacityRun(tPar) {	//	Внешний метод для Opacity
	_destroy_Opacity();
	if(!tPar || typeof(tPar) != 'object') tPar = {};

	var rHash = $Opacity.tmp.rHash;
	var oHash = $Opacity.tmp.oHash;
	var rPar = $Opacity.tmp.rPar;

	if(tPar.iObj) {
		var iObjID = null;
		var pType = typeof(tPar.iObj);
		if(pType == 'string') iObjID = tPar.iObj;
		else iObjID = tPar.iObj.id;
		oHash.iObjID = iObjID;
	}

//alert('tPar.fObj= ' + tPar.fObj);
	if(tPar.fObj) {
		var fObjID = null;
		var pType = typeof(tPar.fObj);
		if(pType == 'string') fObjID = tPar.fObj;
		else fObjID = tPar.fObj.id;
		oHash.fObjID = fObjID;
	}
	
	for(var prop in $Opacity.fadeDef) oHash[prop] = $Opacity.fadeDef[prop];

	var fObj = oHash.fObjID || document.body;
	rHash.opacity = _css_Ext(fObj, 'opacity');
	if(tPar.setColor) {
		rPar.filter = _css_Ext(fObj, 'filter');
		rPar.backgroundColor = fObj.bgColor || _css_Ext(fObj, 'backgroundColor');
	}
//alert('dd= ' + rPar.filter);
	
	if(rHash.opacity) oHash.opStart = rHash.opacity;

	for(var prop in tPar) oHash[prop] = tPar[prop];

	if(oHash.opStart < oHash.opEnd) oHash.opDX = 0 - oHash.opDX;
	$Opacity.tmp.oHash.timerID = window.setInterval(_OpacityApply, oHash.opDelay);

	_css_Ext(fObj, { 'backgroundColor': oHash.setColor, 'opacity':oHash.opEnd });

}

function _OpacityApply(tPar) {	//	Функция таймер для Opacity
//alert('tPar= ' + tPar);
	var fHash = $Opacity.tmp.oHash;
	var fObj = fHash.fObjID || document.body;
	if((fHash.opDX > 0 && fHash.opStart > fHash.opEnd)
		|| (fHash.opDX < 0 && fHash.opStart < fHash.opEnd)
		) {
		fHash.opStart -= fHash.opDX;
//alert('dd= ' + fHash.opStart);
//if(!$cnf_Ext.browser.mozilla)
		_css_Ext(fObj, { 'opacity':fHash.opStart });
	} else {
		if(fHash.timerID) clearInterval(fHash.timerID);
		fHash.timerID = null;
		if(fHash.setColor) _css_Ext(fObj, { 'backgroundColor': fHash.setColor });
		else {	_css_Ext(fObj, $Opacity.tmp.rPar);	$Opacity.tmp.rPar = {};	}
		if(fHash.fn) fHash.fn(fHash.fObjID);
dHide('overlayBG', 1);

	}
}

/*	######### End:	_OpacityRun ########	*/

function _browser_Ext() {	//	Тип Браузера
	var c_debug = 'browser';
	var b = navigator.userAgent.toLowerCase();

	var brArr = ['safari', 'opera', 'msie', 'mozilla'];
	// Figure out what browser is being used
	var browser = {
		version: (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
		safari: /webkit/.test(b),
		opera: /opera/.test(b),
		msie: /msie/.test(b) && !/opera/.test(b),
		mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)
	};

	for(var i=0; i<brArr.length; i++){
		if(browser[brArr[i]]) { browser.type = brArr[i]; break; }
	}
return browser;
}

function _gParam_Ext() {		// определение параметров
	var c_debug = '_gParam';
	if($cnf_Ext.par) return;	// уже инициализоран экран
	$cnf_Ext.par = {};

	var nURL = document.URL; 
	var pt = nURL.toString();
	var pt1 = pt.match(/http:\/\/([^\/]+)\//);
	if(pt1) $cnf_Ext.env.sHost = 'http://'+pt1[1];

	var i2 = nURL.lastIndexOf('?');
	var tmp = "";
	if ( i2 > 0) {
		tmp = nURL.substring(i2+1, nURL.length );
		var pt = tmp.split(/\&/);
		for(i=0;i<pt.length;i++){
			var pp = pt[i].split(/=/);
			if(pp && pp.length == 2) {
				pp[1] = pp[1].replace(/\#.+/, '');
				if(pp[1]) $cnf_Ext.par[pp[0]] = pp[1];
			}
		}
	}

	if($cnf_Ext.flDebug && $cnf_Ext.par && $cnf_Ext.par.debug) $cnf_Ext.debug = $cnf_Ext.par.debug;

	if(!$cnf_Ext.uSess) {
		$cnf_Ext.uSess = readCookie_Ext('uSess');
		if(!$cnf_Ext.uSess) $cnf_Ext.uSess = $cnf_Ext.tm + '_' + Math.round(Math.random() * 1000);
		createCookie_Ext('uSess', $cnf_Ext.uSess, 360);
	}
}

function readCookie_Ext(name) {
	var nameEQ = name+"=";
	var ca = document.cookie.split(';');
	for(var i=0;i<ca.length;i++) {
		var c=ca[i];
		while(c.charAt(0)==' ') { c=c.substring(1,c.length) }
		if(c.indexOf(nameEQ)==0){ return unescape(c.substring(nameEQ.length,c.length))}
	}
return null;
}

function createCookie_Ext(name, value, days) {
	if(days) {
		var date=new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires="; expires="+date.toGMTString();
	} else {
		expires="";
	}
	document.cookie = name+"="+escape(value)+expires+"; path=/;"
}

function _html_Ext(it, item) {	//	html
	if(typeof(it) != 'object') it = document.getElementById(it);
	if(!it) return;
	it.innerHTML = item;
return it;
}

function getPosInDiv_Ext(dObj, objAttr)	{	// 
	var posHash = { };
	if(!objAttr) objAttr = {};

	if(typeof(dObj) != 'object') dObj = document.getElementById(dObj);
	if(!dObj) return;

	var iObj = dObj;
	var lev = objAttr.pLev || $cnf_Ext.parentLev;
	for(var i=0;i<lev;i++) {
		var divHash = {
			'divLeft':	iObj.offsetLeft
			,'divTop':	iObj.offsetTop
			,'divWidth':	iObj.offsetWidth
			,'divHeight':	iObj.offsetHeight
			,'divEndX':	iObj.offsetLeft + iObj.offsetWidth
			,'divEndY':	iObj.offsetTop + iObj.offsetHeight
		}

		if(i==0) { posHash = divHash; posHash.parent =  []; }
		else posHash.parent.push(divHash);
		iObj = iObj.parentNode;
		if(!iObj) break;
	}

	var move = $cnf_Ext.mouse.move;

	if(move) {
		posHash.x = move.x;
		posHash.y = move.y;
	}

	var eObj = document.documentElement;
	var sw =  eObj.scrollLeft;
	var sh =  eObj.scrollTop;
	if($cnf_Ext.browser.opera) { sw =  window.pageXOffset; sh =  window.pageYOffset; }

	var ww =  eObj.clientWidth;
	var wh =  eObj.clientHeight;
	if($cnf_Ext.browser.opera) {
		ww =  document.body.clientWidth;
		wh =  document.body.clientHeight;
	}
	
	posHash.wWidth= ww;
	posHash.wHeight= wh;
	posHash.w_scrollLeft= sw;
	posHash.w_scrollTop= sh;

	if($cnf_Ext.browser.opera) {
		sh += 1;
	}

	posHash.x -= dObj.offsetLeft - sw;
	posHash.y -= dObj.offsetTop - sh;

	var wdObj = objAttr.width || posHash.divWidth;
	var hdObj = objAttr.height || posHash.divHeight;
	var top = (wh - hdObj) / 2;
	var left = (ww - wdObj) / 2;
	posHash.centr = {
		'left':	(left > 0 ? left : 0) + posHash.w_scrollLeft
		,'top':	(top > 0 ? top : 0) + posHash.w_scrollTop
	};
//	if($cnf_Ext.browser.msie && dObj.parentNode.tagName != 'BODY') {
//		posHash.centr.left -= posHash.w_scrollLeft;
//		posHash.centr.top -= posHash.w_scrollTop;
//	}

return posHash;
}

function _css_Ext(it, iHash) {	//	css всякие
	if(typeof(it) == 'string') it = document.getElementById(it);
	if(!it) return;

	if(typeof(iHash) == 'string') {
		var out = it.style[iHash]
		if(iHash == 'opacity') {
			if($cnf_Ext.browser.msie) {
				out = it.style['filter']
				var mt = out.match(/opacity=(\d+)/);
				if(mt) out = mt[1];
			}
		}
		return out;
	}

	var pxHash = { 'top':1, 'left':1, 'height':1, 'width':1 };
	for(var prop in iHash) {
		var zn = iHash[prop];
//		if(!zn && zn!=0) continue;
		if(pxHash[prop]) {
			var tm = String(zn).match(/^(\-*)(\d+)/);
			if(tm) zn = tm[1] + tm[2] + 'px';
		}
		if(prop == 'opacity') {
			if($cnf_Ext.browser.msie && zn>0) {	 prop = 'filter'; zn = 'alpha(opacity='+zn+')';
			} else { zn /= 100;
			}
		}
		it.style[prop] = zn;
	}
return it;
}


function name2node(nodeName) {
	return (typeof(nodeName) == 'string' ? document.getElementById(nodeName) : nodeName);
}

function ClassChkSub1(node, cl1) {
	node = name2node(node); if(!node) return;
	var chArr = [];
	if(typeof(cl1) == 'object') {
		for(var prop in cl1) chArr.push(prop);
	} else {
		chArr.push(cl1);
	}
	for(var j=0; j<chArr.length; j++) {
		if(new RegExp('\\b'+chArr[j]).test(node.className)) return true;
	}

	return false;
	}

function ClassChkSub(node, cl1) { node = name2node(node); if(!node) return; return new RegExp('\\b'+cl1).test(node.className) };
function ClassChk(node, cl1) {node = name2node(node); if(!node) return;	 return new RegExp('\\b'+cl1+'\\b').test(node.className) };
function ClassRen(node, cl1, cl2) {node = name2node(node);if(!node) return;ClassDel(node, cl1);ClassAdd(node, cl2);return node; };
function ClassAdd(node, cl1) {node = name2node(node); if(!node) return;	if(!node.className){ node.className=cl1; } else if(!ClassChkSub(node,cl1)) { var cName=node.className+" "+cl1; node.className=cName.split(/\s+/).join(' '); } return node; };
function ClassSet(node, cl1) {node = name2node(node); if(!node) return;	node.className=cl1; return node; };
function ClassDel(node, cl1) {node = name2node(node); if(!node) return;	var cName=node.className;if(cName){cName=cName.replace(new RegExp('\\b'+cl1+'\\b'),'');cName=cName.replace(/\s+/g,' ');node.className=cName.replace(/\s+$/g,'')} return node; };

function dHide(it, fl) {	// Показать/скрыть слой
//	if(typeof(it) != 'object') it = document.getElementById(it);
//	if(!it) return;
	var chClass = 'Hide';
	if(fl == undefined) fl = (ClassChkSub(it, chClass) ? 0 : 1);
	if(fl) ClassAdd(it, chClass);
	else ClassDel(it, chClass);
return it;
}
