/* v 2.13 */

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(browser.isSafari) {
        obj = new XMLHttpRequest();
    }
    if(browser.isNS) {
        obj = new XMLHttpRequest();
    }
    if(!obj)
                obj = new ActiveXObject('Msxml2.XMLHTTP');
    return obj;
}

function openUrl(url, target, pObj, center, Width, Height, Title) {
     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, Title);
     }
     
     sendIt(url, Obj);
     return false;

}

function sendForm(formObj, pObj) {
     var url = formObj.action + "?"; // "/http.php?";
     for(var i=0; i < formObj.elements.length; i++) {
       if(formObj.elements[i].type == "file") {
       } else {
         if(formObj.elements[i].type == "checkbox" || formObj.elements[i].type == "radio") {
           if(formObj.elements[i].name && formObj.elements[i].checked) {
             if(i != 0) url += '&';
             url += formObj.elements[i].name + '=' + formObj.elements[i].value;
           }
         } else {
           if(formObj.elements[i].name) {
             if(i != 0) url += '&';
             url += formObj.elements[i].name + '=' + formObj.elements[i].value;
           }
         }
       }
     }

     var target = formObj.elements['target'].value;
     var Obj = document.getElementById(target) || createObj(target);
     if(pObj) {
       hideSelect();
       Obj = openFloatDiv(Obj, target, pObj);
     }

     sendIt(url, Obj);
     return false;
}

function sendIt(url, Obj) {
     document.body.style.cursor = 'wait';

     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;
       document.body.style.cursor = 'auto';
     }
}

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/loader.gif\" width=24 height=24 alt=\"" + inHTML + "\" align=center>";
}

function openFloatDiv(Obj, target, pObj, center, Width, Height, Title) {
/* 
        замена Obj как объект с id=target на
        Obj как TextDiv внутри div id='win_' + target
*/
    Width  = Width ? parseInt(Width) : 500;
    Height = Height ? parseInt(Height) : 200;

    var elXY = new Coords(0,0);
    if(!center) {
      elXY = getPos(pObj);
      elXY.x = Math.round((document.body.offsetWidth - Width)/2);
    } else {
      elXY.x = Math.round((document.body.offsetWidth - Width)/2);
      if(browser.isIE && browser.version <= 6) {
        elXY.y = Math.round((document.body.offsetHeight - Height)/2 + document.documentElement.scrollTop) > 50 ? Math.round((document.body.offsetHeight - Height)/2 + document.documentElement.scrollTop) : 100;
      } else {
        elXY.y = Math.round((document.body.offsetHeight - Height)/2 + document.body.scrollTop) > 50 ? Math.round((document.body.offsetHeight - Height)/2 + document.body.scrollTop) : 100;
      }
    }

    Obj.style.top = elXY.y + 20 + 'px';
    Obj.style.width = Width + 'px';
//    Obj.style.height = Height + 'px';

    if((elXY.x + 10 + Obj.offsetWidth) > document.body.scrollWidth) {
      Obj.style.left = document.body.scrollWidth - Obj.offsetWidth - 10 + 'px';
    } else {
      Obj.style.left = elXY.x + 10 + 'px';
    }

    Obj.style.display = 'block';
    if(document.getElementById('win_' + target)) {
      return Obj;
    }

    var TextDiv = document.createElement("div");
    Obj.id = 'win_' + target;
    TextDiv.id = target;
    TextDiv.style.height = Height + 'px';
    TextDiv.className = "innerContents";

    var Header = document.createElement("div");
    Header.className = "header";

    var Title = Title ? Title : "&nbsp;";
    var TitleD = document.createElement("div");
    TitleD.className = "PopupTitle";
    TitleD.innerHTML = Title;
    A = closeImg(Obj, document.body, "Закрыть");

    Header.appendChild(A);
    Header.appendChild(TitleD);
    Obj.appendChild(Header);

    Obj.appendChild(TextDiv);

    if(!document.getElementById("Back")) {
      var Back = document.createElement("div");
      Back.className = "Back";
      Back.style.width = document.body.clientWidth + 'px';
      Back.style.height = document.body.clientHeight + 'px';
      Back.style.display = 'block';
      Back.id = "Back";
      document.body.appendChild(Back);
    } else {
      document.getElementById("Back").style.display = "block";
    }

    return TextDiv; // сюда идет responseText
}


function closeImg(Parent, sParent, title) {  /* Parent - то что удаляем; sParent - откуда удаляем */
      var A = document.createElement("img");
      A.className = "closeButton";
      A.src = "/img/close.gif";
      A.title = title;
      A.onclick = function() {
        Destroy(Parent, sParent);
        return false;
      };
      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();
    document.getElementById("Back").style.display = "none";
    if(dObj) {
      if(dObj.parentNode) {
        if(dObj.parentNode == fromObj)
          fromObj.removeChild(dObj);
        else 
          document.removeChild(dObj);
        dObj = null;
      } else {
        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=parseInt(x);
    this.y=parseInt(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';
}

