/** * 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(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 var_dump(element, limit, depth) { depth = depth?depth:0; limit = limit?limit:1; returnString = '
    '; for(property in element) { //Property domConfig isn't accessable if (property != 'domConfig') { returnString += '
  1. '+ property + ' (' + (typeof element[property]) +')'; if (typeof element[property] == 'number' || typeof element[property] == 'boolean') returnString += ' : ' + element[property] + ''; if (typeof element[property] == 'string' && element[property]) returnString += ':
    ' + element[property].replace(//g, '&gt;') + '
    '; if ((typeof element[property] == 'object') && (depth < limit)) returnString += var_dump(element[property], limit, (depth + 1)); returnString += '
  2. '; } } returnString += '
'; if(depth == 0) { winpop = window.open("", "","width=800,height=600,scrollbars,resizable"); winpop.document.write('
'+returnString+ '
'); winpop.document.close(); } return returnString; } function htmlEncode(s) { //return s; return s.replace(/&(?!\w+([;\s]|$))/g, "&") .replace(//g, ">"); } 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) .css({'background-color' : 'yellow'}) .slideDown() //.animate({ backgroundColor: "yellow" }, 300) .animate({ backgroundColor: "white" }, 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,''); 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 datepickerNow(id, usetime) { now = new Date(); // datepicker seems to squash the time portion, // so we have to pass in a copy of now instead. $("#"+id).datepicker('setDate', new Date(now)); if (usetime == null) usetime = true; $("#"+id).val($("#"+id).val() + (usetime ? (' ' + (now.getHours() < 10 ? '0' : '') + now.getHours() + ':' + (now.getMinutes() < 10 ? '0' : '') + now.getMinutes()) : '')); } function datepickerSet(fromid, id, a, b) { if (fromid == null) dt = new Date(); else dt = new Date($("#"+fromid).datepicker('getDate')); if (a != null) dt.setDate(a); if (b != null) dt.setDate(b); $("#"+id).datepicker('setDate', dt); } function datepickerBOM(fromid, id) { datepickerSet(fromid, id, 1); } function datepickerEOM(fromid, id) { datepickerSet(fromid, id, 32, 0); } // 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; }