diff -r de56132c008d -r bdac73ed481e includes/clientside/static/paginate.js --- a/includes/clientside/static/paginate.js Sun Mar 28 21:49:26 2010 -0400 +++ b/includes/clientside/static/paginate.js Sun Mar 28 23:10:46 2010 -0400 @@ -13,69 +13,69 @@ window.paginator = function(data, callback, offset, perpage, passer, ov_num_pages, ov_flip_func) { - load_component('flyin'); - if ( !perpage || typeof(perpage) != 'number' || ( typeof(perpage) == 'number' && perpage < 1 ) ) - { - this.perpage = 10; - } - else - { - this.perpage = perpage; - } - if ( typeof(offset) != 'number' ) - this.offset = 0; - else - this.offset = offset; - if ( typeof(passer) != 'undefined' ) - this.passer = passer; - else - this.passer = false; - if ( ov_num_pages ) - { - this.num_pages = ov_num_pages; - this.flip_func = ov_flip_func; - } - else - { - this.num_pages = Math.ceil(data.length / perpage); - this.flip_func = false; - } - this.random_id = 'autopagin_' + Math.floor(Math.random() * 1000000); - this._build_control = _build_paginator; - this.set_page = function(number) - { - this.offset = number * this.perpage; - var html = this._build_control(number); - var elements = getElementsByClassName(document.body, 'div', this.random_id + '_control'); - for ( var i = 0; i < elements.length; i++ ) - elements[i].innerHTML = html; - } - if ( this.num_pages > 1 ) - { - var pg_control = '
'+this._build_control(0)+'
'; - } - else - { - var pg_control = ''; - } - this.html = pg_control; - var i = 0; - while ( i < data.length ) - { - if ( i % this.perpage == 0 ) - { - if ( i > 0 ) - this.html += ''; - var display = ( ( i * this.perpage ) == this.offset ) ? '' : 'display: none;'; - var thispage = Math.floor(i / this.perpage); - this.html += '
'; - } - this.html += callback(data[i], this.passer); - i++; - } - this.html += '
'; - this.html += pg_control; - pagin_objects[this.random_id] = this; + load_component('flyin'); + if ( !perpage || typeof(perpage) != 'number' || ( typeof(perpage) == 'number' && perpage < 1 ) ) + { + this.perpage = 10; + } + else + { + this.perpage = perpage; + } + if ( typeof(offset) != 'number' ) + this.offset = 0; + else + this.offset = offset; + if ( typeof(passer) != 'undefined' ) + this.passer = passer; + else + this.passer = false; + if ( ov_num_pages ) + { + this.num_pages = ov_num_pages; + this.flip_func = ov_flip_func; + } + else + { + this.num_pages = Math.ceil(data.length / perpage); + this.flip_func = false; + } + this.random_id = 'autopagin_' + Math.floor(Math.random() * 1000000); + this._build_control = _build_paginator; + this.set_page = function(number) + { + this.offset = number * this.perpage; + var html = this._build_control(number); + var elements = getElementsByClassName(document.body, 'div', this.random_id + '_control'); + for ( var i = 0; i < elements.length; i++ ) + elements[i].innerHTML = html; + } + if ( this.num_pages > 1 ) + { + var pg_control = '
'+this._build_control(0)+'
'; + } + else + { + var pg_control = ''; + } + this.html = pg_control; + var i = 0; + while ( i < data.length ) + { + if ( i % this.perpage == 0 ) + { + if ( i > 0 ) + this.html += ''; + var display = ( ( i * this.perpage ) == this.offset ) ? '' : 'display: none;'; + var thispage = Math.floor(i / this.perpage); + this.html += '
'; + } + this.html += callback(data[i], this.passer); + i++; + } + this.html += '
'; + this.html += pg_control; + pagin_objects[this.random_id] = this; } /** @@ -85,334 +85,334 @@ window._build_paginator = function(this_page) { - var div_styling = ( IE ) ? 'width: 1px; margin: 10px auto 10px 0;' : 'display: table; margin: 10px 0 10px auto;'; - var begin = '
'; - var block = ''; - var end = '
' + $lang.get('paginate_lbl_page') + '{LINK}
'; - var blk = new templateParser(block); - var inner = ''; - var cls = 'row2'; - - if ( this_page > 0 ) - { - var url = '#page_'+(this_page); - var link = "« " + $lang.get('paginate_btn_prev') + ""; - cls = ( cls == 'row1' ) ? 'row2' : 'row1'; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); - } - if ( this.num_pages < 5 ) - { - for ( var i = 0; i < this.num_pages; i++ ) - { - cls = ( cls == 'row1' ) ? 'row2' : 'row1'; - var j = i + 1; - var url = '#page_'+j; - var link = ( i == this_page ) ? ""+j+"" : ""+j+""; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); - } - } - else - { - if ( this_page + 5 > this.num_pages ) - { - var list = new Array(); - var tp = this_page; // The vectors below used to be 3, 2, and 1 - if ( this_page + 0 == this.num_pages ) tp = tp - 2; - if ( this_page + 1 == this.num_pages ) tp = tp - 1; - if ( this_page + 2 == this.num_pages ) tp = tp - 0; - for ( var i = tp - 1; i <= tp + 1; i++ ) - { - list.push(i); - } - } - else - { - var list = new Array(); - var current = this_page; - var lower = ( current < 3 ) ? 1 : current - 1; - for ( var i = 0; i < 3; i++ ) - { - list.push(lower + i); - } - } - var url = '#page_1'; - var link = ( 0 == this_page ) ? "" + $lang.get('paginate_btn_first') + "" : "« " + $lang.get('paginate_btn_first') + ""; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); + var div_styling = ( IE ) ? 'width: 1px; margin: 10px auto 10px 0;' : 'display: table; margin: 10px 0 10px auto;'; + var begin = '
'; + var block = ''; + var end = '
' + $lang.get('paginate_lbl_page') + '{LINK}
'; + var blk = new templateParser(block); + var inner = ''; + var cls = 'row2'; + + if ( this_page > 0 ) + { + var url = '#page_'+(this_page); + var link = "« " + $lang.get('paginate_btn_prev') + ""; + cls = ( cls == 'row1' ) ? 'row2' : 'row1'; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); + } + if ( this.num_pages < 5 ) + { + for ( var i = 0; i < this.num_pages; i++ ) + { + cls = ( cls == 'row1' ) ? 'row2' : 'row1'; + var j = i + 1; + var url = '#page_'+j; + var link = ( i == this_page ) ? ""+j+"" : ""+j+""; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); + } + } + else + { + if ( this_page + 5 > this.num_pages ) + { + var list = new Array(); + var tp = this_page; // The vectors below used to be 3, 2, and 1 + if ( this_page + 0 == this.num_pages ) tp = tp - 2; + if ( this_page + 1 == this.num_pages ) tp = tp - 1; + if ( this_page + 2 == this.num_pages ) tp = tp - 0; + for ( var i = tp - 1; i <= tp + 1; i++ ) + { + list.push(i); + } + } + else + { + var list = new Array(); + var current = this_page; + var lower = ( current < 3 ) ? 1 : current - 1; + for ( var i = 0; i < 3; i++ ) + { + list.push(lower + i); + } + } + var url = '#page_1'; + var link = ( 0 == this_page ) ? "" + $lang.get('paginate_btn_first') + "" : "« " + $lang.get('paginate_btn_first') + ""; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); - // if ( !in_array(1, $list) ) - // { - // $cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; - // $blk->assign_vars(array('CLASS'=>$cls,'LINK'=>'...')); - // $inner .= $blk->run(); - // } + // if ( !in_array(1, $list) ) + // { + // $cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; + // $blk->assign_vars(array('CLASS'=>$cls,'LINK'=>'...')); + // $inner .= $blk->run(); + // } - for ( var k in list ) - { - var i = list[k]; - if ( i == this.num_pages ) - break; - cls = ( cls == 'row1' ) ? 'row2' : 'row1'; - var j = i + 1; - var url = '#page_'+j; - var link = ( i == this_page ) ? ""+j+"" : ""+j+""; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); - } + for ( var k in list ) + { + var i = list[k]; + if ( i == this.num_pages ) + break; + cls = ( cls == 'row1' ) ? 'row2' : 'row1'; + var j = i + 1; + var url = '#page_'+j; + var link = ( i == this_page ) ? ""+j+"" : ""+j+""; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); + } - if ( this_page < this.num_pages ) - { - // $cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; - // $blk->assign_vars(array('CLASS'=>$cls,'LINK'=>'...')); - // $inner .= $blk->run(); + if ( this_page < this.num_pages ) + { + // $cls = ( $cls == 'row1' ) ? 'row2' : 'row1'; + // $blk->assign_vars(array('CLASS'=>$cls,'LINK'=>'...')); + // $inner .= $blk->run(); - cls = ( cls == 'row1' ) ? 'row2' : 'row1'; - var url = '#page_' + String( this.num_pages-1 ); - var link = ( ( this.num_pages - 1 ) == this_page ) ? "" + $lang.get('paginate_btn_last') + "" : "" + $lang.get('paginate_btn_last') + " »"; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); - } + cls = ( cls == 'row1' ) ? 'row2' : 'row1'; + var url = '#page_' + String( this.num_pages-1 ); + var link = ( ( this.num_pages - 1 ) == this_page ) ? "" + $lang.get('paginate_btn_last') + "" : "" + $lang.get('paginate_btn_last') + " »"; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); + } - } + } - if ( this_page < ( this.num_pages - 1 ) ) - { - var url = '#page_' + String(this_page + 2); - var link = "" + $lang.get('paginate_btn_next') + " »"; - cls = ( cls == 'row1' ) ? 'row2' : 'row1'; - blk.assign_vars({ - CLASS: cls, - LINK: link - }); - inner += blk.run(); - } + if ( this_page < ( this.num_pages - 1 ) ) + { + var url = '#page_' + String(this_page + 2); + var link = "" + $lang.get('paginate_btn_next') + " »"; + cls = ( cls == 'row1' ) ? 'row2' : 'row1'; + blk.assign_vars({ + CLASS: cls, + LINK: link + }); + inner += blk.run(); + } - inner += '↓'; + inner += '↓'; - var paginator = "\n"+begin+inner+end+"\n"; - return paginator; - + var paginator = "\n"+begin+inner+end+"\n"; + return paginator; + } var __paginateLock = false; window.jspaginator_goto = function(pagin_id, jump_to) { - if ( __paginateLock ) - return false; - var theobj = pagin_objects[pagin_id]; - if ( theobj.flip_func ) - { - theobj.flip_func(theobj, jump_to); - __paginateLock = false; - return true; - } - var current_div = false; - var new_div = false; - for ( var i = 0; i < theobj.num_pages; i++ ) - { - var thediv = document.getElementById(pagin_id + '_' + i); - if ( !thediv ) - { - // if ( window.console ) - // window.console.error('jspaginator_goto(): got a bad DOM object in loop'); - return false; - } - // window.console.debug("Div "+i+' of '+(theobj.num_pages-1)+': ', thediv); - if ( thediv.style.display != 'none' ) - current_div = thediv; - else if ( i == jump_to ) - new_div = thediv; - } - - if ( !new_div ) - { - // if ( window.console ) - // window.console.error('jspaginator_goto(): didn\'t get new div'); - return false; - } - if ( !current_div ) - { - // if ( window.console ) - // window.console.error('jspaginator_goto(): didn\'t get current div'); - return false; - } - - // window.console.debug(current_div); - // window.console.debug(new_div); - - // White-out the old div and fade in the new one - - if ( IE || is_Safari || aclDisableTransitionFX ) - { - current_div.style.display = 'none'; - new_div.style.display = 'block'; - } - else - { - __paginateLock = true; - var fade_time = 375; - var code = 'var old = \'' + current_div.id + '\';'; - code += 'var newer = \'' + new_div.id + '\';'; - code += 'document.getElementById(old).style.display = "none";'; - code += 'changeOpac(0, newer);'; - code += 'document.getElementById(newer).style.display = "block";'; - code += 'opacity(newer, 0, 100, '+fade_time+');'; - code += '__paginateLock = false;'; - // if ( window.console ) - // window.console.debug('metacode for fader: ', code); - opacity(current_div.id, 100, 0, fade_time); - setTimeout(code, (fade_time + 50)); - } - - - var pg_control = theobj._build_control(jump_to); - var divs = getElementsByClassName(document, 'div', pagin_id + '_control'); - for ( var i = 0; i < divs.length; i++ ) - { - divs[i].innerHTML = pg_control; - } + if ( __paginateLock ) + return false; + var theobj = pagin_objects[pagin_id]; + if ( theobj.flip_func ) + { + theobj.flip_func(theobj, jump_to); + __paginateLock = false; + return true; + } + var current_div = false; + var new_div = false; + for ( var i = 0; i < theobj.num_pages; i++ ) + { + var thediv = document.getElementById(pagin_id + '_' + i); + if ( !thediv ) + { + // if ( window.console ) + // window.console.error('jspaginator_goto(): got a bad DOM object in loop'); + return false; + } + // window.console.debug("Div "+i+' of '+(theobj.num_pages-1)+': ', thediv); + if ( thediv.style.display != 'none' ) + current_div = thediv; + else if ( i == jump_to ) + new_div = thediv; + } + + if ( !new_div ) + { + // if ( window.console ) + // window.console.error('jspaginator_goto(): didn\'t get new div'); + return false; + } + if ( !current_div ) + { + // if ( window.console ) + // window.console.error('jspaginator_goto(): didn\'t get current div'); + return false; + } + + // window.console.debug(current_div); + // window.console.debug(new_div); + + // White-out the old div and fade in the new one + + if ( IE || is_Safari || aclDisableTransitionFX ) + { + current_div.style.display = 'none'; + new_div.style.display = 'block'; + } + else + { + __paginateLock = true; + var fade_time = 375; + var code = 'var old = \'' + current_div.id + '\';'; + code += 'var newer = \'' + new_div.id + '\';'; + code += 'document.getElementById(old).style.display = "none";'; + code += 'changeOpac(0, newer);'; + code += 'document.getElementById(newer).style.display = "block";'; + code += 'opacity(newer, 0, 100, '+fade_time+');'; + code += '__paginateLock = false;'; + // if ( window.console ) + // window.console.debug('metacode for fader: ', code); + opacity(current_div.id, 100, 0, fade_time); + setTimeout(code, (fade_time + 50)); + } + + + var pg_control = theobj._build_control(jump_to); + var divs = getElementsByClassName(document, 'div', pagin_id + '_control'); + for ( var i = 0; i < divs.length; i++ ) + { + divs[i].innerHTML = pg_control; + } } window.paginator_goto = function(parentobj, this_page, num_pages, perpage, additive, url_string) { - load_component('flyin'); - - var height = $dynano(parentobj).Height(); - var width = $dynano(parentobj).Width(); - var left = $dynano(parentobj).Left(); - var top = $dynano(parentobj).Top(); - var left_pos = left + width ; - var top_pos = height + top; - var div = document.createElement('div'); - div.style.position = 'absolute'; - div.style.top = top_pos + 'px'; - div.className = 'question-box'; - div.style.margin = '1px 0 0 2px'; - var vtmp = 'input_' + Math.floor(Math.random() * 1000000); - var regex = new RegExp('\"', 'g'); - var submit_target = ( typeof(url_string) == 'object' ) ? ( toJSONString(url_string) ).replace(regex, '\'') : 'unescape(\'' + escape(url_string) + '\')'; - var onclick = 'paginator_submit(this, '+num_pages+', '+perpage+', '+additive+', '+submit_target+'); return false;'; - div.innerHTML = $lang.get('paginate_lbl_goto_page') + '
»×'; - - var body = document.getElementsByTagName('body')[0]; - domObjChangeOpac(0, div); - - body.appendChild(div); - - document.getElementById(vtmp).onkeypress = function(e) - { - if ( e.keyCode == 13 ) - this.nextSibling.nextSibling.onclick(); - }; - document.getElementById(vtmp).focus(); - - // fade the div - /* - if(!div.id) div.id = 'autofade_'+Math.floor(Math.random() * 100000); - var from = '#33FF33'; - Fat.fade_element(div.id,30,2000,from,Fat.get_bgcolor(div.id)); - */ - - fly_in_bottom(div, false, true); - - var divh = $dynano(div).Width(); - left_pos = left_pos - divh; - div.style.left = left_pos + 'px'; + load_component('flyin'); + + var height = $dynano(parentobj).Height(); + var width = $dynano(parentobj).Width(); + var left = $dynano(parentobj).Left(); + var top = $dynano(parentobj).Top(); + var left_pos = left + width ; + var top_pos = height + top; + var div = document.createElement('div'); + div.style.position = 'absolute'; + div.style.top = top_pos + 'px'; + div.className = 'question-box'; + div.style.margin = '1px 0 0 2px'; + var vtmp = 'input_' + Math.floor(Math.random() * 1000000); + var regex = new RegExp('\"', 'g'); + var submit_target = ( typeof(url_string) == 'object' ) ? ( toJSONString(url_string) ).replace(regex, '\'') : 'unescape(\'' + escape(url_string) + '\')'; + var onclick = 'paginator_submit(this, '+num_pages+', '+perpage+', '+additive+', '+submit_target+'); return false;'; + div.innerHTML = $lang.get('paginate_lbl_goto_page') + '
»×'; + + var body = document.getElementsByTagName('body')[0]; + domObjChangeOpac(0, div); + + body.appendChild(div); + + document.getElementById(vtmp).onkeypress = function(e) + { + if ( e.keyCode == 13 ) + this.nextSibling.nextSibling.onclick(); + }; + document.getElementById(vtmp).focus(); + + // fade the div + /* + if(!div.id) div.id = 'autofade_'+Math.floor(Math.random() * 100000); + var from = '#33FF33'; + Fat.fade_element(div.id,30,2000,from,Fat.get_bgcolor(div.id)); + */ + + fly_in_bottom(div, false, true); + + var divh = $dynano(div).Width(); + left_pos = left_pos - divh; + div.style.left = left_pos + 'px'; } window.paginator_submit = function(obj, max, perpage, additive, formatstring) { - var userinput = obj.previousSibling.previousSibling.value; - userinput = parseInt(userinput); - var offset = (( userinput - 1 ) * perpage) + additive; - if ( userinput > max || isNaN(userinput) || userinput < 1 ) - { - load_component(['messagebox', 'fadefilter', 'flyin']); - new MessageBox(MB_OK|MB_ICONSTOP, $lang.get('paginate_err_bad_page_title'), $lang.get('paginate_err_bad_page_body', { max: max })); - return false; - } - if ( typeof(formatstring) == 'object' ) - { - fly_out_top(obj.parentNode, false, true); - jspaginator_goto(formatstring.random_id, ( offset / perpage )); - } - else - { - var url = sprintf(formatstring, String(offset)); - fly_out_top(obj.parentNode, false, true); - window.location = url; - } + var userinput = obj.previousSibling.previousSibling.value; + userinput = parseInt(userinput); + var offset = (( userinput - 1 ) * perpage) + additive; + if ( userinput > max || isNaN(userinput) || userinput < 1 ) + { + load_component(['messagebox', 'fadefilter', 'flyin']); + new MessageBox(MB_OK|MB_ICONSTOP, $lang.get('paginate_err_bad_page_title'), $lang.get('paginate_err_bad_page_body', { max: max })); + return false; + } + if ( typeof(formatstring) == 'object' ) + { + fly_out_top(obj.parentNode, false, true); + jspaginator_goto(formatstring.random_id, ( offset / perpage )); + } + else + { + var url = sprintf(formatstring, String(offset)); + fly_out_top(obj.parentNode, false, true); + window.location = url; + } } // This code is in the public domain. Feel free to link back to http://jan.moesen.nu/ function sprintf() { - if (!arguments || arguments.length < 1 || !RegExp) - { - return; - } - var str = arguments[0]; - var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/; - var a = b = [], numSubstitutions = 0, numMatches = 0; - while (a = re.exec(str)) - { - var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4]; - var pPrecision = a[5], pType = a[6], rightPart = a[7]; - - //alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision); + if (!arguments || arguments.length < 1 || !RegExp) + { + return; + } + var str = arguments[0]; + var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/; + var a = b = [], numSubstitutions = 0, numMatches = 0; + while (a = re.exec(str)) + { + var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4]; + var pPrecision = a[5], pType = a[6], rightPart = a[7]; + + //alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision); - numMatches++; - if (pType == '%') - { - subst = '%'; - } - else - { - numSubstitutions++; - if (numSubstitutions >= arguments.length) - { - alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).'); - } - var param = arguments[numSubstitutions]; - var pad = ''; - if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1); - else if (pPad) pad = pPad; - var justifyRight = true; - if (pJustify && pJustify === "-") justifyRight = false; - var minLength = -1; - if (pMinLength) minLength = parseInt(pMinLength); - var precision = -1; - if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1)); - var subst = param; - if (pType == 'b') subst = parseInt(param).toString(2); - else if (pType == 'c') subst = String.fromCharCode(parseInt(param)); - else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0; - else if (pType == 'u') subst = Math.abs(param); - else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param); - else if (pType == 'o') subst = parseInt(param).toString(8); - else if (pType == 's') subst = param; - else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase(); - else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase(); - } - str = leftpart + subst + rightPart; - } - return str; + numMatches++; + if (pType == '%') + { + subst = '%'; + } + else + { + numSubstitutions++; + if (numSubstitutions >= arguments.length) + { + alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).'); + } + var param = arguments[numSubstitutions]; + var pad = ''; + if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1); + else if (pPad) pad = pPad; + var justifyRight = true; + if (pJustify && pJustify === "-") justifyRight = false; + var minLength = -1; + if (pMinLength) minLength = parseInt(pMinLength); + var precision = -1; + if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1)); + var subst = param; + if (pType == 'b') subst = parseInt(param).toString(2); + else if (pType == 'c') subst = String.fromCharCode(parseInt(param)); + else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0; + else if (pType == 'u') subst = Math.abs(param); + else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param); + else if (pType == 'o') subst = parseInt(param).toString(8); + else if (pType == 's') subst = param; + else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase(); + else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase(); + } + str = leftpart + subst + rightPart; + } + return str; }