function appendData(data_str, parent_node, mode){
    //заводим уникальный идентефикатор для меток
    var milisec = new Date;
    milisec = milisec.getTime();

    //regExp выгребаем все конструкции script
    var js_reg = /<script.*?>(.|[\r\n])*?<\/script>/ig;

    var js_str = js_reg.exec(data_str);
    if (js_str != null) var js_arr = new Array(js_str.shift());

    while(js_str) {
            js_str = js_reg.exec(data_str);
            if (js_str != null) js_arr.push(js_str.shift());
    }

    //вставляем получившийся текст с метками
	if(mode == 'rewrite') {
            document.getElementById(parent_node).innerHTML = data_str;
    } else if (mode == 'append') {
            document.getElementById(parent_node).innerHTML += data_str;
    } else if (mode == 'insert') {
            var old_text = document.getElementById(parent_node).innerHTML;               
               document.getElementById(parent_node).innerHTML= data_str+old_text;
    }
    //выражение для выгребания контента между тегами script
    var js_content_reg = /<script.*?>((.|[\r\n])*?)<\/script>/ig;
    //заменяем метки на javascript
    if (js_arr)
    for (i = 0; i < js_arr.length; i++) {
            var js_content = js_content_reg.exec(js_arr[i]);
            if (js_content && js_content[1])
				eval(js_content[1]);
    }
}

function doLoad(value,path,target,method,write_type,callback) {
	if (method == 'undefined') method=null;
	if (write_type == 'undefined' || !write_type || write_type=='') write_type='rewrite';
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState == 4 && target.length > 0) {  
			if (callback && typeof callback!='undefined')
			{
				callback(req.responseJS);
			}

			if (target.indexOf(";") == -1)
			{
				appendData(req.responseJS.content,target,write_type);
			}
			else
			{
				target = target.split(";");
				for (i in target) 
				{
					appendData(req.responseJS.content[i],target[i],write_type);
				}
			}
			
		}
	}
	req.open(method, path, true);
	req.send( { 'data': value } );
}   


function ClientWidth() {
	return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function ClientHeight() {
	return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}	

function ScrollLeft() {
	return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.scrollLeft:document.body.scrollLeft;
}

function ScrollTop() {
	return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.scrollTop:document.body.scrollTop;
}	



function runWindow(res) {
	document.getElementById('window').style.display='block';
	win=document.getElementById('win_zone');

	resLeft=((ClientWidth()-win.clientWidth)/2)+ScrollLeft();
	resTop=((ClientHeight()-win.clientHeight)/2)+ScrollTop();
	win.style.left=resLeft+'px';
	win.style.top=resTop+'px';
}

function closeWindow(res) {
	document.getElementById('window').style.display='none';
}
