/** * Function : dump() * Arguments: The data - array,hash(associative array),object * The level - OPTIONAL * Returns : The textual representation of the array. * This function was inspired by the print_r function of PHP. * This will accept some data as the argument and return a * text that will be a more readable version of the * array/hash/object that is given. * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php */ function dump_old(arr,level) { var dumped_text = ""; if(!level) level = 0; //The padding given at the beginning of the line. var level_padding = ""; for(var j=0;j \"" + value + "\"\n"; } } } else { //Stings/Chars/Numbers etc. dumped_text = "===>"+arr+"<===("+typeof(arr)+")"; } return dumped_text; } function dump(element, limit, depth) { limit = (limit == null) ? 1 : limit; depth = (depth == null) ? 0 : depth; var rep1 = new Array(5); var pad1 = rep1.join(" "); var rep = new Array(depth+1); var pad = rep.join(pad1); var props = new Array; for(property in element) { //Property domConfig isn't accessable if (property == 'domConfig') continue; var propstr = ''+ property + ''; propstr += ' (' + (typeof element[property]) +')'; if (typeof element[property] == 'number' || typeof element[property] == 'boolean') propstr += ' : ' + element[property] + ''; if (typeof element[property] == 'string' && element[property]) propstr += ':
' + htmlEscape(element[property]) + '
'; if ((typeof element[property] == 'object') && (depth < limit)) propstr += "\n" + pad + dump(element[property], limit, (depth + 1)); props.push(propstr); } if (props.length == 0) return ''; if (typeof dump.dumpid == 'undefined') dump.dumpid = 0; ++dump.dumpid; return (pad + '(hide members)
' + '
    ' + '
  1. ' + props.join("
  2. \n" + pad + pad1 + '
  3. ') + "
  4. \n" + pad + "
"); } function dump_window(element, limit) { winpop = window.open("", "","width=800,height=600,scrollbars,resizable"); winpop.document.write(dump(element, limit)); winpop.document.close(); } function htmlEscape (s) { return s.replace(/&(?!\w+([;\s]|$))/g, "&") .replace(//g, ">"); } function htmlEncode(s) { return htmlEscape(s); } function addDiv(id_name, div_name, into_div_name, flash, html, script) { var id = $('#'+id_name).val(); html = ''; if (script) { html += ''; } //$("#debug").append(htmlEncode(html)); $("#"+into_div_name).append(html); if (flash) { $('#'+div_name+'-'+id) //.addClass('ui-state-focus') .slideDown() //.removeClass('ui-state-focus', 500) ; } else { $('#'+div_name+'-'+id).show(); } id = id - 0 + 1; $('#'+id_name).val(id); } function removeElement(elem_id) { $('#'+elem_id).remove(); } function fmtCurrency(amount) { if (amount == null || isNaN(amount)) return '-'; // Get rid of any extraneous characters, determine // the sign, and round to the nearest cent. amount = amount.toString().replace(/\$|\,/g,''); var sign = (amount == (amount = Math.abs(amount))); amount = (amount+0.0000000001).toFixed(2); // Insert thousands separator while (amount != (amount = amount.replace(/(\d)(\d\d\d[.,])/, "$1,$2"))); // Return formatted amount return (sign?'$':'($') + amount + (sign?'':')'); } ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // // Datepicker helpers function datepicker(id) { $("#"+id).attr('autocomplete', 'off'); if ($("#"+id).datepicker != null) { $("#"+id) .datepicker({ constrainInput: true, numberOfMonths: [1, 1], showCurrentAtPos: 0, dateFormat: 'mm/dd/yy' }); } } function datepickerGet(id) { if (id == null) dt = new Date(); else { if ($("#"+id).datepicker != null && $("#"+id).datepicker('getDate') != null) dt = new Date($("#"+id).datepicker('getDate')); else if ($("#"+id).val()) dt = new Date($("#"+id).val()); else dt = null; } return dt; } function datepickerStr(id) { return dateStr(datepickerGet(id)); } function datepickerSet(id, dt_or_str, usetime) { if ($("#"+id).datepicker != null && $("#"+id).datepicker('getDate') != null) { // datepicker seems to squash the time portion, // so we have to pass in a copy of dt instead. $("#"+id).datepicker('setDate', new Date(dt_or_str)); if (usetime) $("#"+id).val($("#"+id).val() + ' ' + timeStr(dt_or_str)); } else { $("#"+id).val(dateStr(dt_or_str), usetime); } } function datepickerNow(id, usetime) { datepickerSet(id, new Date(), usetime == null ? true : usetime); } function dateStr(dt_or_str, usetime) { var dt = new Date(dt_or_str); return (((dt.getMonth()+1) < 10 ? '0' : '') + (dt.getMonth()+1) + '/' + (dt.getDate() < 10 ? '0' : '') + dt.getDate() + '/' + dt.getFullYear() + (usetime ? ' ' + timeStr(dt) : '')); } function timeStr(dt_or_str) { var dt = new Date(dt_or_str); return ((dt.getHours() < 10 ? '0' : '') + dt.getHours() + ':' + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes()); } function dateAdd(dt_or_str, a, b, m, d) { var dt = new Date(dt_or_str); if (m != null) { dt.setDate(1); dt.setMonth(dt.getMonth() + m); //$('#debug').append('set month ('+m+') ' + (dt.getMonth() + m) + '= ' + dt + '
'); } if (d != null) { dt.setDate(dt.getDate() + d); //$('#debug').append('set day ('+d+') ' + (dt.getDate() + d) + '= ' + dt + '
'); } if (a != null) { dt.setDate(a); //$('#debug').append('set date ('+a+') = ' + dt + '
'); } if (b != null) { dt.setDate(b); //$('#debug').append('set date ('+b+') = ' + dt + '
'); } return dt; } function dateYesterday(dt) { return dateAdd(dt,null,null,null,-1); } function dateTomorrow(dt) { return dateAdd(dt,null,null,null,1); } function dateBOM(dt) { return dateAdd(dt,1); } function dateNextBOM(dt) { return dateAdd(dt,1,null,1); } function dateEOM(dt) { return dateAdd(dt,32,0); } function dateNextEOM(dt) { return dateAdd(dt,32,0,1); } function datepickerBOM(fromid, id) { datepickerSet(id, dateBOM(datepickerGet(fromid))); } function datepickerEOM(fromid, id) { datepickerSet(id, dateEOM(datepickerGet(fromid))); } function datepickerNextBOM(fromid, id) { datepickerSet(id, dateNextBOM(datepickerGet(fromid))); } function datepickerNextEOM(fromid, id) { datepickerSet(id, dateNextEOM(datepickerGet(fromid))); } // REVISIT : 20090617 // I would rather use XML to pass from JS to PHP, but at the // moment things were working just fine with serialize, and // I'm not keen on redesigning it at the moment. So, here // is a serialize implementation I found on the web. function serialize( mixed_value, depth ) { // http://kevin.vanzonneveld.net // + original by: Arpad Ray (mailto:arpad@php.net) // + improved by: Dino // + bugfixed by: Andrej Pavlovic // + bugfixed by: Garagoth // + input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html) // + bugfixed by: Russell Walker // % note: We feel the main purpose of this function should be to ease the transport of data between php & js // % note: Aiming for PHP-compatibility, we have to translate objects to arrays // * example 1: serialize(['Kevin', 'van', 'Zonneveld']); // * returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}' // * example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}); // * returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}' // if (depth == null) // depth = ''; // if (depth == '') // $("#debug").html('

'); // $("#debug").append(depth+"serialize()
\n"); // if (depth.length > 80) { // $("#debug").append(depth+"OVERFLOW
\n"); // return 'ABORTED'; // } var _getType = function( inp ) { var type = typeof inp, match; var key; if (type == 'object' && !inp) { return 'null'; } if (type == "object") { if (!inp.constructor) { return 'object'; } var cons = inp.constructor.toString(); match = cons.match(/(\w+)\(/); if (match) { cons = match[1].toLowerCase(); } var types = ["boolean", "number", "string", "array"]; for (key in types) { if (cons == types[key]) { type = types[key]; break; } } } return type; }; var type = _getType(mixed_value); var val, ktype = ''; // $("#debug").append(depth+"  - type: "+type+"
\n"); switch (type) { case "function": val = ""; break; case "undefined": val = "N"; break; case "boolean": val = "b:" + (mixed_value ? "1" : "0"); break; case "number": val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value; break; case "string": val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\""; break; case "array": case "object": val = "a"; /* if (type == "object") { var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/); if (objname == undefined) { return; } objname[1] = serialize(objname[1]); val = "O" + objname[1].substring(1, objname[1].length - 1); } */ var count = 0; var vals = ""; var okey; var key; for (key in mixed_value) { ktype = _getType(mixed_value[key]); // $("#debug").append(depth+"    - key["+count+"] type: "+type+"
\n"); if (ktype == "function") { continue; } okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key); // $("#debug").append(depth+"    - okey: "+okey+"
\n"); // $("#debug").append(depth+"    - mixed[key]: "+mixed_value[key]+"
\n"); vals += serialize(okey, depth+'      ') + serialize(mixed_value[key], depth+'      '); count++; } val += ":" + count + ":{" + vals + "}"; break; } if (type != "object" && type != "array") { val += ";"; } // $("#debug").append(depth+"  - val: "+val+"
\n"); return val; }