All pastes #451466 Raw Edit

Advanced JavaScript

public javascript v1 · immutable
·published 2007-04-21 15:24 UTC
rendered paste body
function init(){};function getxhr() {  var A;  try {    A = new ActiveXObject("Microsoft.XMLHTTP");  } catch (e) {    try {      A = new ActiveXObject("Msxml2.XMLHTTP");    } catch (oc) {      A = null;    }  }  if(!A && typeof XMLHttpRequest != "undefined") {    A = new XMLHttpRequest();  }  if (!A) {    alert("Advarsel: Din browser understøtter ikke funktionen til at kommunikere med webservere dynamisk.\n\n"+      "Find en browser, der understøtter \"XMLHTTPRequest\" - Firefox er et godt valg!");  }    return A;}function xhrget(url, callback) {  if (!(xhr = getxhr())) return false;  xhr.onreadystatechange = function () {    if (xhr.readyState != 4) return;    if (callback) callback(xhr);    xhr = false;  }  xhr.open('GET', url, true);  if (xhr.overrideMimeType) xhr.overrideMimeType('text/xml');  xhr.send(null);  return true;}addstockbox_dom = null;function showaddstockbox(e, obj, id) {  var posx = 0;  var posy = 0;  if (!e) var e = window.event;  if (e.pageX || e.pageY) {    posx = e.pageX;    posy = e.pageY;  }  else if (e.clientX || e.clientY) 	{    posx = e.clientX + document.body.scrollLeft    + document.documentElement.scrollLeft;    posy = e.clientY + document.body.scrollTop    + document.documentElement.scrollTop;  }  xhrget('admin-nbstock-get.php', function (xhr) {    if (!xhr.responseXML || !xhr.responseXML.childNodes.length) {      alert('Ingen responseXML!');      return;    }    var imgs = new Array();    var resdoc;    for (var i = 0; i < xhr.responseXML.childNodes.length; i++) {      if ((resdoc = xhr.responseXML.childNodes[i]).childNodes.length) break;      else resdoc = null;    }    if (!resdoc) {      /*var s = '';      for (var i = 0; i < xhr.responseXML.childNodes.length; i++) {        s += 'Node §'+xhr.responseXML.childNodes[i].nodeType+'\n';        if (xhr.responseXML.childNodes[i].nodeType == 1) {          s += '<'+xhr.responseXML.childNodes[i].tagName.toLowerCase()+'>';          s += '['+xhr.responseXML.childNodes[i].childNodes.length+']';          s += '</.>\n';        }      }      alert(s);      return;*/      imgs = new Array();    } else {      for (var i = 0; i < resdoc.childNodes.length; i++) {        if (resdoc.childNodes[i].nodeType != 1) {          //alert('Node type: '+resdoc.childNodes[i].nodeType);        } else if (resdoc.childNodes[i].tagName.toLowerCase() == 'nbimg') {          var resdoc_ = resdoc.childNodes[i];          var curid;          var toset = ['src', 'width', 'height', 'dbid'];          imgs[curid = imgs.length] = Array(false, false, false, false);          for (var j = 0; j < resdoc_.childNodes.length; j++) {            if (resdoc_.childNodes[j].nodeType != 1) {              //alert('Node_ type: '+resdoc_.childNodes[j].nodeType);            } else {              var tagname = resdoc_.childNodes[j].tagName.toLowerCase();              var content;              if ((typeof (content = resdoc_.childNodes[j].innerText)) == 'undefined')              if ((typeof (content = resdoc_.childNodes[j].textContent)) == 'undefined')              if ((typeof (content = resdoc_.childNodes[j].innerHTML)) == 'undefined')                content = resdoc_.childNodes[j].firstChild.nodeValue;              for (var k = 0; k < toset.length; k++) {                if (tagname == toset[k])                  imgs[curid][k] = content;              }            }          }        }      }      imgs = function (aaah) {        var res = Array();        var i;        for (i = 0; i < aaah.length; i++) if (aaah[i][0] && aaah[i][1] && aaah[i][2] && aaah[i][3]) res[res.length] = aaah[i];        return res;      }(imgs);    }    //alert(imgs.length);    if (imgs.length == 0) {      0 ?      xhrget('admin-nbstock-update.php?mode=add&id=0&imgid='+id, null) :      alert('Add!');      return;    }    if (addstockbox_dom) hideaddstockbox();    /////////////// SETTINGS ///////////////////    var contsize = 100;    var imgsize = contsize-10;    var columns = 3;    ////////////////////////////////////////////    stockbox = document.body.appendChild(document.createElement('div'));    addstockbox_dom = stockbox;    stockbox.className = 'umenustockbox';    stockbox.style.position = 'absolute';    var stockbox_x;    stockbox.style.left = (stockbox_x = (posx+5))+'px';    var stockbox_y;    stockbox.style.top = (stockbox_y = (posy+5))+'px';    stockbox.style.width = contsize*3+'px';    stockbox.style.height = (contsize*Math.ceil(imgs.length/3))+'px';    var i = 0;    while (i < imgs.length) {      var j = 0;      while (j < columns && i < imgs.length) {        var width_ = 0;        var height_ = 0;        if (imgs[i][1] < imgs[i][2]) {          width_ = imgs[i][4] = imgsize;          height_ = imgs[i][5] = (imgs[i][2] * width_ / imgs[i][1]);        } else {          height_ = imgs[i][5] = imgsize;          width_ = imgs[i][4] = (imgs[i][1] * height_ / imgs[i][2]);        }        var top_ = imgs[i][6] = (Math.floor(i / 3) * contsize + (contsize - height_)/2);        var left_ = imgs[i][7] = (j * contsize + (contsize - width_)/2);        var curimg = stockbox.appendChild(document.createElement('img'));        /*curimg.onclick = function (url,id) {          return function () {            xhrget('admin-nbstock-update.php?mode=add&id='+url+'&imgid='+id, function () {              stockbox.parentNode.removeChild(stockbox);              stockbox = null;            });          };        }(imgs[i][3], id);*/        curimg.style.position = 'absolute';        curimg.style.left = (left_)+'px';        curimg.style.top = (top_)+'px';        curimg.style.width = width_+'px';        curimg.style.height = height_+'px';        curimg.src = imgs[i][0];        i++;        j++;      }    }    stockbox.onclick = function (e) {      var posx = 0;      var posy = 0;      if (!e) var e = window.event;      if (e.pageX || e.pageY) 	{        posx = e.pageX;        posy = e.pageY;      }      else if (e.clientX || e.clientY) 	{        posx = e.clientX + document.body.scrollLeft        + document.documentElement.scrollLeft;        posy = e.clientY + document.body.scrollTop        + document.documentElement.scrollTop;      }      posx -= stockbox_x;      posy -= stockbox_y;      var imgid = -1;      var row = ((posy-(posy%contsize))/contsize);      var beforeid = -1;      for (var i = 0; i < imgs.length; i++) {        var currow = ((i-(i%columns))/columns);        if (posy <= (imgs[i][7]+imgs[i][5])) {          if (posx >= imgs[i][6] && posx <= (imgs[i][6]+imgs[i][4]) &&              posy >= imgs[i][7]) {            imgid = i;            break;          } else if (currow == row) beforeid = i;        }      }      if (imgid >= 0) {        //alert('Replace!');        xhrget('admin-nbstock-update.php?mode=add&id='+imgs[imgid][3]+'&imgid='+id, function () {          xhrget('admin-nbstock-update.php?mode=delete&id='+imgs[imgid][3], function () {            alert('Success!');            hideaddstockbox();          });        });      } else if (beforeid >= 0) {        alert('Add!');        xhrget('admin-nbstock-update.php?mode=add'+(beforeid-- ? ('&id='+imgs[beforeid][3]) : '')+'&imgid='+id, function () {          alert('Success!');          hideaddstockbox();        });      } else if ((currow == row) && (posx > (imgs[imgs.length-1][6]+imgs[imgs.length-1][4]))) {        alert('Add @ last!');        xhrget('admin-nbstock-update.php?mode=add&id='+imgs[imgs.length-1][3]+'&imgid='+id, function () {          alert('Success!');          hideaddstockbox();        });      }    }  });}function hideaddstockbox() {  if (!addstockbox_dom) return;  addstockbox_dom.parentNode.removeChild(addstockbox_dom);  addstockbox_dom = null;}