// @Разработчик - Северин В.А. ЦКТ, altair_1987@mail.ru

/*
*  #v-2.3 27.08.09 23:00
*  # мультиязычность
*  # коррекция стиля кнопки Выбрать
*
*  #v-2.2 17.08.09 15:00
*  # редизайн
*  # переход на input кнопки с div
*/

// Языки

var Classif_Lang = [
	['rus','eng'],
	['Выбрать','Choose'],
	['Применить','Apply']
];

// Настройка ввода - вывода
var xy_ = '-'; // разделитель между X и Y (x-y)
var xyxy_ = ','; // разделитель между парами значений (x-y,)

// Стили элементов
var style_classif_bg_div    = 'classif_bg_div';
var style_classif_win_div   = 'classif_win_div block-0 HS1011'
var style_icon_btn_div      = 'btn-close';
var style_body_div          = 'body_div HS1002';
var style_head_div          = 'head_div h3-01';
var style_headers_div       = 'headers_div';
var style_header_div        = 'header_div HS1083';
var style_footer_div        = 'footer_div';
var style_footer_div_btn    = 'btn_div btn button fright HS1049';
var style_footer_div_addbtn = 'add btn btn-plus';
var style_classif_sel       = 'classif_sel HS1047';
var style_classif_add_btn   = 'classif_add btn btn-minus';
var classif_bg_iframe 		= 'classif_bg_div';

// Вывод текстового представления классификатора (возможен в Input Text и в Div)
function StrOutText(Value1, Value2, IsLast, OutElTagName)
{
	switch (OutElTagName)
	{
		case 'INPUT': return Value1+ (Value2? ' - '+Value2:'')  + (IsLast? '':', '); break;
		case 'DIV': return '<font>'+Value1+(Value2? ' - '+Value2:'') + '</font>' + (IsLast? '':'<br>'); break;
		default: return Value1+(Value2? ' - '+Value2:'')  + (IsLast? '':', '); break;
	}
}

// Вывод значений классификатора. Внимание! При изменении формата - следует так же изменить распознование значений
function StrOutValue(Value1, Value2, IsLast)
{
	return Value1+ (Value2? xy_+Value2:'') + (IsLast? '':xyxy_);
}

// Распознование значений. Внимание! При изменении формата, следует так же изменить вывод значений.
function ArrayInValues(StrValues)
{
	var ArrayValues = [];
	
	while (StrValues.length > 0) {
		var CurrSubStr = StrValues.substr(0, (StrValues.indexOf(xyxy_)!= -1? StrValues.indexOf(xyxy_): StrValues.length));
		StrValues = StrValues.substr((StrValues.indexOf(xyxy_)!= -1? StrValues.indexOf(xyxy_): StrValues.length)+1);
			
		var Sub1 = CurrSubStr.substr(0, CurrSubStr.indexOf(xy_) != -1? CurrSubStr.indexOf(xy_): CurrSubStr.length);
		var Sub2 = CurrSubStr.indexOf(xy_) != -1? CurrSubStr.substr(CurrSubStr.indexOf(xy_)+1)  : null;
			
		ArrayValues[ArrayValues.length] = [Sub1, Sub2];
	}
	
	return ArrayValues;
}

var classif_cache = [];


var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera')  > -1);
var isIE = (!isOpera && ua.indexOf('msie') > -1);
 
function getDocumentHeight() {
  return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, getViewportHeight());
}
 
function getViewportHeight() {
  return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}

function classifOnWinRes()
{
	var bg_div = document.getElementById("classif_bg_div");
	bg_div.style.width = document.body.clientWidth + "px";
	bg_div.style.height = getDocumentHeight() + "px";;
	
	classifOnWinScroll();
}

function classifOnWinScroll(){
    var winDiv = document.getElementById("winDiv");
    
    winDiv.style.left = 
		(Math.round(((window.innerWidth ? window.innerWidth : document.documentElement.clientWidth) - 450) / 2) +
    	(window.scrollX ? window.scrollX : document.documentElement.scrollLeft)).toString() +
    	"px";
    winDiv.style.top = 
		(Math.round(((window.innerHeight ? window.innerHeight : document.documentElement.clientHeight) - 115) / 2) + 
		(window.scrollY? window.scrollY : document.documentElement.scrollTop)).toString() + "px";
}


if (typeof addEvent != 'function')
{
 var addEvent = function(o, t, f, l)
 {
  var d = 'addEventListener', n = 'on' + t, rO = o, rT = t, rF = f, rL = l;
  if (o[d] && !l) return o[d](t, f, false);
  if (!o._evts) o._evts = {};
  if (!o._evts[t])
  {
   o._evts[t] = o[n] ? { b: o[n] } : {};
   o[n] = new Function('e',
    'var r = true, o = this, a = o._evts["' + t + '"], i; for (i in a) {' +
     'o._f = a[i]; r = o._f(e||window.event) != false && r; o._f = null;' +
     '} return r');
   if (t != 'unload') addEvent(window, 'unload', function() {
    removeEvent(rO, rT, rF, rL);
   });
  }
  if (!f._i) f._i = addEvent._i++;
  o._evts[t][f._i] = f;
 };
 addEvent._i = 1;
 var removeEvent = function(o, t, f, l)
 {
  var d = 'removeEventListener';
  if (o[d] && !l) return o[d](t, f, false);
  if (o._evts && o._evts[t] && f._i) delete o._evts[t][f._i];
 };
}

function cancelEvent(e, c)
{
 e.returnValue = false;
 if (e.preventDefault) e.preventDefault();
 if (c)
 {
  e.cancelBubble = true;
  if (e.stopPropagation) e.stopPropagation();
 }
};



function getXmlHttp(){
  var xmlhttp;
  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();
  }
  return xmlhttp;
}


function HTMLHttpRequest(myName, callback) { with (this)
{
 this.myName = myName;
 this.callback = callback;

 this.xmlhttp = null;
 this.iframe = null;
 window._ifr_buf_count |= 0;
 this.iframeID = 'iframebuffer' + window._ifr_buf_count++;
 this.loadingURI = '';

 //if (window.XMLHttpRequest && !window.ActiveXObject) xmlhttp = new XMLHttpRequest();
 if (window.XMLHttpRequest || window.ActiveXObject) xmlhttp = new getXmlHttp();

 if (!xmlhttp)
 {
  if (document.createElement && document.documentElement &&
   (window.opera || navigator.userAgent.indexOf('MSIE 5.0') == -1))
  {
   var ifr = document.createElement('iframe');
   ifr.setAttribute('id', iframeID);
   ifr.setAttribute('name', iframeID);
   ifr.style.visibility = 'hidden';
   ifr.style.position = 'absolute';
   ifr.style.width = ifr.style.height = ifr.borderWidth = '0px';
   iframe = document.getElementsByTagName('body')[0].appendChild(ifr);
  }
  else if (document.body && document.body.insertAdjacentHTML)
  {
   document.body.insertAdjacentHTML('beforeEnd', '<iframe name="' + iframeID +
    '" id="' + iframeID + '" style="display: none"></iframe>');
  }
  if (window.frames && window.frames[iframeID]) iframe = window.frames[iframeID];
  iframe.name = iframeID;
 }
 return this;
}};



HTMLHttpRequest.prototype.parseForm = function(form) { with (this)
{
 var str = '', gE = 'getElementsByTagName', inputs = [
  (form[gE] ? form[gE]('input') : form.all ? form.all.tags('input') : []),
  (form[gE] ? form[gE]('select') : form.all ? form.all.tags('select') : []),
  (form[gE] ? form[gE]('textarea') : form.all ? form.all.tags('textarea') : [])
 ];
 for (var i = 0; i < inputs.length; i++)
  for (j = 0; j < inputs[i].length; j++)
   if (inputs[i][j])
   {
    var plus = '++'.substring(0,1); // CodeTrim fix.
    str += escape(inputs[i][j].getAttribute('name')).replace(plus, '%2B') +
     '=' + escape(inputs[i][j].value).replace(plus, '%2B') + '&';
   }
 return str.substring(0, str.length - 1);
}};



HTMLHttpRequest.prototype.xmlhttpSend = function(uri, formStr) { with (this)
{
 xmlhttp.open(formStr ? 'POST' : 'GET', uri, true);
 xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4)
  {
   if (callback) callback(xmlhttp.responseXML, xmlhttp.responseText, loadingURI);
   loadingURI = '';
  }
 };
 if (formStr && xmlhttp.setRequestHeader)
  xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 if (xmlhttp.overrideMimeType)
  xmlhttp.overrideMimeType((/\.txt/i).test(uri) ? 'text/plain' : 'text/xml');
 xmlhttp.send(formStr);
 loadingURI = uri;
 return true;
}};


HTMLHttpRequest.prototype.iframeSend = function(uri, formRef) { with (this)
{
 if (!document.readyState) return false;
 if (document.getElementById) var o = document.getElementById(iframeID).offsetWidth;

 if (formRef) formRef.setAttribute('target', iframeID);
 else
 {
   var ifrDoc = iframe.contentDocument || iframe.document;

  if (!window.opera && ifrDoc.location &&
   ifrDoc.location.href != location.href) ifrDoc.location.replace(uri);
  else iframe.src = uri;
 }
 loadingURI = uri;
 setTimeout(myName + '.iframeCheck()', (window.opera ? 250 : 100));
 return true;
}};


HTMLHttpRequest.prototype.iframeCheck = function() { with (this) {
	try {
		doc = iframe.contentDocument || iframe.document;
		var il = iframe.location, dr = doc.readyState;
		if ((il && il.href ? il.href.match(loadingURI.replace("\?", "\\?")) : 1) &&
		(dr == 'complete' || (!document.getElementById && dr == 'interactive'))) {
			var cbDoc = doc.documentElement || doc;
			if (callback) 
				callback(cbDoc, (cbDoc.innerHTML || (cbDoc.body ? cbDoc.body.innerHTML : '')), loadingURI);
			loadingURI = '';
		}
		else 
			setTimeout(myName + '.iframeCheck()', 50);
	}catch(e){setTimeout(myName + '.iframeCheck()', 50);}
}};

HTMLHttpRequest.prototype.load = function(uri) { with (this)
{
 if (!uri || (!xmlhttp && !iframe)) return false;
 if (xmlhttp) return xmlhttpSend(uri, '');
 else if (iframe) return iframeSend(uri, null);
 else return false;
}};


HTMLHttpRequest.prototype.submit = function(formRef, evt) { with (this)
{
 evt = evt || window.event;
 if (!formRef || (!xmlhttp && !iframe)) return false;

 var method = formRef.getAttribute('method'), uri = formRef.getAttribute('action');

 if (method && method.toLowerCase() == 'post')
 {
  if (xmlhttp) { cancelEvent(evt); return xmlhttpSend(uri, parseForm(formRef)) }
  else if (iframe) return iframeSend(uri, formRef);
  else return false;
 }
 else
 {
  cancelEvent(evt);
  return load(uri + (uri.indexOf('?') == -1 ? '?' : '&') + parseForm(formRef));
 }
}};


var ReqArray = [];

function ClassifPreload(ValuesStr, Classif1Uri, Classif2Uri, ReqParams){
    var ArrayValues = ArrayInValues(ValuesStr);
    
    var tmpURI_1 = Classif1Uri + '?' + ReqParams;
    var tmpURI_2 = Classif2Uri;
    
    var NoValuesFlag = ArrayValues.length > 0;
    
    NoValuesFlag = NoValuesFlag ? ArrayValues[0] != null : NoValuesFlag;
    if (NoValuesFlag) {
        for (var i = 0; i < ArrayValues.length; i++) {
        
            var flag1 = false;
            var flag2 = false;
            for (var j = 0; j < classif_cache.length; j++) {
                if (classif_cache[j][2] == tmpURI_1) {
                    flag1 = true;
                }
                
                if (classif_cache[j][2] == tmpURI_2 + '?value=' + ArrayValues[i][0] + (ReqParams.length > 0 ? '&' + ReqParams : '')) {
                    flag2 = true;
                }
            }
            
            if (!flag1) {
                var Req = ReqArray[ReqArray.length] = new HTMLHttpRequest('ReqArray[' + ReqArray.length + ']', AddInClassifCache);
                classif_cache[classif_cache.length] = [null, null, tmpURI_1, false];
                Req.load(tmpURI_1);
            }
            
            if (!flag2) {
                var Req = ReqArray[ReqArray.length] = new HTMLHttpRequest('ReqArray[' + ReqArray.length + ']', AddInClassifCache);
                classif_cache[classif_cache.length] = [null, null, tmpURI_2 + '?value=' + ArrayValues[i][0] + (ReqParams.length > 0 ? '&' + ReqParams : ''), false];
                Req.load(tmpURI_2 + '?value=' + ArrayValues[i][0] + (ReqParams.length > 0 ? '&' + ReqParams : ''));
            }
        }
    }
    else {
        var flag1 = false;
        for (var j = 0; j < classif_cache.length; j++) {
            if (classif_cache[j][2] == tmpURI_1) {
                flag1 = true;
            }
        }
        
        if (!flag1) {
            var Req = ReqArray[ReqArray.length] = new HTMLHttpRequest('ReqArray[' + ReqArray.length + ']', AddInClassifCache);
            classif_cache[classif_cache.length] = [null, null, tmpURI_1, false];
            Req.load(tmpURI_1);
        }
    }
}


function AddInClassifCache(XMLdoc,PlanText,Uri)
{
	var flag = true;
	var id = undefined;
	for (var i = 0; i < classif_cache.length; i++) {
		if (classif_cache[i][2] == Uri)
		{
			flag = false;
			if (classif_cache[i][3] == false) {
				id = i;
			}
		}
	}
	
	if (flag) classif_cache[classif_cache.length] = [XMLdoc,PlanText,Uri,true];
	if (id != undefined) {
		classif_cache[id][0] = XMLdoc;
		classif_cache[id][1] = PlanText;
		classif_cache[id][3] = true;
	}
}

function ClassifWin(OutHiddenElId, OutElId, Classif1Label, Classif2Label, Classif1Uri, Classif2Uri, ReqParams, WinTitle) 
{ 
	var Curr_Lang = 'rus';
	var LangIndex;
	
    var cookies = document.cookie; // 'jdns=; lnj=; lang=safd; LANG=rus;'; //
    var lang_s_start = cookies.indexOf('LANG=');
    if (lang_s_start > -1) {
		var tmp_str = cookies.substr(lang_s_start, cookies.length);
		Curr_Lang = tmp_str.substr(tmp_str.indexOf('=') + 1, tmp_str.indexOf(';') > 0 ? tmp_str.indexOf(';') - tmp_str.indexOf('=') - 1 : tmp_str.length - tmp_str.indexOf('='));
	}
	
	for (var i=0; i<Classif_Lang[0].length; i++)
	{
		if (Classif_Lang[0][i]== Curr_Lang)
		{
			LangIndex = i;
		}
	}	

	with (this)
	{
		var tmp; // Мусор
		
		this.parentObj = this;
		
		this.OutEl = document.getElementById(OutElId);
		this.OutHiddenElId = document.getElementById(OutHiddenElId);
		
		this.Classif1Label = Classif1Label;
		this.Classif2Label = Classif2Label;
		
		this.Classif1Uri = Classif1Uri;
		this.Classif2Uri = Classif2Uri;
		
		this.ReqParams = ReqParams;
		 
		// Создали бэкграунд
		this.classif_bg_div = document.createElement((window.XMLHttpRequest && !window.ActiveXObject)?"div":"iframe");
		this.classif_bg_div.id = "classif_bg_div";
		this.classif_bg_div.className = style_classif_bg_div;
		
		this.classif_bg_div.style.width = document.body.clientWidth+"px";
		this.classif_bg_div.style.height = getDocumentHeight()+"px";

		document.body.appendChild(this.classif_bg_div);	
		
		this.winResFunc = window.onresize;
		
		window.onresize = classifOnWinRes;

		// Конструируем окно
		this.classif_win_div = document.createElement("div");
		this.classif_win_div.className = style_classif_win_div;
	
		this.classif_win_div.id = "winDiv";
	
		this.classif_win_div.style.left = (Math.round(((window.innerWidth ? window.innerWidth : document.documentElement.clientWidth) - 450) / 2) +
    		(window.scrollX ? window.scrollX : document.documentElement.scrollLeft)).toString() +
    		"px";
		this.classif_win_div.style.top = (Math.round(((window.innerHeight ? window.innerHeight : document.documentElement.clientHeight) - 115) / 2) + 
			(window.scrollY? window.scrollY : document.documentElement.scrollTop)).toString() + 
			"px";

		document.body.appendChild(this.classif_win_div);
		this.winScrollFunc = window.onscroll;
		window.onscroll = classifOnWinScroll;
		
		// Сделали хедер
		tmp = document.createElement("div");
		tmp.className = style_head_div;
		tmp.innerHTML = WinTitle;
		this.classif_win_div.appendChild(tmp);
		
		// Иконка закрытия
		this.icon_btn_div = document.createElement("input");
		this.icon_btn_div.type = "button";
		this.icon_btn_div.className = style_icon_btn_div;
		//this.icon_btn_div.innerHTML = "";
		this.icon_btn_div.parentObj = this;
		this.icon_btn_div.onclick = Close;
		tmp.appendChild(this.icon_btn_div);
		
		// основная часть окна
		this.body_div = document.createElement("div");
		this.body_div.className = style_body_div;
		this.classif_win_div.appendChild(this.body_div);
		
		// заголовки столбцов
		this.headers_div = document.createElement("div");
		this.headers_div.className = style_headers_div;
		this.body_div.appendChild(this.headers_div);
		tmp =  document.createElement("div");
		tmp.className = style_header_div;
		tmp.innerHTML = this.Classif1Label;
		this.headers_div.appendChild(tmp);
		tmp =  document.createElement("div");
		tmp.className = style_header_div;
		tmp.innerHTML = this.Classif2Label;
		this.headers_div.appendChild(tmp);		
		
		// футер
		this.footer_div = document.createElement("div");
		this.footer_div.className = style_footer_div;
		this.classif_win_div.appendChild(this.footer_div);		
		
		// Кнопка "Применить"
		this.footer_div_btn = document.createElement("input");
		this.footer_div_btn.type = "button";
		this.footer_div_btn.value = Classif_Lang[2][LangIndex]; //"Применить"
		this.footer_div_btn.className = style_footer_div_btn;
		this.footer_div_btn.parentObj = this;
		this.footer_div_btn.onclick = Apply;		
		this.footer_div.appendChild(this.footer_div_btn);	
		
		this.footer_div_addbtn = document.createElement("input");
		this.footer_div_addbtn.type="button";
		this.footer_div_addbtn.className = style_footer_div_addbtn;		
		this.footer_div_addbtn.body_div = this.body_div;
		this.footer_div_addbtn.parentObj = this;
		this.footer_div_addbtn.onclick = AddSel;
		
		this.footer_div.appendChild(this.footer_div_addbtn);

		var ArrayValues = [];
		var StrValues = this.OutHiddenElId.value;
		
		var ArrayValues = ArrayInValues(StrValues);

		if (ArrayValues.length > 0) {
		if (ArrayValues[0] != null) {
			for (var i = 0; i < ArrayValues.length; i++) {
				this.AddSel(null, ArrayValues[i][0], ArrayValues[i][1], (i < ArrayValues.length - 1));
			}
		}
		else
		{this.AddSel();}
		
		}else
		{
			this.AddSel();
		}
		
 		return this;
	}
};

ClassifWin.prototype.AddSel = function(evt,p1,p2,last)
{
	var body_div = this.body_div;
	
	var classif_line_div = document.createElement("div");
	classif_line_div.className = "classif_line_div";
	body_div.appendChild(classif_line_div);
	
	var Sel1 = document.createElement("select");

	if (p1) Sel1.p1 = p1;
	Sel1.className = style_classif_sel;
	Sel1.disabled =true;
	Sel1.parentObj = this.parentObj;
	classif_line_div.appendChild(Sel1);
	
	var Sel2 = document.createElement("select");
	if (p2) Sel2.p2 = p2;	
	Sel2.className = style_classif_sel;
	Sel2.disabled =true;
	Sel1.Sel2 = Sel2;
	Sel2.parentObj = this.parentObj;
	classif_line_div.appendChild(Sel2);	
	
	classif_line_div.Sel1 = Sel1;
	classif_line_div.Sel2 = Sel2;
	
	
	var Btn = document.createElement("input");
	Btn.type = "button";
	Btn.className = style_classif_add_btn;
	Btn.classif_line_div = classif_line_div;
	
	Btn.Sel1 = Sel1;
	Btn.Sel2 = Sel2;
	
	Btn.body_div = body_div;
	Btn.onclick = this.parentObj.RemSel;
	
	Btn.parentObj = this.parentObj;
	
	classif_line_div.appendChild(Btn);
	
	var tmpURI = this.parentObj.Classif1Uri+'?'+this.parentObj.ReqParams;
	var flag = false;
	for (var i = 0; i< classif_cache.length; i++)
	{
		if ((classif_cache[i][2] == tmpURI)&&(classif_cache[i][3] == true))
		{
			this.parentObj.FillSel1(classif_cache[i][0], classif_cache[i][1], classif_cache[i][2], 
			{"Sel1": Sel1, "Sel2": Sel2, "parentObj": this.parentObj}
			);
			
			flag = true;
			break;
		}
	}
	if (!flag) {
		var Req = ReqArray[ReqArray.length] = new HTMLHttpRequest('ReqArray[' + ReqArray.length + ']', this.parentObj.FillSel1);
		Req.parentObj = this.parentObj;
		Req.Sel1 = Sel1;
		Req.Sel2 = Sel2;
		
		Req.load(tmpURI);
	}
}

ClassifWin.prototype.FillSel1 = function(XMLdoc,PlanText,Uri,obj)
{
	obj = obj? obj : this;
	
	AddInClassifCache(XMLdoc,PlanText,Uri);
	
	var DocEl = XMLdoc.documentElement? XMLdoc.documentElement.childNodes : XMLdoc.getElementsByTagName('select')[0].childNodes;
	
	obj.Sel1.disabled = false;
	
	for (var i = 0; i < DocEl.length; i++) {	
			var Opt = document.createElement('option');
			obj.Sel1.appendChild(Opt);
								
			var XMLOpt = DocEl[i];
								
			Opt.text = XMLOpt.text? XMLOpt.text+'' : (XMLOpt.textContent? XMLOpt.textContent+'' :  (XMLOpt.innerText? XMLOpt.innerText+'': ''));

			var id = XMLOpt.attributes.getNamedItem('id');
			var def = XMLOpt.attributes.getNamedItem('def')
			Opt.value = (id? id.value: null);

			try{			
				Opt.selected = (obj.Sel1.p1? obj.Sel1.p1 == Opt.value : (def? true: false));	
			}catch(e){} 
   	}
	
	obj.Sel1.onchange = obj.parentObj.Sel1Change;
	
	if (obj.Sel1.p1) {
		obj.parentObj.Sel1Change(null, obj.Sel1);
		obj.Sel1.p1 = false;
	}
}

ClassifWin.prototype.FillSel2 = function(XMLdoc,PlanText,Uri,obj)
{
	obj = obj? obj : this;
	
	AddInClassifCache(XMLdoc,PlanText,Uri);

	var DocEl = XMLdoc.documentElement? XMLdoc.documentElement.childNodes : XMLdoc.getElementsByTagName('select')[0].childNodes;	
	
	obj.Sel2.disabled = false;
	for (var i = 0; i < DocEl.length; i++) {	
			var Opt = document.createElement('option');
			obj.Sel2.appendChild(Opt);					
			
			var XMLOpt = DocEl[i];
								
			Opt.text = XMLOpt.text? XMLOpt.text+'' : (XMLOpt.textContent? XMLOpt.textContent+'' :  (XMLOpt.innerText? XMLOpt.innerText+'': ''));

			var id = XMLOpt.attributes.getNamedItem('id');
			var def = XMLOpt.attributes.getNamedItem('def')
			Opt.value = (id? id.value: null);
			
			try{
			Opt.selected = (obj.Sel2.p2? obj.Sel2.p2 == Opt.value : (def? true: false));	
			}
			catch(e){}
    	}
	
	if (obj.Sel2.p2)
	{
		obj.Sel2.p2 = false;
	}
}

ClassifWin.prototype.Sel1Change = function(evt, obj)
{
	obj = obj? obj: this;

	if ((obj.value=="")||(obj.value==null)||(obj.value==undefined)||(obj.value=="null"))
	{
			if (obj.Sel2.options) {
				for (var j = obj.Sel2.options.length - 1; j >= 0; j--) {
					obj.Sel2.removeChild(obj.Sel2.options[j]);
				}
			}		
		obj.Sel2.disabled = true;
	}
	else
	{
	var tmpURI = obj.parentObj.Classif2Uri+'?'+'value='+obj.value+(obj.parentObj.ReqParams.length>0? '&'+obj.parentObj.ReqParams:'');
	var flag = false;
	for (var i = 0; i< classif_cache.length; i++)
	{
		if ((classif_cache[i][2] == tmpURI)&&(classif_cache[i][3]==true))
		{
			if (obj.Sel2.options) {
				for (var j = obj.Sel2.options.length - 1; j >= 0; j--) {
					obj.Sel2.removeChild(obj.Sel2.options[j]);
				}
			}			
			
			obj.parentObj.FillSel2(classif_cache[i][0], classif_cache[i][1], classif_cache[i][2], 
			{"Sel1": obj, "Sel2": obj.Sel2, "parentObj": obj.parentObj}
			);
			
			flag = true;
			break;
		}
	}
	if (!flag) {
		var Req = ReqArray[ReqArray.length] = new HTMLHttpRequest('ReqArray['+ReqArray.length+']',obj.parentObj.FillSel2);
		Req.parentObj = obj.parentObj;
		Req.Sel1 = obj;
		Req.Sel2 = obj.Sel2;
		
		if (obj.Sel2.options) {
			for (var i = obj.Sel2.options.length - 1; i >= 0; i--) {
				obj.Sel2.removeChild(obj.Sel2.options[i]);
			}
		}
		
		Req.load(obj.parentObj.Classif2Uri+'?'+'value='+obj.value+(obj.parentObj.ReqParams.length>0? '&'+obj.parentObj.ReqParams:''));		

	}
	}		
}

ClassifWin.prototype.RemSel = function()
{
	this.body_div.removeChild(this.classif_line_div);
}

ClassifWin.prototype.Close = function()
{
	window.onscroll = this.parentObj.winScrollFunc;
	window.onresize = this.parentObj.winResFunc;	
	
	//document.body.removeChild(this.parentObj.iframe);
	document.body.removeChild(this.parentObj.classif_win_div);
	document.body.removeChild(this.parentObj.classif_bg_div);
}

ClassifWin.prototype.Apply = function()
{
	this.parentObj.OutEl;
	this.parentObj.OutHiddenElId;
	this.parentObj.body_div;
	
	var OutValue = [];
	var OutText = [];
	var NValue = 0;
	var NText = 0;
	
	var SelDivArr = this.parentObj.body_div.childNodes;

	this.parentObj.OutEl.value = '';
	this.parentObj.OutHiddenElId.value = '';

	for (var i = 0; i < SelDivArr.length; i++)
	{
		if (SelDivArr[i].className == 'classif_line_div')
		{
		if (SelDivArr[i].Sel1.value) 
			{
				if ((SelDivArr[i].Sel1.value != null) && (SelDivArr[i].Sel1.value != "null")) {	
					
					tmpArrVal = [];
					tmpArrVal[0] = SelDivArr[i].Sel1.value;
					
					
					tmpArrText = [];
					tmpArrText[0] = SelDivArr[i].Sel1.options[SelDivArr[i].Sel1.options.selectedIndex].text;

					if (SelDivArr[i].Sel2.value && (SelDivArr[i].Sel2.value != null) && (SelDivArr[i].Sel2.value != "null")) {
						tmpArrVal[1] = SelDivArr[i].Sel2.value;
						tmpArrText[1] = SelDivArr[i].Sel2.options[SelDivArr[i].Sel2.options.selectedIndex].text;
					}
					
					var MustAdd = true;
					
					for (var j = 0; j<OutValue.length; j++)
					{
						if ((OutValue[j][0] == tmpArrVal[0]) && (OutValue[j][1] == tmpArrVal[1])) {
							MustAdd = false;
							break;
						}
					}
					
					if (MustAdd) {
						OutValue[OutValue.length] = tmpArrVal;
						OutText[OutText.length] = tmpArrText;
					}
				}
			}
		}
	}

	var tmpOutValue = '';
	
	for (var i = 0; i< OutValue.length; i++)
	{
		tmpOutValue += StrOutValue(OutValue[i][0],OutValue[i][1],(i == (OutValue.length-1)));
	}
	
	var tmpOutText = '';
	
	for (var i = 0; i< OutText.length; i++)
	{
		tmpOutText += StrOutText(OutText[i][0],OutText[i][1],(i == (OutText.length-1)), this.parentObj.OutEl.tagName);
	}	
	
	this.parentObj.OutHiddenElId.value = tmpOutValue;
	
	switch (this.parentObj.OutEl.tagName)
	{
		case 'INPUT': this.parentObj.OutEl.value = tmpOutText; break;
		case 'DIV': this.parentObj.OutEl.innerHTML = tmpOutText; break;
		default: break;
	}
	
	

	window.onscroll = this.parentObj.winScrollFunc;
	window.onresize = this.parentObj.winResFunc;
	//document.body.removeChild(this.parentObj.iframe);
	document.body.removeChild(this.parentObj.classif_win_div);
	document.body.removeChild(this.parentObj.classif_bg_div);
	
	
	// выполняется после выбора значений селектора, если определена
	if (afterClassifWin) eval("afterClassifWin()");
} 

