var _queue, pendingFormData;

function submitForm(id) {
  var form = document.getElementById(id);
  if(form != null) {
    switch(form.method.toLowerCase()) {
      case 'post':
        disableSubmit(form,true);
        resetQueue();
        var xml = serializeForm(form);
        if (!sendQueue(form, xml)) submitFormPost(xml);
        break;
      case 'get':
        disableSubmit(form,true);
        var qs = queryStringBuilder(form);
        submitFormGet(qs);
        break;
    }
  }
}

function submitFormPost(xml) {
    ivy.http.post("/templates/basic/xslt/gems/action-handler.xslt?pageloader.parsecontent=true&rnd="+Math.random(), xml, submitCallback);
}

function submitFormGet(qs) {
    ivy.http.get("/templates/basic/xslt/gems/action-handler.xslt?"+qs+"&rnd="+Math.random(), submitCallback);
}

function serializeForm(o) {
  var e = o.elements;
  var sXml = '<form-action oID="'+ o.id.replace('form-','')+'">';
  for(var i=0; i<e.length; i++) {
    if (e[i].type == 'file') addToQueue(e[i]);
    var value = inputValue(e[i]);
    if (validInput(e[i], value)) sXml += '<' + e[i].name + '>' + value + '</' + e[i].name + '>';
  }
  sXml += '</form-action>';
  return ivy.xml.deserialize(sXml);
}

function queryStringBuilder(o) {
  var e = o.elements;
  var s = 'oID='+o.id.replace('form-','');
  for(var i=0; i<e.length; i++) {
    var value = inputValue(e[i]);
    if(validInput(e[i], value)) {
      if (s != '') s += '&';
      s += e[i].name + '=' + value;
    }    
  }
  return s;
}

function validInput(o, value) {
  if (!o.name) return false;
  if (o.tagName != 'INPUT') return true;
  if (o.type != 'button' && o.type != 'submit' && o.type != 'image') {
    return (o.type != 'radio' || value != '');
  } else {
    return false;
  }
}

function inputValue(o) {
  var value = '';
  switch(o.tagName) {
    case 'INPUT':
      switch(o.type) {
        case 'radio':
          if (o.checked) value = o.value;
          break;
        case 'checkbox':
          value = (o.checked?'true':'false');
          break;
        default:
          value = o.value;
      }
      break;
    case 'SELECT':
      value = o.value;
      break;
    case 'TEXTAREA':
      value = o.value;
      break;
  }
  return value;
}

function resetQueue() {
    _queue = new Array();
}

function addToQueue(o) {
    if (o.value != '') _queue[_queue.length] = o;
}

function isInQueue() {
    return (_queue.length != 0);
}

function sendQueue(o, xml) {
    if (isInQueue()) {
        var form = document.createElement('<FORM method="post" enctype="multipart/form-data" action="/ivy/iem-shared/system/modules/SmartEditor/wizards/autouploader.xslt" target="hiddenUploader">');
        var oID = document.createElement('<INPUT type="text" name="oID" value="'+o.id.replace('form-','')+'">');
        form.appendChild(oID);
        var c;
        for (var i=0; i<_queue.length; i++) {
            c = _queue[i].cloneNode(true);
            _queue[i].parentNode.appendChild(c);
            form.appendChild(_queue[i]);
        }
        document.getElementById('FormPlaceHolder').appendChild(form);
        resetQueue();
        pendingFormData = xml;
        form.submit();
        return true;
    }
}

function submitCallback(wr) {
  var xml = wr.requester.responseXML;

    if (location.href.indexOf("debug=true") != -1) {
        alert(ivy.xml.serialize(xml));
    }
  
  var form = document.getElementById('form-' + ivy.xml.xpath.evalSingleValue(xml, "/root/@oID"));
  nullizeErrorFields(form);
  if(ivy.xml.xpath.evalSingleValue(xml, "boolean(/root/exception)")) {
    var it = ivy.xml.xpath.eval(xml, "/root/exception");
    var node;
    while(node = ivy.xml.xpath.iterate(it)) {
      try {
        getErrorFieldByInput(form.elements[node.getAttribute('input')]).innerHTML = ivy.xml.xpath.valueOf(node);
      } catch(e) {}
    }
    disableSubmit(form,false);
  } else if(ivy.xml.xpath.evalSingleValue(xml, "/exception")) {
    alert('Szerver oldali hiba!\n\n'+ivy.xml.serialize(xml));
    disableSubmit(form,false);
  } else if(ivy.xml.xpath.evalSingleValue(xml, "boolean(/root/automation)")) {
    var auto = ivy.xml.xpath.evalSingle(xml, "/root/automation");
    if(!ivy.browser.isIE) auto = auto.singleNodeValue;
    if(auto.getAttribute('refresh')) location.reload();
    if(auto.getAttribute('redirect')) location.href = auto.getAttribute('redirect');
    if(auto.getAttribute('redraw')) awakeAsyncGem(auto.getAttribute('redraw'));
    if(auto.getAttribute('message')) {
      if(auto.getAttribute('hideform')) var hideform = true;
      else var hideform = false;
      showResultMessage(form, auto, hideform);
      disableSubmit(form,false);
    }
    if(auto.getAttribute('debug')) {
      alert(ivy.xml.serialize(xml));
      disableSubmit(form,false);
    }
  }
}

function getErrorFieldByInput(input) {
  var error = input.parentNode.childNodes[input.parentNode.childNodes.length-1];
  if(error.tagName == 'DIV' && error.id == 'error') return error;
}

function nullizeErrorFields(form) {
  if(form != null) {
    var e = form.elements;
    for(var i=0; i<e.length; i++) {
      var error = getErrorFieldByInput(e[i]);
      if(error != null) 
        if(ivy.browser.isIE) {
          error.outerHTML = '<DIV id="error"></DIV>';
        } else {
          error.innerHTML = '';
        }
    }
  }
}

function showResultMessage(form, auto, hideform) {
  if(form != null) {
    var i=0;
    while(i < form.childNodes.length) {
      if(form.childNodes[i].id == 'result') {
        form.childNodes[i].innerHTML = ivy.xml.serialize(auto);
      } else {
         if(hideform) form.childNodes[i].style.display = 'none';
      }
      i++;
    }
  }
  form.reset();
}

function awakeAsyncGem(oID) {
  var sXml = '<root>';
  sXml += '<oID>'+oID+'</oID>';
  if(location.href.indexOf('?') != -1) {
    var vars = location.href.substring(location.href.indexOf('?')+1).split('&');
    for(var i=0; i<vars.length; i++) {
      var equal = vars[i].indexOf('=');
      var name = vars[i].substring(0, equal);
      var value = vars[i].substring(equal+1);
      sXml += '<' + name + '>' + value + '</' + name + '>';
    }
  }    
  sXml += '</root>';
  ivy.http.post("/templates/basic/xslt/gems/httprequest-proxy.xslt?parsecontent=true&rnd="+Math.random(), ivy.xml.deserialize(sXml), awakeCallback);
}

function awakeCallback(wr) {
  var xml = wr.requester.responseXML;
  if(ivy.xml.xpath.evalSingleValue(xml, "/exception") || ivy.xml.xpath.evalSingleValue(xml, "/result/exception")) {
    alert('Szerver oldali hiba!\n\n'+ivy.xml.serialize(xml));
  } else if(ivy.xml.xpath.evalSingleValue(xml, "boolean(/result/automation)")) {
    if (location.href.indexOf("debug=true") != -1) {
        alert(ivy.xml.serialize(xml));
    }
    var objectID = ivy.xml.xpath.evalSingleValue(xml, "/result/@oID");
    var it = ivy.xml.xpath.eval(xml, "/result/automation/update");
    var node, objn, o, tmpstr, from, to;

    while(node = ivy.xml.xpath.iterate(it)) {
      objn = document.getElementsByName(node.getAttribute('name'));
      var interval = node.getAttribute('interval');
      if (interval == null || interval == '') {
        from = 0;
        to = objn.length;
      } else if (interval.indexOf('-') != -1) {
        from = interval.substring(0, interval.indexOf('-'));
        to = interval.substring(interval.indexOf('-')+1) + 1;
      } else {
        from = interval;
        to = interval + 1;
      }
      for(var i = from; i < to; i++) {
        var s = getObjectID(objn[i], 'gem_forum art');
        if (s.oID == objectID) {
            tmpstr = '';
            for (var j = 0; j < node.childNodes.length; j++) {
                tmpstr += ivy.xml.serialize(node.childNodes[j]);
            }    
            objn[i].innerHTML = tmpstr;
        }
      }
    }
  } else {
    var o = document.getElementById(ivy.xml.xpath.evalSingleValue(xml, "/result/@oID"));
    var fc = ivy.xml.xpath.evalSingle(xml,"/result/div");

    if(!ivy.browser.isIE) fc = fc.singleNodeValue;
    var inner = ivy.xml.serialize(fc);
    if (location.href.indexOf("debug=true") != -1) inner = '<textarea>' + ivy.xml.serialize(xml) + '</textarea>' + inner;
    o.innerHTML = inner;
  }
}

function disableSubmit(form,disable) {
  for(var i = 0; i < form.childNodes.length; i++) {
    if(form.childNodes[i].id == 'submit') form.childNodes[i].childNodes[0].disabled = disable;
  }
}

function copyToClipboard(s)
{
	if( window.clipboardData && clipboardData.setData ) {
		clipboardData.setData("Text", s);
	} else {
		// You have to sign the code to enable this or allow the action in about:config by changing	user_pref("signed.applets.codebase_principal_support", true);
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return;
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return;
		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/unicode');
		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		var copytext = s;
		str.data = copytext;
		trans.setTransferData("text/unicode",str,copytext.length*2);
		var clipid=Components.interfaces.nsIClipboard;
		if (!clip) return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);	   
	}
}

var _pager4show = null;
var _pager4showXI = null;

function pagerCallback(wr) {
  var xml = wr.requester.responseXML;

  if (location.href.indexOf("debug=true") != -1) {
    copyToClipboard(ivy.xml.serialize(xml));
  }
  
  if (_pager4show != null) {
    var sx = ivy.xml.serialize(xml);
    var xi = '';
    if (_pager4showXI != null) {
        xi = ivy.xml.serialize(_pager4showXI);
        var r3 = new RegExp('<(/?)(root)(.*?)>','gi');
        xi = xi.replace(r3, '<$1xml$3>');
    }

    if (!ivy.browser.isIE) {
        var r1 = new RegExp('<(a|b|strong|u|i|div|span|font)(\\s[^>]*?)?/>','gi'); // mozilla httprequest hack
        var r2 = new RegExp('<\\?xml(.*?)\\?>','gi'); // opera hack
        sx = sx.replace(r2,'').replace(r1, '<$1$2></$1>');
        if (_pager4show.innerHTML.indexOf('dont remove this') == -1) { // ff box nem tartalmazos hiba hack
            var i = 0;
            var c = _pager4show.parentNode.childNodes;
            while (i < c.length && c[i] != _pager4show) i++;
            if (i<c.length) _pager4show.parentNode.removeChild(c[i+1]);
        }
        xi = xi.replace(r2,'');
    }
    
    if (location.href.indexOf("debug=true") != -1) {
        copyToClipboard(sx);
    }
 
    _pager4show.innerHTML = xi + sx;
    
    if (ivy.browser.isIE) xml.setProperty("SelectionLanguage", "XPath");
    var script = ivy.xml.xpath.eval(xml, "//script");
    var s;
    while(s = ivy.xml.xpath.iterate(script)) {
        try {
            var val = ivy.xml.xpath.valueOf(s);
            if (val == '' && s.firstChild) val = ivy.xml.xpath.valueOf(s.firstChild);
            eval(val);
        }
        catch(e) {alert(e.description)}
    }
    
  }
  try {
    SmartEditor.MakeEverythingEditable(_pager4show);
  } catch(e) {}
}

function pagerNumDown(e, count) {
    var k = (e.keyCode ? e.keyCode : (e.which ? e.which : 0));
    if (k>31 && (k < 48 || k > 57)) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
        return false;
    }    
}

function pagerNumUp(e, count) {
    var o = (e.srcElement ? e.srcElement : (e.target ? e.target : null));
    if (o != null) {
        if (parseInt(o.value) > count) o.value = count;
        o.nextSibling.nextSibling.disabled = (o.value == '');
    }
}

function pager(htmlElement, pageIndex, sortOrder, qs) {
    var sortCol, sortDir, pageWidth;
    
    try {
        if (!SmartEditor.ClearDirtyConfirm()) return false;
    } catch(e) {}    
    
    while (htmlElement != null && removens(htmlElement.tagName.toUpperCase()) != "BOX" && htmlElement.getElementsByTagName("ivy:box").length == 0) {
        if (htmlElement.tagName == 'DIV' && htmlElement.id == 'sub-content') {
            var rolo = document.createElement('div');
            rolo.style.position = 'absolute';
            rolo.style.backgroundColor = '#c0c0c0';
            rolo.style.filter = 'alpha(opacity=60)';
            rolo.style.opacity = 0.6;
            rolo.style.top = 0;
            htmlElement.parentNode.style.position = 'relative';
            htmlElement.parentNode.appendChild(rolo);
            rolo.style.width = htmlElement.offsetWidth;
            rolo.style.height = htmlElement.offsetHeight;
        }
        htmlElement = htmlElement.parentNode;
    }
    if (htmlElement != null) {
        if (removens(htmlElement.tagName.toUpperCase()) != "BOX") {
            htmlElement = htmlElement.getElementsByTagName("ivy:box")[0];
        }
        _pager4show = htmlElement;
        
        var r1 = new RegExp('(<page-index>)([0-9]+)(</page-index>)','gi');
        var r2 = new RegExp('(<sort-dir>)([a-z]+)(</sort-dir>)','gi');
        if (htmlElement.firstChild && htmlElement.firstChild.tagName.toUpperCase() == "XML") {
            var sXML = htmlElement.firstChild.innerHTML.replace(r1, '$1'+pageIndex+'$3');
            if (sortOrder != null) sXML = sXML.replace(r2, '$1'+sortOrder+'$3');
            if (sXML.indexOf('<root') == -1) sXML = '<root style="display:none">' + sXML + '</root>';
            var dom = ivy.xml.deserialize(sXML);
            _pager4showXI = dom;
        }
        
        var uri = htmlElement.getAttribute("ivy:src");
        var instance = htmlElement.getAttribute("ivy:instance-id");
        uri += (location.href.indexOf('?') != -1 ? location.href.substring(location.href.indexOf('?')) + '&' : '?');
        uri += 'pageloader.parsecontent=true';
        uri += '&pageloader.no-cache=true';
        uri += '&request.instance-id=' + instance;
        uri += '&context-id=' + htmlElement.getAttribute("ivy:context-id");
        uri += '&rnd='+Math.random();
        if (qs != null) uri += '&'+qs;
        ivy.http.post(uri, dom, pagerCallback);
    }
}

function removens(s) {
    if (s.indexOf(':') == 1) {
        return s;
    } else {
        return s.substring(s.indexOf(':')+1);
    }
}

function hiddenUploaderReady(o) {
    if (o.readyState == "complete") {
        var b = document.frames['hiddenUploader'].document.getElementById('resultXML');
        if (b != null) {
            var xml = ivy.xml.deserialize(b.innerHTML);
            var it = ivy.xml.xpath.eval(xml, "/root/uploaded");
            var node, pnode, s;
            while(node = ivy.xml.xpath.iterate(it)) {
                var oname = node.getAttribute('original-name');
                //var url = node.getAttribute('url');
                var url = '/object.' + node.getAttribute('oID') + '.ivy';
                var pit = ivy.xml.xpath.eval(pendingFormData, "/form-action/*");
                while (pnode = ivy.xml.xpath.iterate(pit)) {
                    s = ivy.xml.xpath.valueOf(pnode);
                    if (s.indexOf(oname) == s.length - oname.length) pnode.text = url;
                }
            }
            submitFormPost(pendingFormData);
            o.src = '';
        }
    }
}


/************************************************************
   Forum
************************************************************/

function showForumForm(form,showCaption) {
  var t = document.getElementsByName('topicname');
  var cmd = document.getElementById('forumcmd');
  var focusinput;
  var i;
  for(i = 0; i < t.length; i++) {
    if(t[i].parentNode.parentNode.parentNode == form) {
      if(showCaption) {
        t[i].parentNode.parentNode.style.display = 'block';
        cmd.value = 'topic';
        focusinput = t[i];
      } else {
        t[i].parentNode.parentNode.style.display = 'none';
        cmd.value = 'msg';
      }
    }
  }
  var a = document.getElementsByName('description');

  for(i = 0; i < a.length; i++) {
    if(a[i].tagName == 'TEXTAREA' && a[i].parentNode.parentNode.parentNode.tagName == "FORM") {

      var c = a[i].parentNode.parentNode.childNodes[0].childNodes[0];

      if(showCaption) {
        c.innerHTML = 'Leírás';
      } else {
        c.innerHTML = 'Üzenet';
      }
      if(!showCaption) {
        focusinput = a[i];
      }
    }
  }
  form.parentNode.style.display = 'block';
//  focusinput.focus();
}

function getObjectID(e, type) {
    var r;
    type = (type != null ? ' ' + type + ' ' : null); 
    do {
        while ((e) && (!e.attributes || !e.attributes.getNamedItem('ivy:forum-id'))) e = e.parentNode;
        r = parseID(e);
        e = r.element.parentNode;
    } while (r.element != null && type != null && type.indexOf(' ' + r.type + ' ') == -1);
    return r;  
}

function parseID(e) {
    var r = new Object();
    var a = (e ? e.attributes.getNamedItem('ivy:forum-id').value : '').split(';');
    for (var i = 0; i < a.length; i++) {
        var vv = a[i].split('=');
        r[vv[0]] = vv[1];
    }
    r.element = e;
    return r;
}

function getParentForm(e) {
    var r = getObjectID(e, 'gem_forum art');
    return (r.element ? document.getElementById('form-' + r.oID) : null);
}

function newForumTopic(element) {
//  var element = window.event.srcElement;
  var form = getParentForm(element);
  document.getElementById('msgid').value = '';
  document.getElementById('historyid').value = '';
  setMessageText(form, '', '');
  showForumForm(form,true);
  element.parentNode.style.display='none';
}

function newForumMessage(element) {
  var form = getParentForm(element);
  document.getElementById('msgid').value = '';
  document.getElementById('historyid').value = '';
  setMessageText(form, '', '');
  showForumForm(form,false);
  element.parentNode.style.display='none';
}

function editForumMessage(element) {
  var form = getParentForm(element);
  var oid = getObjectID(element).oID;
  document.getElementById('msgid').value = oid;
  document.getElementById('historyid').value = '';
  setMessageText(form, oid);
  showForumForm(form,false);
}

function makeForumAnswer(element) {
  var form = getParentForm(element);
  var oid = getObjectID(element).oID;
  document.getElementById('msgid').value = '';
  document.getElementById('historyid').value = oid;
  var username = element.parentNode.parentNode.parentNode.childNodes[0];
  if (username.innerText == undefined) {
	username = username.childNodes[0].text;
  } else {
	username = username.innerText;
  }	
  setMessageText(form, oid, username);
  showForumForm(form, false);
}

function deleteForumItem(element,type) {
  var form = getParentForm(element);
  var oid = getObjectID(element).oID;
  var cmd = '';
  if((type == 'topic') && confirm('Biztosan törli a fórumtémát?')) {
    cmd = 'topicdel';
  } else if((type == 'msg') && confirm('Biztosan moderálja a hozzászólást?')) {
    cmd = 'msgdel';
  }
  if(cmd != '') {
    element.parentNode.onclick = null;
    document.getElementById('forumcmd').value = cmd;
    document.getElementById('forumdelid').value = oid;
    document.getElementById('msgid').value = '';
    submitForm(form.id,oid);
  }
}

function setMessageText(form, oid, separator) {
  var t = document.getElementsByName('description');
  var i;

  for(i = 0; i < t.length; i++) {
    if(t[i].tagName == 'TEXTAREA' && t[i].parentNode.parentNode.parentNode.tagName == "FORM") {
      if(oid == '') {
        t[i].value = '';
      } else {
        var text = document.getElementById('forum-msg-'+oid).childNodes[0].innerHTML;
        if (separator) {
            t[i].value = '[quote='+ separator +']' + text + '[/quote]';
        } else {
            t[i].value = text;
        }
      }
//      t[i].focus();
    }
  } 
}


/************************************************************
   Sitemap
************************************************************/

function junctionClick(o) {
  var l = o.parentNode;
  var z = l;
  if (z != null && !z.getAttribute("opened")) z = z.nextSibling;
  var state = (z.getAttribute("opened") == 'true');
  
  z.setAttribute("opened", state?'false':'true');
  l.nextSibling.style.display = (state?'none':'block');
  
  o.src = o.src.replace((state?'minus':'plus'), (state?'plus':'minus'));
  
  
//  o.runtimeStyle.filter = o.runtimeStyle.filter.replace((state?'minus':'plus'), (state?'plus':'minus'));
}


/************************************************************
   e-Shop
************************************************************/

function updateSubtotal(qobj) {
//  var qobj = window.event.srcElement;
  var quantity = qobj.value;
  var cells = qobj.parentNode.parentNode.childNodes;
  var i = 0;
  var j = 0;

  while(i < cells.length && cells[i].id != 'product-price') i++;

  while(j < cells.length && cells[j].id != 'entry-total') j++;

  cells[j].innerHTML = cells[i].innerHTML * quantity;

  updateTotal(qobj.parentNode.parentNode.parentNode.childNodes);
}

function updateTotal(rows) {
  var total=0;
  var i=0;
  var j=0;

  while(i < rows.length) {
    cells = rows[i].childNodes;
    j=0;
    while(j < cells.length) {
      if(cells[j].id == 'entry-total') total += parseInt(cells[j].innerHTML);

      if(cells[j].id == 'totalprice') cells[j].innerHTML = total;

      j++;
    }
    i++;
  }
}

function openCloseCategory(o) {
    var p = o.parentNode;
    var i = 0;
    var a = null;
    while (i < p.childNodes.length && p.childNodes[i].tagName != 'DIV' && p.childNodes[i].id != 'subcategories') {
        if (p.childNodes[i].tagName == 'A') a = p.childNodes[i];
        i++;
    }    
    if (i < p.childNodes.length) {
        if (o.src.charAt(o.src.length-5) == '2') { 
            o.src = o.src.substring(0, o.src.length - 5) + '.gif';
            p.childNodes[i].style.display = 'none';
        } else {
            o.src = o.src.substring(0, o.src.length - 4) + '2.gif';
            p.childNodes[i].style.display = 'block';
        }
    } else {
        a.click();
    }
}


/* hacks :D */

function artType2Hack(o) {
    var c = o.parentNode.childNodes;
    var h = 0;
    var copy = false;
    for (var i = 0; i<c.length; i++) {
        if (!copy && c[i] == o) copy = true;
        if (copy && c[i].tagName && c[i].tagName.toUpperCase() == 'DIV') {
            h += c[i].offsetHeight;
        }
    }
    return h;
}

function FlashObject(oID, url, scale, width, height) {
    var o = document.getElementById(oID);
    if (scale != 'exact') {
        width = '100%';
        height = '100%';
    }
    if (o != null) {
        var s = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' + width + '" height="' + height + '" name="flash_object" align="middle">';
        s += '<param name="allowScriptAccess" value="sameDomain"/>';
        s += '<param name="movie" value="' + url + '"/>';
        s += '<param name="quality" value="high"/>';
        s += '<param name="scale" vale="noscale"/>';
        s += '<param name="wmode" value="transparent" />';
        s += '<param name="salign" value="lt" />';
        s += '<embed src="' + url + '" quality="high" salign="lt" scale="noscale" wmode="transparent" width="' + width + '" height="' + height + '" name="flash_embed" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>';
        s += '</object>';
        alert(s);
        o.innerHTML = s;
    }
}