/* v 2.1 */

function getNewXmlHttpRequest() {
    var obj = false;
    if(browser.isIE) {
    	obj = new ActiveXObject('Microsoft.XMLHTTP');
    }
    if(browser.isFF) {
      	obj = new XMLHttpRequest();
    }
    if(browser.isOpera) {
      	obj = new XMLHttpRequest();
    }
    if(!obj)
		obj = new ActiveXObject('Msxml2.XMLHTTP');
    return obj;
}

function openUrl(url, target, pObj, center, Width, Height) {

     document.body.style.cursor = 'whait';

     var Obj = document.getElementById(target) ? document.getElementById(target) : createObj(target);
     center = center || false;
     Width = Width || 0;
     Height = Height || 0;
     if(pObj) {
       hideSelect();
       Obj = openFloatDiv(Obj, target, pObj, center, Width, Height);
     }

     var xmlhttp = getNewXmlHttpRequest();
     stat(Obj, xmlhttp.readyState); 

     url = encodeURI(url);
     xmlhttp.open("GET",url,false);
     xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=koi8-r');
     xmlhttp.setRequestHeader("Content-Language", "ru");
     xmlhttp.setRequestHeader("Connection", "close");
     xmlhttp.setRequestHeader('Accept-charset','koi8-r');

     xmlhttp.send(false);

     if (xmlhttp.readyState == 4) {
       launchJavascript(xmlhttp.responseText);
       Obj.innerHTML = xmlhttp.responseText;
     }
}

function sendForm(formObj, pObj) {
     var url = ""; // "/http.php?";
     for(i=0;i<formObj.elements.length;i++) {
       if(formObj.elements[i].name) {
         if(i != 0) url += '&';
         url += formObj.elements[i].name + '=' + formObj.elements[i].value;
       }
       if(formObj.elements[i].type == "file") {
       }
     }

     var target = formObj.elements['target'].value;
     var Obj = document.getElementById(target) || createObj(target);
     if(pObj) {
       hideSelect();
       Obj = openFloatDiv(Obj, target, pObj);
     }

     var xmlhttp = getNewXmlHttpRequest();
     stat(Obj, xmlhttp.readyState); 

     url = encodeURI(url);
     xmlhttp.open("POST","/http.php",false);
     xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=koi8-r');
     xmlhttp.setRequestHeader("Accept-Language", "ru, en");
     xmlhttp.setRequestHeader("Connection", "close");
     xmlhttp.setRequestHeader("Accept-Charset", "windows-1251;q=1, koi8-r;q=0.6, ISO-8859-5;q=0.4, ISO-8859-1;q=0.1");

     xmlhttp.send(url);

     if (xmlhttp.readyState == 4) {
       launchJavascript(xmlhttp.responseText);
       Obj.innerHTML = xmlhttp.responseText;
     }
}

function launchJavascript(responseText) {
      var ScriptFragment = '<script.*?>((\n|\r|.)*?)<\/script>';
      var match    = new RegExp(ScriptFragment, 'img');
      var scripts  = responseText.match(match);

      if(scripts) {
            var js = '';
            for(var s = 0; s < scripts.length; s++) {
                  var match = new RegExp(ScriptFragment, 'im');
                  js += scripts[s].match(match)[1];
            }
            eval(js);
            return true;
      }
      return false;
};

function stat(Obj,n) {
  var inHTML = "";
  switch (n) {
    case 0:
      inHTML = "не инициализирован";
    break;   
    case 1: 
      inHTML =  "загрузка...";
    break;
    case 2: 
      inHTML = "загружено";
    break;
    case 3: 
      inHTML = "в процессе...";
    break;
    case 4: 
      inHTML = "готово";
    break;
    default:
      inHTML = "неизвестное состояние";  
  }  
  Obj.innerHTML = "<img src=\"/img/time.gif\" width=15 height=15 alt=\"" + inHTML + "\" align=center>";
}

function openFloatDiv(Obj, target, pObj, center, Width, Height) {
/* 
	замена Obj как объект с id=target на
	Obj как TextDiv внутри div id='win_' + target
*/
	var elXY = new Coords(0,0);;
	if(!center) {
	  elXY = getPos(pObj);
	} else {
      elXY.x = Math.round((document.body.clientWidth - Width)/2);
//      elXY.y = browser.isIE ? Math.round((document.body.scrollTop > 0 ? document.body.scrollTop : 50) + 50) : Math.round((document.body.clientHeight - Height)/2 + document.body.scrollTop) > 50 ? Math.round((document.body.clientHeight - Height)/2 + document.body.scrollTop) : 100;
//      elXY.y = Math.round((document.body.clientHeight - Height)/2 + browser.isIE ? document.documentElement.scrollTop : document.body.scrollTop) > 50 ? Math.round((document.body.clientHeight - Height)/2 + browser.isIE ? document.documentElement.scrollTop : document.body.scrollTop) : 100;
      if(browser.isIE) {
        elXY.y = Math.round((document.body.clientHeight - Height)/2 + document.documentElement.scrollTop) > 50 ? Math.round((document.body.clientHeight - Height)/2 + document.documentElement.scrollTop) : 100;
      } else {
        elXY.y = Math.round((document.body.clientHeight - Height)/2 + document.body.scrollTop) > 50 ? Math.round((document.body.clientHeight - Height)/2 + document.body.scrollTop) : 100;
      }
	}

//	debugger;
	
	Obj.style.top = elXY.y + 20;
	Obj.style.width = Width != 0 ? Width : 250 + 'px';
	if(Height != 0)
	  Obj.style.height = browser.isIE ? Height + 'px' : '';

	if((elXY.x + 10 + Obj.clientWidth) > document.body.scrollWidth) {
	  Obj.style.left = document.body.scrollWidth - Obj.clientWidth - 10;
	} else {
	  Obj.style.left = elXY.x + 10;
	}
//	debugger;
	
	Obj.style.display = 'block';

    if(document.getElementById('win_' + target)) {
      return Obj;
    }
    A = closeImg(Obj, document.body, "Закрыть");
    Obj.appendChild(A);

	var TextDiv = document.createElement("div");
	Obj.id = 'win_' + target;
	TextDiv.id = target;

	Obj.appendChild(TextDiv);
	Obj.InnerHTML += Obj.style.top + ' ' + Obj.style.left;
	return TextDiv; // сюда идет responseText
}

function closeImg(Parent, sParent, title) {  /* Parent - то что удаляем; sParent - откуда удаляем */
      var A = document.createElement("a");
      A.style.float = 'right';
      A.title = title;
      A.href = "./";
      A.onclick = function() {
        Destroy(Parent, sParent);
        return false;
      };

      var Img = document.createElement("img");
      Img.src = "/img/close.gif";
      Img.border = 0;
      Img.align = "right";
      Img.width = 14;
      Img.height = 13;
      A.appendChild(Img);
      Parent.appendChild(A);
      return A;
}

function createObj(target) {
	var Div = document.createElement("div");
	Div.className= 'floatDiv';
	Div.id = target;
	document.body.appendChild(Div);
	return Div;
}

function Destroy(dObj, fromObj) {
    showSelect();
    fromObj.removeChild(dObj);
    dObj = null;
}

function getPos(elem) {
	var retVal=new Coords(0,0);
    while(elem.offsetParent != null && elem.tagName != 'BODY') {
        retVal.x += elem.offsetLeft;
        retVal.y += elem.offsetTop;
        elem = elem.offsetParent
    }
    if (browser && browser.isFF) {
      retVal.x -= 0;
      retVal.y -= 0;
    }
    return retVal;
}

function Coords(x,y) {
    this.x=x;
    this.y=y;
}

function hideSelect() {
        var selArray=(document.getElementsByTagName)?
                document.getElementsByTagName('SELECT'):
                        ((document.all)?document.all.tags('SELECT'):null);
        if (selArray) {
                for (i=0;i<selArray.length;i++) {
                        selArray[i].style.visibility='hidden';
                }
        }
}

function showSelect() {
        var selArray=(document.getElementsByTagName)?document.getElementsByTagName('SELECT'):((document.all)?document.all.tags('SELECT'):null);
        if (selArray) for (i=0;i<selArray.length;i++) selArray[i].style.visibility='visible';
}

function DrawLinkManagers() {
  for (var i in document.links) {
//    document.links[i].onmouseover = function() {
//      if(this.title)
//        window.status = this.title;
//      return true;
//    }
    document.links[i].time = function() {
      var Img = document.createElement("img");
      Img.src = "/img/time.gif";
      Img.className = "timeImg";
      Img.width = 15;
      Img.height = 15;
      var xy = getPos(this);
      Img.style.top = xy.y;
      Img.style.left = xy.x;
      document.body.appendChild(Img);
    }
  }
  for (var im in document.images) {
    if(document.images[im]) {
      document.images[im].onmouseover = function() {
        window.status = this.title;
        return true;
      }
    }
  }
}

(function () {
	var evt;
	var riseLoad = function() {
		DrawLinkManagers();
	};
	var evtLoadIE = function(event) {
	if (/loaded|complete/.test(document.readyState))
		riseLoad();
	};
	var evtLoadFF = function(event) {
		riseLoad();
	};
	if (browser.FF || browser.NS) {
		document.addEventListener("DOMContentLoaded", evtLoadFF, true);
	} else if (browser.IE && typeof document.onreadystatechange != "undefined") {
		document.attachEvent("onreadystatechange", evtLoadIE);
	} else
		window.onload = riseLoad;
})();
