function htmlchanger_ajax_send(obsluha, method, url, content, headers) { var xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); if (!xmlhttp) { return false; } xmlhttp.open(method, url); if (method=='POST') { xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } xmlhttp.onreadystatechange = function() { obsluha(xmlhttp); }; /*if (headers) { for (var key in headers) { xmlhttp.setRequestHeader(key, headers[key]); } }*/ xmlhttp.send(content); return true; } function htmlchanger_ajax_process(xmlhttp) { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { var content=xmlhttp.responseXML; /*var html = content.getElementsByTagName('html');*/ if (content.getElementsByTagName('tag')[0]) { /* obsluha zmeny TAGu */ var tags = content.getElementsByTagName('tag'); for (var i=0; i < tags.length; i++) { var id=tags[i].getAttribute('id'); /* ID v HTML */ var tagtype=tags[i].getAttribute('type'); /* o jaky typ tagu jde*/ if (id) var tag=document.getElementById(id); else { var name=tags[i].getAttribute('name'); /* NAME v HTML */ if (name) var tag=document.getElementsByTagName(name); else tag=true; } if (tag && tagtype) { /* prvek a jeho typ je znam, mohu ho tedy obslouzit */ var actions = tags[i].getElementsByTagName('action'); for (var j=0; j < actions.length; j++) { var data = actions[j]; var type=data.getElementsByTagName('type')[0]; if (type) { /* bez typu akce nema cenu pokracovat */ /* prirazeni a vytvoreni zakladnich hodnot*/ if (data.getElementsByTagName('value')[0]) var value = data.getElementsByTagName('value')[0].firstChild.nodeValue; else value=''; if (data.getElementsByTagName('type')[0]) var actiontype = data.getElementsByTagName('type')[0].firstChild.nodeValue; else actiontype=''; /* konec */ /* obsluha zakladnich spolecnych akci */ if (actiontype=='VISIBILITY') { tag.style.visibility=value; } if (actiontype=='DISPLAY') { tag.style.display=value; } if (actiontype=='DISABLED') { if (value=='false'||value=='0') tag.disabled=false; else if (value=='true'||value=='1') tag.disabled=true; } if (actiontype=='SETCLASS') { tag.className=value; } /* obsluha akci prvku TEXT */ if (tagtype=='TEXT') { if (actiontype=='CLEARTEXT') { tag.innerHTML=''; } if (actiontype=='ADDTEXT') { tag.innerHTML=tag.innerHTML+value; } if (actiontype=='SETTEXT') { tag.innerHTML=value; } if (actiontype=='SETBUFFER') { var bufferText=value; } if (actiontype=='ADDBUFFER') { bufferText+=value; } if (actiontype=='OUTPUTBUFFER') { tag.innerHTML=bufferText; bufferText = null; } } /* obsluha akci prvku SELECT */ if (tagtype=='SELECT') { var text=''; var selected=''; if (data.getElementsByTagName('text')[0]) if (data.getElementsByTagName('text')[0].firstChild) if (data.getElementsByTagName('text')[0].firstChild.nodeValue) text = data.getElementsByTagName('text')[0].firstChild.nodeValue; if (data.getElementsByTagName('selected')[0]) if (data.getElementsByTagName('selected')[0].firstChild) if (data.getElementsByTagName('selected')[0].firstChild.nodeValue) selected = data.getElementsByTagName('selected')[0].firstChild.nodeValue; else selected=false; if (actiontype=='CLEARALLOPTIONS') { tag.options.length=0; } if (actiontype=='ADDOPTION') { var newkey=tag.options.length; tag.options[newkey] = new Option(text,value); if (selected) tag.options[newkey].selected=true; } if (actiontype=='SELECTOPTION') { var length = tag.options.length - 1; for (var k=0; k <= length; k++) { if (value) {if (tag.options[k].value==value) {tag.options[k].selected=true;}} } } if (actiontype=='REMOVEOPTION') { for (var k=0; k < tag.options.length - 1; k++) { if (value) {if (tag.options[k].value==value) tag.options[k]=null;} } } } /* obsluha akci prvku RADIO */ if (tagtype=='RADIO') { if (actiontype=='CHECK') { // vyhledam a zatrhnu radio button s danym name a hodnotou if (value) { if (!document.getElementsByName(name)) return false; var buttons = document.getElementsByName(name); if (buttons) { for (var j=0; j < buttons.length; j++) if (buttons[j].value==value) buttons[j].checked=true; } } } } /* obsluha kodu */ if (tagtype=='CODE') { if (actiontype=='RUN') { eval(value); } if (actiontype=='FUNCTION') { if (window[value]!=null) window[value](); } } } } } else { /*window.alert('chyba - tagtype:'+tagtype+' tag:'+tag);*/ } } } else { if (content.getElementsByTagName('html')[0]) { /* obsluha zmen HTML */ var html = content.getElementsByTagName('html')[0]; if (html.getAttribute('type')) var type=html.getAttribute('type'); else return false; if (html.getElementsByTagName('value')[0]) var value=html.getElementsByTagName('value')[0].firstChild.nodeValue; else return false; if (type=='LOCATION') { window.location=value; return true; } } else return false; } } else { window.alert('ajax failed #3'); return false; } } else { } return true; } function AjaxSelectBox(SelectBoxHTMLID,Script,ValueName,NextValues) { /* pri zmene zasle informace na patricny skript, ktery vrati obsluhu */ var SelectBox=document.getElementById(SelectBoxHTMLID); if (SelectBox && Script) { var value=SelectBox.options[SelectBox.selectedIndex].value; if (!ValueName) ValueName=SelectBoxHTMLID; var values=ValueName+'='+value; if (NextValues) values=values+NextValues; var info=htmlchanger_ajax_send(htmlchanger_ajax_process,'POST',Script,values); if (info) return true; else { window.alert('ajax failed #1'); return false; } } else { window.alert('ajax failed #2 SelectBoxHTMLID:'+SelectBoxHTMLID+' Script:'+Script); return false; } } function AjaxAnchor(Script,Values) { /* na kliknuti zasle pozadovane hodnoty skriptu */ var info=htmlchanger_ajax_send(htmlchanger_ajax_process,'POST',Script,Values); if (info) return true; else { window.alert('ajax failed #1'); return false; } } function AjaxRadio(radio,RadioButtonHTMLName,Script,ValueName,NextValues) { /* pri zmene zasle informace na patricny skript, ktery vrati obsluhu */ if (!document.getElementsByName(RadioButtonHTMLName)) return false; var buttons = document.getElementsByName(RadioButtonHTMLName); var value=false; /*if (buttons) { for (var j=0; j < buttons.length; j++) if (buttons[j].checked) value=buttons[j].value; }*/ var value=radio.value; if (Script && value) { if (!ValueName) ValueName=RadioButtonHTMLName; var values=ValueName+'='+value; if (NextValues) values=values+NextValues; var info=htmlchanger_ajax_send(htmlchanger_ajax_process,'POST',Script,values); if (info) return true; else { window.alert('ajax failed #1'); return false; } } else { window.alert('ajax failed #2 RadioButtonHTMLName:'+RadioButtonHTMLName+' Script:'+Script); return false; } }