var opera = opera || false;function _echo( p_msg, p_dum){	if (p_dum != undefined)	{		var lm = arguments[0];		for (var i = 1 ; i < arguments.length; ++ i)		{			lm += ' / ' + arguments[i];		}		p_msg = lm;	}	if (typeof console == 'object' && typeof console.log == 'function')	{		console.log( p_msg);	}	else if (typeof opera == 'object' && typeof opera.postError == 'function')	{		opera.postError( p_msg);	}	else if(navigator.userAgent.indexOf("Trident/5")>-1)	{		console.log( p_msg);	}	else	{		//alert( p_msg);	}}function ReadAnswer(p_ans){	_echo( 'Read jax answer : ' + p_ans.responseText);}function var_dump( arr, level){	var dumped_text = "";	if ( ! level)	{		level = 0;	}		var level_padding = "";	for (var j = 0 ; j < level + 1 ; j ++)	{		level_padding += "    ";	}		if (typeof (arr) == 'object')	{		for (var item in arr)		{			var value = arr[item];						if (typeof (value) == 'object')			{				dumped_text += level_padding + "'" + item + "' ...\n";			}			else			{				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";			}		}	}	else	{		dumped_text = "===>" + arr + "<===(" + typeof( arr) + ")";	}	return dumped_text;}function printStackTrace() {  var callstack = [];  var isCallstackPopulated = false;  try {    i.dont.exist+=0; //doesn't exist- that's the point  } catch(e) {    if (e.stack) { //Firefox      var lines = e.stack.split('\n');      for (var i=0, len=lines.length; i<len; i++) {        if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {          callstack.push(lines[i]);        }      }      //Remove call to printStackTrace()      callstack.shift();      isCallstackPopulated = true;    }    else if (window.opera && e.message) { //Opera      var lines = e.message.split('\n');      for (var i=0, len=lines.length; i<len; i++) {        if (lines[i].match(/^\s*[A-Za-z0-9\-_\$]+\(/)) {          var entry = lines[i];          //Append next line also since it has the file info          if (lines[i+1]) {            entry += ' at ' + lines[i+1];            i++;          }          callstack.push(entry);        }      }      //Remove call to printStackTrace()      callstack.shift();      isCallstackPopulated = true;    }  }  if (!isCallstackPopulated) { //IE and Safari    var currentFunction = arguments.callee.caller;    while (currentFunction) {      var fn = currentFunction.toString();      var fname = fn.substring(fn.indexOf("function") + 8, fn.indexOf('')) || 'anonymous';      callstack.push(fname);      currentFunction = currentFunction.caller;    }  }  output(callstack);} function output(arr) {  //Optput however you want  alert(arr.join('\n\n'));}var Timer = Class.create({	initialize: function(){		var d = new Date();		this.time = d.getTime() + d.getMilliseconds() / 1000;	},	Time: function(){		var d = new Date();		var t = d.getTime() + d.getMilliseconds() / 1000;		var d = t - this.time;		this.time = t;		return d / 1000.0;	}});
