﻿var trace=0;
var traceDiv='divLeft';
var reqLeft;
var ajax_count=0;
var ajax_status=null;
/////////////////////////////////////////////////////////////////////////////////////
function elShow(id) {
	if (id) {
		var c=document.getElementById(id).className;
		document.getElementById(id).className=c.replace('hide','');
	}
}
function elHide(id) {
	if (id) {
		var c=document.getElementById(id).className;
		document.getElementById(id).className=c+' hide';
	}
}
function NewShow(divid) {
	elHide(divid+'_a1');
	elShow(divid+'_n');
	elShow(divid+'_a2');
}
function NewHide(divid) {
	elShow(divid+'_a1');
	elHide(divid+'_n');
	elHide(divid+'_a2');
}
/////////////////////////////////////////////////////////////////////////////////////
function RequestXMLDoc(req,url,id) {
	req=null;
	if (window.XMLHttpRequest) {
		req=new XMLHttpRequest();// code for IE7, Firefox, Mozilla, etc.
//alert(111);
	}else if (window.ActiveXObject) {
		req=new ActiveXObject("Microsoft.XMLHTTP");// code for IE5, IE6
//alert(222);
	}
	if (req!=null) {
		req.onreadystatechange=onResponse();
		//req.setRequestHeader("label","value");
		req.open("GET",url,true);
		req.send(null);
		
		//fillDiv(id,req.responseXML.documentElement.xml);
	}else{
		alert("Your browser does not support req.");
	}
}


function onResponse() {
var req=this;
var id='divLeft';
fillDiv(id,req.readyState);
//alert("status:"+req.status);
	if(req.readyState!=4) return;
//alert("State:"+req.statusText);
	if(req.status!=200) {
		alert("Problem retrieving XML data");
		return;
	}
	var xml=req.responseXML;
alert("onResponse:"+xml);
	fillDiv(id,xml);
}

function fillDiv(id,txt) {
	if (id) document.getElementById(id).innerHTML=txt;
}
function addDiv(id,txt) {
	if (id) document.getElementById(id).innerHTML+=txt;
}
function clearDiv(id) {
	fillDiv(id,'Загрузка...');
}

function ajax_start(id) {
	if (id) {
		if (!ajax_status) ajax_status=document.getElementById('ajax_status');
		ajax_status.className='';
		ajax_count++;
		clearDiv(id);
//alert("start:"+ajax_count);
	}
}

function ajax_end() {
	ajax_count-=1;
	if (ajax_count==0) {
		ajax_status.className='hide';
	}
//alert("end:"+ajax_count);
}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
function ajax(objId, urlXml, urlXsl, args, callback) {
	if (!callback) callback=onXmlLoad;
	var req;
//	var req=objRequest();

	ajax_start(objId);


	if(window.XMLHttpRequest) {// code for IE7, Firefox, Mozilla, etc.
		req = new XMLHttpRequest();
if (trace) addDiv(traceDiv,-1);
	}else{ if(window.ActiveXObject)// code for IE5, IE6 
		req = new ActiveXObject("Microsoft.XMLHTTP");
		//req = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
if (trace) addDiv(traceDiv,-2);
	}


	req.open( "GET", urlXml, true);

	req.onreadystatechange = function() {
		if (req.readyState==4) {
if (trace) addDiv(traceDiv,"-callback-");
			if (objId && (req.responseText.indexOf("<html>")==0 || !urlXsl || urlXsl=='')) {
				fillDiv(objId,req.responseText);
ajax_end();
				return;
			}

			callback(objId, req.responseXML, urlXsl, args);
		}
	}

	try {
		req.setRequestHeader("Accept-Language", "ru, EN");
		req.setRequestHeader("Accept-Charset", "windows-1251"); 
		req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	} catch(e) {
	}

	req.send( null );
}
        
/////////////////////////////////////////////////////////////////////////////////////
function onXmlLoad(objId, xmlSource, urlXsl, args) {
	var outputXml, text;

if ((!urlXsl) || urlXsl=="") {
	if (window.ActiveXObject) {
		fillDiv(objId,xmlSource.documentElement.xml);	
	}else{
		document.getElementById(objId).appendChild(xmlSource.documentElement);
		//fillDiv(objId,xmlSource.documentElement.outerXml);	
	}
ajax_end();
	return;
}
	
	var _onXslLoad = function(id,xsl,x,a) {
		if (window.ActiveXObject) {
if (trace) addDiv(traceDiv,' trIE ');
			if (!args || args=="")
				text = xmlSource.transformNode(xsldoc);                
			else
				text = TransformIE(xmlSource,xsldoc,args);
			fillDiv(objId,text);
ajax_end();

		}else{
if (trace) addDiv(traceDiv,' rtFF ');
			xsltProcessor.importStylesheet(xsl);
			var pairs=args.split(";");
			if (pairs) {
				for(i=0;i<pairs.length; i++) {
					var pr=pairs[i].split("=");
					if (pr.length==2) {
						xsltProcessor.setParameter( null, pr[0], pr[1]);
					}
				}
			}

if (trace) addDiv(traceDiv,2);
			outputXml =xsltProcessor.transformToFragment/*Document*/(xmlSource, document/*xsl*/);
if (trace) addDiv(traceDiv,2);

document.getElementById(objId).innerHTML='';
document.getElementById(objId).appendChild(outputXml);
ajax_end();

			//text = outputXml.firstChild.innerHTML;
			//alert(text);
		}
	}


//addDiv("divLeft",xmlSource.documentElement.xml);
//return;


	if(window.ActiveXObject) {
if (trace) addDiv(traceDiv,3);
		var xsldoc;


try {
		xsldoc = new ActiveXObject("MSXML2.FreeThreadedDomDocument.3.0"/*"Microsoft.XMLDOM"*/);
} catch(e) {
/*if (trace) addDiv(traceDiv,'(');
	var This = this;
	var xsltProcessor = new XSLTProcessor();
if (trace) addDiv(traceDiv,')');
	new ajax(null, urlXsl, null, null, _onXslLoad);
	return;*/
addDiv(objId,'Для просмотра в Opera требуется версия браузера 9.0 и выше');
return null;
}


		xsldoc.async = true;
		xsldoc.onreadystatechange = function() {
			if(xsldoc.readyState == 4) _onXslLoad();
		}
		xsldoc.load(urlXsl+"?hash=" + Math.random());

	}else{
if (trace) addDiv(traceDiv,4);
		var This = this;
		var xsltProcessor = new XSLTProcessor();
		new ajax(null, urlXsl, null, null, _onXslLoad);
	}
}
 
 
function TransformIE(xml,xsl,args) {
	var i;
	var  objTransformer = new ActiveXObject("MSXML2.XSLTemplate.3.0");
	objTransformer.stylesheet = xsl;
	var xlsproc = objTransformer.createProcessor();
	xlsproc.input = xml;
	var pairs=args.split(";");
	if (pairs) {
		for(i=0;i<pairs.length; i++) {
			var pr=pairs[i].split("=");
			if (pr.length==2) {
				xlsproc.addParameter(pr[0], pr[1]);
			}
		}
	}
	xlsproc.transform();
	return(xlsproc.output);
} 

function objRequest() {
var result_o;

  if (window.XMLHttpRequest) {
    result_o = new XMLHttpRequest();
    if (/*result_xml_b &&*/ result_o.overrideMimeType) {
      result_o.overrideMimeType('text/xml');
    }
  } else {
    if (window.ActiveXObject) {
      var sign_a = ['MSXML2.XMLHTTP.6.0',
                    'MSXML2.XMLHTTP.5.0',
                    'MSXML2.XMLHTTP.4.0',
                    'MSXML2.XMLHTTP.3.0',
                    'MSXML2.XMLHTTP',
                    'Microsoft.XMLHTTP'];

      for (var i = 0, length = sign_a.length; i < length; ++i) {
        try {
          result_o = new ActiveXObject(sign_a[i]);
          i = length;
        } catch(e) {}
      }
    }
  }

  return result_o;
}