﻿function DQTAppPaging() { this.factory = function(n) { this.cfg = n; this.cfg['array'] = parseInt(this.cfg['array']); if(this.cfg['array']%2 == 0) this.cfg['array'] = this.cfg['array']+1; this.cfg['idhtml'] = this.cfg['idhtml'].replace( /\s+/g, "" ).split(","); this.cfg['vars'] = new Array(); this.cfg['ui'] = (this.cfg['ui']) ? this.cfg['ui'] : 'html'; this.cfg['mode'] = this.cfg['mode'].toLowerCase(); if(this.cfg['l'] == undefined) { this.cfg['l'] = new Array(true,true,true,true);}
if(this.cfg['lclass'] == undefined) { this.cfg['lclass'] = new Array('','','','');} else { if( typeof(this.cfg['lclass']) == 'string' ) { var _xv = this.cfg['lclass']; this.cfg['lclass'] = new Array(_xv,_xv,_xv,_xv);}
}
if(this.cfg['fclass'] == undefined) { this.cfg['fclass'] = '';}
if(this.cfg['fclass_selected'] == undefined) { this.cfg['fclass_selected'] = '';}
if(this.cfg['dropdownclass'] == undefined) { this.cfg['dropdownclass'] = '';}
if(this.cfg['dropdowntext'] == undefined) { this.cfg['dropdowntext'] = 'Page';}
this.v = new Array(); this.htmltpl = new Array(); this.tpl = new Array(); this.autoupdate_field = new Array();}
this.regvar = function(k,v) { this.cfg['vars'][k] = v;}
this.regtpl = function(tplvar, _value) { if( tplvar == 'next_text' || tplvar == 'back_text' || tplvar == 'next_img' || tplvar == 'back_img' || tplvar == 'first_text' || tplvar == 'last_text' || tplvar == 'xpage' || tplvar == 'spacertpl' ) { if(tplvar == 'spacertpl') { this.htmltpl[tplvar] = _value;}
if(tplvar == 'next_img' || tplvar == 'back_img' || tplvar == 'first_img' || tplvar == 'last_img') { var s = '<img border="0" src="'+ _value.replace(/%onoff%/ig, "off") +'" align="texttop" '; s += 'offsrc="'+ _value.replace(/%onoff%/ig, "off") +'" '; s += 'onsrc="'+ _value.replace(/%onoff%/ig, "on") +'" '; s += 'onmouseover="this.src=this.getAttribute(\'onsrc\');"'; s += 'onmouseout="this.src=this.getAttribute(\'offsrc\');"'; s += '>'; this.htmltpl[tplvar] = s;}
if(tplvar == 'next_text' || tplvar == 'back_text' || tplvar == 'first_text' || tplvar == 'last_text' || tplvar == 'xpage') { _value = _value.replace(/%(next_text|back_text|first_text|last_text|onoff)%/ig, ""); _value = _value.replace(/%(next_img)%/ig, this.htmltpl['next_img']); _value = _value.replace(/%(back_img)%/ig, this.htmltpl['back_img']); _value = _value.replace(/%(first_img)%/ig, this.htmltpl['first_img']); _value = _value.replace(/%(last_img)%/ig, this.htmltpl['last_img']); if(this.cfg['ui'] == 'dropdown' && tplvar == 'xpage') { } else { _value = _value.replace(/%(\w{1,50})%/ig, "<span tpl=\"$1\"></span>");}
var s = _value; this.htmltpl[tplvar] = s;}
}
}
this.reg_autoupdate_field = function(html_field_div, tplvar, strtype) { if( tplvar == 'next_text' || tplvar == 'back_text' || tplvar == 'next_img' || tplvar == 'back_img' || tplvar == 'first_text' || tplvar == 'last_text' || tplvar == 'xpage' ) { return;}
html_field_div = html_field_div.replace( /\s+/g, "" ).split(","); strtype = (strtype > 0) ? parseInt(strtype) : 0; if(typeof(this.autoupdate_field[tplvar]) == "undefined") { this.autoupdate_field[tplvar] = new Array();}
this.autoupdate_field[tplvar].push(new Array(html_field_div, strtype));}
this.doautoupdate = function() { var key; for (key in this.autoupdate_field)
{ if(typeof(key) == 'string') { var _x = this.autoupdate_field[key]; for (var i = 0; i < _x.length ; i++)
{ var strtype = _x[i][1]; var html_field_div = _x[i][0]; for(var y = 0; y < html_field_div.length; y++)
{ if(strtype == 1) { eval(html_field_div[y]+"(this.v['"+key+"']);");}
if(strtype == 0) { var rs = html_field_div[y].split(/\./i); if(rs.length == 2) { eval("var rso = document.getElementById(rs[0]); rso." + rs[1] + "=this.v['"+key+"'];");} else { eval(html_field_div[y] + "=this.v['"+key+"'];");}
}
}
}
}
}
}
this.trim = function(str) { str = str.replace( /^\s+/g, "" ); return str.replace( /\s+$/g, "" );}
this.mk_random_str = function(prefix, string_length) { var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz"; var randomstring = ''; for (var i=0; i<string_length; i++) { var rnum = Math.floor(Math.random() * chars.length); randomstring += chars.substring(rnum,rnum+1);}
return prefix+randomstring+this.TimeDemo();}
this.make = function() { for (var i = 0; i < this.cfg['idhtml'].length; i++)
{ var node = document.createElement("TABLE"); node.style.display = 'none'; node.border =0; node.width = 1; node.cellSpacing=0; node.cellPadding=0; node.id="__"+this.cfg['idhtml'][i]+"_table"; node.setAttribute("pagingobj",this.cfg['obj'],0); rownode = node.insertRow(); rownode.id="__"+this.cfg['idhtml'][i]+"_tabletr"; rownode.vAlign = "top"; rownode.align = "center"; if(this.cfg['l'][0]) { var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_f1"; _cell.noWrap = true; _cell.className = this.cfg['lclass'][0]; _cell.innerHTML = (typeof(this.htmltpl['first_text']) == 'undefined') ? '' : this.htmltpl['first_text']; _cell.style.cursor = 'hand'; _cell.attachEvent ('onclick', this.Hilite);}
if(this.cfg['l'][1]) { var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_f2"; _cell.noWrap = true; _cell.className = this.cfg['lclass'][1]; _cell.innerHTML = (typeof(this.htmltpl['back_text']) == 'undefined') ? '' : this.htmltpl['back_text']; _cell.style.cursor = 'hand'; _cell.attachEvent ('onclick', this.Hilite);}
if(this.cfg['ui'] == 'html')
{ for (var ii = 0; ii < this.cfg['array']; ii++)
{ var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_numfield_"+(ii+1); _cell.noWrap = true; _cell.className = ( typeof(this.cfg['fclass']) == 'string' ) ? this.cfg['fclass'] : ((typeof(this.cfg['fclass'][ii]) == 'undefined') ? '' : this.cfg['fclass'][ii]); _cell.innerHTML = (typeof(this.htmltpl['xpage']) == 'undefined') ? '' : this.htmltpl['xpage']; _cell.style.cursor = 'hand'; _cell.attachEvent ('onclick', this.Hilite); if(this.htmltpl['spacertpl'] != undefined && ii != (this.cfg['array']-1)) { var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_spacer_"+(ii+1); _cell.noWrap = true; _cell.innerHTML = this.htmltpl['spacertpl']; _cell.style.cursor = 'hand';}
}
}
else
{ var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_dropdown"; _cell.noWrap = true; _cell.className = ( typeof(this.cfg['fclass']) == 'string' ) ? this.cfg['fclass'] : '';}
if(this.cfg['l'][2]) { var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_f3"; _cell.noWrap = true; _cell.className = this.cfg['lclass'][2]; _cell.innerHTML = (typeof(this.htmltpl['next_text']) == 'undefined') ? '' : this.htmltpl['next_text']; _cell.style.cursor = 'hand'; _cell.attachEvent ('onclick', this.Hilite);}
if(this.cfg['l'][3]) { var _cell = rownode.insertCell(); _cell.id = "__"+this.cfg['idhtml'][i]+"_paging_f4"; _cell.noWrap = true; _cell.className = this.cfg['lclass'][3]; _cell.innerHTML = (typeof(this.htmltpl['last_text']) == 'undefined') ? '' : this.htmltpl['last_text']; _cell.style.cursor = 'hand'; _cell.attachEvent ('onclick', this.Hilite);}
var nodes = document.getElementById( this.cfg['idhtml'][i] ); nodes.align = "center"; nodes.innerHTML = ""; nodes.insertBefore( node );}
}
this.Hilite = function() { var o = event.srcElement; while (!o.id.match(/^__(\w{1,200}?)_paging_(numfield_|f)(\d{1,200}?)$/i) && o.tagName.toLowerCase() != 'td')
{ var o = o.parentNode;}
var page = o.getAttribute('page',0); var myregexp = /^__(\w{1,200}?)_paging_(numfield_|f)(\d{1,200}?)$/i; var match = myregexp.exec(o.id); if (match != null && match.length > 1 && page > 0) { var nodes = document.getElementById( "__"+match[1]+"_table" ); nodes = nodes.getAttribute('pagingobj',0); eval(nodes+".gotopage(page);");}
}
this.Hilite2 = function() { var o = event.srcElement; var page = o.options[o.selectedIndex].getAttribute('page',0); var myregexp = /^__(\w{1,200}?)_paging_dropdownfield$/i; var match = myregexp.exec(o.id); if (match != null && match.length > 1 && page > 0) { var nodes = document.getElementById( "__"+match[1]+"_table" ); nodes = nodes.getAttribute('pagingobj',0); eval(nodes+".gotopage(page);");}
}
this.show = function(ishide) { for (var i = 0; i < this.cfg['idhtml'].length; i++)
{ var nodes = document.getElementById( "__"+this.cfg['idhtml'][i]+"_table" ); nodes.style.display = (ishide == true || this.v['total_records'] < 1) ? 'none' : 'block';}
}
this.gotopage = function(now_page, total_records, records_per_page, nogoto) { if(total_records == undefined) { total_records = (this.v['total_records'] > 0) ? this.v['total_records'] : 0;}
if(records_per_page == undefined) { records_per_page = (this.v['total_records'] > 0) ? this.v['records_per_page'] : 0;}
this.v['now_page'] = ( isNaN(parseInt(now_page)) ) ? 1 : parseInt(now_page); this.v['now_page'] = ( this.v['now_page'] < 1 ) ? 1 : this.v['now_page']; if(total_records < 1) this.v['now_page'] = 0; this.v['total_records'] = ( isNaN(parseInt(total_records)) ) ? 0 : parseInt(total_records); this.v['records_per_page'] = ( isNaN(parseInt(records_per_page)) ) ? 0 : parseInt(records_per_page); this.v['total_pages'] = Math.ceil(this.v['total_records'] / this.v['records_per_page']); this.v['first_page_no'] = (this.v['total_records'] > 0) ? 1 : 0; this.v['last_page_no'] = this.v['total_pages']; this.v['next_page_no'] = ((this.v['total_records'] - (this.v['records_per_page'] * this.v['now_page'])) > 0) ? this.v['now_page'] + 1 : this.v['total_pages']; if(this.v['total_records'] < 1) this.v['next_page_no'] = 0; this.v['back_page_no'] = (this.v['now_page'] != 1 && this.v['total_records'] > 0) ? this.v['now_page'] - 1 : 1; if(this.v['total_records'] < 1) this.v['back_page_no'] = 0; this.v['begin_recordnum'] = ((this.v['now_page'] - 1) * this.v['records_per_page']) + 1; if(this.v['total_records'] < 1) this.v['begin_recordnum'] = 0; this.v['end_recordnum'] = (this.v['total_records'] - this.v['begin_recordnum'] > this.v['records_per_page']) ? this.v['records_per_page']*this.v['now_page'] : this.v['total_records']; if(this.v['total_records'] < 1) this.v['end_recordnum'] = 0; this.v['back_num_recs'] = ( this.v['begin_recordnum'] - this.v['records_per_page'] > 0 ) ? this.v['records_per_page'] : 0; if(this.v['total_records'] < 1) this.v['back_num_recs'] = 0; this.v['next_num_recs'] = (this.v['total_records'] - this.v['end_recordnum'] >= this.v['records_per_page']) ? this.v['records_per_page'] : this.v['total_records'] - this.v['end_recordnum']; if(this.v['total_records'] < 1) this.v['next_num_recs'] = 0; this.doautoupdate(); if(this.v['total_records'] > 0) { this.doupdatetpl(); this.show();} else { this.show(true);}
if(nogoto != true) {eval(this.cfg['callback']+"(this.v, this.cfg['vars']);");}
}
this.recount = function(o,xpage) { var i = new Array(); i['xpage'] = xpage; i['xpage_begin_recordnum'] = ((xpage - 1) * this.v['records_per_page']) + 1; i['xpage_end_recordnum'] = (this.v['total_records'] - i['xpage_begin_recordnum'] > this.v['records_per_page']) ? this.v['records_per_page']*xpage : this.v['total_records']; if(this.cfg['ui'] == 'dropdown')
{ var _text = this.htmltpl['xpage']; _text = _text.replace(/%xpage_no%/ig, i['xpage']); _text = _text.replace(/%xpage_begin_recordnum%/ig, i['xpage_begin_recordnum']); _text = _text.replace(/%xpage_end_recordnum%/ig, i['xpage_end_recordnum']); return _text;}
else
{ o.setAttribute("page",xpage,0); if(xpage == this.v['now_page']) { o.className = this.cfg['fclass_selected']; if(this.cfg['event_onpagingfield_click']) { eval(this.cfg['event_onpagingfield_click']+"(o,xpage);");}
} else { o.className = this.cfg['fclass']; if(this.cfg['event_onpagingfield_release']) { eval(this.cfg['event_onpagingfield_release']+"(o,xpage);");}
}
var _o = o.getElementsByTagName("SPAN"); for (var _i = 0; _i < _o.length; _i++)
{ var _x = _o.item(_i).getAttribute("tpl"); if(typeof(_x) == 'string') { if(_x.length > 0 && _x.match(/^xpage.*?/i)) { if(_x=='xpage_no') _x = 'xpage'; _o.item(_i).innerText = i[_x];}
}
}
}
}
this.replacetpl = function(str) { var key; for (key in this.v)
{ eval("str=str.replace(/%("+key+")%/ig, this.v[key]);");}
return str;}
this.makedropdown = function(clone,_main) { var _cell = document.getElementById( "__"+clone+"_paging_dropdown" ); _cell.innerHTML = ''; var _sel = document.createElement("SELECT"); _sel.id = "__"+clone+"_paging_dropdownfield"; _sel.className = ( typeof(this.cfg['dropdownclass']) == 'string' ) ? this.cfg['dropdownclass'] : ''; for (var ii = 0; ii < _main.length+1; ii++)
{ var _opt = document.createElement("OPTION"); _sel.options.add(_opt); _opt.id = "__"+clone+"_paging_numfield_"+(ii); _opt.className = ( typeof(this.cfg['fclass']) == 'string' ) ? this.cfg['fclass'] : ((typeof(this.cfg['fclass'][ii]) == 'undefined') ? '' : this.cfg['fclass'][ii]); if(ii==0) { _opt.innerText = this.cfg['dropdowntext'];} else { var xpage = _main[ii-1]; _opt.setAttribute("page",xpage,0); _opt.innerText = this.recount(false,xpage); if(xpage == this.v['now_page']) { _opt.selected = true; _opt.className = this.cfg['fclass_selected'];} else { _opt.selected = false; _opt.className = this.cfg['fclass'];}
}
}
_cell.innerHTML = _sel.outerHTML; var _selb = document.getElementById("__"+clone+"_paging_dropdownfield"); _selb.attachEvent ('onchange', this.Hilite2);}
this.sliding = function(cp,tp,d) { var i,expansion_after,expansion_before; var links = new Array(); if (tp > (2 * d + 1)) { expansion_before = ((tp-d) <= cp) ? cp-(tp-d) : 0; for (i = cp-d-expansion_before; expansion_before; expansion_before--, i++) { links.push(i);}
expansion_after = 0; for (i = cp-d; (i<=cp+d) && (i<=tp); i++) { if (i < 1) { ++expansion_after; continue;}
links.push(i);}
if (expansion_after > 0) { for (i = cp+d+1; expansion_after; expansion_after--, i++) { links.push(i);}
}
} else { for (i=1; i<=tp; i++) { links.push(i);}
}
return links;}
this.doupdatetpl = function() { var _main = new Array(); if(this.cfg['mode'] == 'jumping') { var _frame = Math.ceil(this.v['now_page'] / this.cfg['array']); var _min = ((_frame-1)*this.cfg['array']) + 1; var _max = _min+(this.cfg['array']-1); _max = (_max > this.v['total_pages']) ? this.v['total_pages'] : _max; for (var i = _min; i <= _max; i++){_main.push(i);}
if(_main.length != this.cfg['array']) { var _fdu_mark = _main[0]; for(var _fdui = 1; _fdui <= (this.cfg['array'] - _main.length); _fdui++) { if(_fdu_mark - _fdui > 0) { var _fduarr = [_fdu_mark - _fdui]; _main = _fduarr.concat(_main);}
}
}
} else if(this.cfg['mode'] == 'sliding') { _main = this.sliding(this.v['now_page'], this.v['total_pages'], Math.floor(this.cfg['array']/2));}
this.pages = _main; for (var i = 0; i < this.cfg['idhtml'].length; i++)
{ if(this.cfg['ui'] == 'html') { for (var w = 0; w < this.cfg['array']; w++)
{ var _id=w+1; var o = document.getElementById("__"+this.cfg['idhtml'][i]+"_paging_numfield_"+_id); var o2 = document.getElementById("__"+this.cfg['idhtml'][i]+"_paging_spacer_"+_id); if(_main[w] > 0 && _main[w] != undefined) { try {o2.style.display = 'none';} catch(e) {}
o.style.display = 'none'; this.recount(o, _main[w]); o.style.display = 'block'; try { o2.style.display = (w==_main.length-1) ? 'none' : 'block';} catch(e) {}
} else { o.style.display = 'none'; try {o2.style.display = 'none';} catch(e) {}
}
}
} else { this.makedropdown(this.cfg['idhtml'][i],_main);}
for (var _u=1; _u<5; _u++)
{ if( this.cfg['l'][_u-1] == true )
{ var _root = document.getElementById("__"+this.cfg['idhtml'][i]+"_paging_f"+_u); if(_u == 1) {_root.setAttribute("page",this.v['first_page_no'],0);}
if(_u == 2) {_root.setAttribute("page",this.v['back_page_no'],0);}
if(_u == 3) {_root.setAttribute("page",this.v['next_page_no'],0);}
if(_u == 4) {_root.setAttribute("page",this.v['last_page_no'],0);}
}
}
var root = document.getElementById(this.cfg['idhtml'][i]); var o = root.getElementsByTagName("SPAN"); for (var _i = 0; _i < o.length; _i++)
{ var _x = o.item(_i).getAttribute("tpl"); if(typeof(_x) == 'string') { if(_x.length > 0 && !_x.match(/^xpage.*?/i)) { o.item(_i).innerText = this.v[_x];}
}
}
if(this.cfg['ui'] == 'dropdown')
{ var p = root.getElementsByTagName("OPTION"); for (var _i = 0; _i < p.length; _i++)
{ p.item(_i).text = this.replacetpl(p.item(_i).text);}
}
}
}
}
