/** * * */ var ivyBBS_XHR = Class.create(); ivyBBS_XHR.prototype = { initialize: function(id, options) { this.panel = $(id); this.prefix = '/Board/xml/'; this.rows = null; this.sleep = null; this.options = Object.extend({ subjectLength:30, detailLength:80, type:'list', target:'_self', start:0, resize:null }, options || {}); this.uiLoading(); }, uiLoading:function(){ this.panel.innerHTML = '

L o a d i n g ...
'; this.sleep = new PeriodicalExecuter(this.xmlLoading.bind(this),1); }, xmlLoading:function(){ this.sleep.stop(); var xmlfile = this.prefix+this.options.board+'.xml'; new Ajax.Request(xmlfile, {method:'post',contentType:'application/xml',encoding:'euc-kr',onComplete:this.getNodes.bind(this)}); }, getNodes:function(request){ if(request.status==200 && request.readyState==4){ var xml = request.responseXML; var infoNode = xml.getElementsByTagName("bbs")[0]; this.rows = infoNode.getAttribute("rows"); switch (this.options.type) { case 'album': this.templateAlbum(xml.getElementsByTagName("item")); break; case 'webzin': this.templateWebzin(xml.getElementsByTagName("item")); break; default: this.templateList(xml.getElementsByTagName("item")); break; } } else { this.requestHtml(request); } }, templateList:function(nodes){ var html = '' var entry = null; var j=(this.rows > this.options.rows)?this.options.rows:this.rows; j= Number(j)+Number(this.options.start); for (var i=this.options.start; i'; html += '
['+entry.getElementsByTagName("category")[0].firstChild.nodeValue+']'+this.strOffset(entry.getElementsByTagName("title")[0].firstChild.nodeValue,this.options.subjectLength)+'['+entry.getElementsByTagName("comment")[0].firstChild.nodeValue+']
'; html += '
'+entry.getElementsByTagName("date")[0].firstChild.nodeValue+'
'; html += ''; } this.panel.innerHTML = html; }, templateAlbum:function(nodes){ var html = '' var entry = null; var j=(this.rows > this.options.rows)?this.options.rows:this.rows; j= Number(j)+Number(this.options.start); for (var i=this.options.start; i'; html += '
'+this.strOffset(entry.getElementsByTagName("title")[0].firstChild.nodeValue,this.options.subjectLength)+'['+entry.getElementsByTagName("comment")[0].firstChild.nodeValue+']'; html += '
'+entry.getElementsByTagName("date")[0].firstChild.nodeValue+'
'; html += ''; } this.panel.innerHTML = html; }, templateWebzin:function(nodes){ var html = '' var entry = null; var j=(this.rows > this.options.rows)?this.options.rows:this.rows; j= Number(j)+Number(this.options.start); for (var i=this.options.start; i'; html += '
'; if(entry.getElementsByTagName("thumbnail")[0]){ html += ''+this.strOffset(entry.getElementsByTagName("title")[0].firstChild.nodeValue,this.options.subjectLength)+'['+entry.getElementsByTagName("comment")[0].firstChild.nodeValue+']
'; html += this.strOffset(entry.getElementsByTagName("description")[0].firstChild.nodeValue,this.options.detailLength); html += ''+entry.getElementsByTagName("date")[0].firstChild.nodeValue+''; html += ''; } this.panel.innerHTML = html; }, strOffset:function(str,len){ if(str.length > len){ str = str.substring(0,len); str += '...'; } return str; }, reload:function(){ if(arguments.length > 0){ this.xmlLoading(); } else { this.uiLoading(); } }, errorPrint: function(req){ this.panel.innerHTML = '
Error No. X0HR'+req.status+' '+req.readyState+'
'; }, requestHtml: function(req){ var subjectLength = Math.round(this.options.subjectLength * 1.3); var detailLength = Math.round(this.options.detailLength * 1.3); var param = 'board='+this.options.board+'&type='+this.options.type+'&rows='+this.options.rows+'&subjectLength='+subjectLength+'&detailLength='+detailLength+'&target='+this.options.target+'&start='+this.options.start+'&resize='+this.options.resize; var url = '/htmls/ivy_bbs_xhr.php'; Ivy.getHtml.send(this.panel,url+'?'+param); } }