/* Released: 2010-06-01 15:59:33 */

function formatCurrency(val){
	var cod = new Array();
	var sym = new Array();
	cod[0] = 'ALL';
	sym[0] = '&#76;&#101;&#107;';
	cod[1] = 'USD';
	sym[1] = '&#36;';
	cod[2] = 'AFN';
	sym[2] = '&#1547;';
	cod[3] = 'ARS';
	sym[3] = '&#36;';
	cod[4] = 'AWG';
	sym[4] = '&#402;';
	cod[5] = 'AUD';
	sym[5] = '&#36;';
	cod[6] = 'AZN';
	sym[6] = '&#1084;&#1072;&#1085;';
	cod[7] = 'BSD';
	sym[7] = '&#36;';
	cod[8] = 'BBD';
	sym[8] = '&#36;';
	cod[9] = 'BYR';
	sym[9] = '&#112;&#46;';
	cod[10] = 'BEF';
	sym[10] = '&#8355;';
	cod[11] = 'BZD';
	sym[11] = '&#66;&#90;&#36;';
	cod[12] = 'BMD';
	sym[12] = '&#36;';
	cod[13] = 'BOB';
	sym[13] = '&#36;&#98;';
	cod[14] = 'BAM';
	sym[14] = '&#75;&#77;';
	cod[15] = 'BWP';
	sym[15] = '&#80;';
	cod[16] = 'BGN';
	sym[16] = '&#1083;&#1074;';
	cod[17] = 'BRL';
	sym[17] = '&#82;&#36;';
	cod[18] = 'BRC';
	sym[18] = '&#8354;';
	cod[19] = 'GBP';
	sym[19] = '&#163;';
	cod[20] = 'BND';
	sym[20] = '&#36;';
	cod[21] = 'KHR';
	sym[21] = '&#6107;';
	cod[22] = 'CAD';
	sym[22] = '&#36;';
	cod[23] = 'KYD';
	sym[23] = '&#36;';
	cod[24] = 'CLP';
	sym[24] = '&#36;';
	cod[25] = 'CNY';
	sym[25] = '&#20803;';
	cod[26] = 'COP';
	sym[26] = '&#36;';
	cod[27] = 'CRC';
	sym[27] = '&#8353;';
	cod[28] = 'HRK';
	sym[28] = '&#107;&#110;';
	cod[29] = 'CUP';
	sym[29] = '&#8369;';
	cod[30] = 'CYP';
	sym[30] = '&#163;';
	cod[31] = 'CZK';
	sym[31] = '&#75;&#269;';
	cod[32] = 'DKK';
	sym[32] = '&#107;&#114;';
	cod[33] = 'DOP';
	sym[33] = '&#82;&#68;&#36;';
	cod[34] = 'XCD';
	sym[34] = '&#36;';
	cod[35] = 'EGP';
	sym[35] = '&#163;';
	cod[36] = 'SVC';
	sym[36] = '&#36;';
	cod[37] = 'GBP';
	sym[37] = '&#163;';
	cod[38] = 'EEK';
	sym[38] = '&#107;&#114;';
	cod[39] = 'EUR';
	sym[39] = '&#8364;';
	cod[40] = 'XEU';
	sym[40] = '&#8352;';
	cod[41] = 'FKP';
	sym[41] = '&#163;';
	cod[42] = 'FJD';
	sym[42] = '&#36;';
	cod[43] = 'FRF';
	sym[43] = '&#8355;';
	cod[44] = 'GHC';
	sym[44] = '&#162;';
	cod[45] = 'GIP';
	sym[45] = '&#163;';
	cod[46] = 'GRD';
	sym[46] = '&#8367;';
	cod[47] = 'GTQ';
	sym[47] = '&#81;';
	cod[48] = 'GGP';
	sym[48] = '&#163;';
	cod[49] = 'GYD';
	sym[49] = '&#36;';
	cod[50] = 'NLG';
	sym[50] = '&#402;';
	cod[51] = 'HNL';
	sym[51] = '&#76;';
	cod[52] = 'HKD';
	sym[52] = '&#72;&#75;&#36;';
	cod[53] = 'HKD';
	sym[53] = '&#22291;';
	cod[54] = 'HKD';
	sym[54] = '&#22291;';
	cod[55] = 'HKD';
	sym[55] = '&#20803;';
	cod[56] = 'HUF';
	sym[56] = '&#70;&#116;';
	cod[57] = 'ISK';
	sym[57] = '&#107;&#114;';
	cod[58] = 'INR';
	sym[58] = '&#82;&#115;';
	cod[59] = 'IDR';
	sym[59] = '&#82;&#112;';
	cod[60] = 'IRR';
	sym[60] = '&#65020;';
	cod[61] = 'IEP';
	sym[61] = '&#163;';
	cod[62] = 'IMP';
	sym[62] = '&#163;';
	cod[63] = 'ILS';
	sym[63] = '&#8362;';
	cod[64] = 'ITL';
	sym[64] = '&#8356;';
	cod[65] = 'JMD';
	sym[65] = '&#74;&#36;';
	cod[66] = 'JPY';
	sym[66] = '&#165;';
	cod[67] = 'JEP ';
	sym[67] = '&#163;';
	cod[68] = 'KZT ';
	sym[68] = '&#1083;&#1074;';
	cod[69] = 'KPW ';
	sym[69] = '&#8361;';
	cod[70] = 'KRW ';
	sym[70] = '&#8361;';
	cod[71] = 'KGS ';
	sym[71] = '&#1083;&#1074;';
	cod[72] = 'LAK ';
	sym[72] = '&#8365;';
	cod[73] = 'LVL ';
	sym[73] = '&#76;&#115;';
	cod[74] = 'LBP ';
	sym[74] = '&#163;';
	cod[75] = 'LRD ';
	sym[75] = '&#36;';
	cod[76] = 'CHF ';
	sym[76] = '&#67;&#72;&#70;';
	cod[77] = 'LTL ';
	sym[77] = '&#76;&#116;';
	cod[78] = 'LUF ';
	sym[78] = '&#8355;';
	cod[79] = 'MKD ';
	sym[79] = '&#1076;&#1077;&#1085;';
	cod[80] = 'MYR ';
	sym[80] = '&#82;&#77;';
	cod[81] = 'MTL ';
	sym[81] = '&#76;&#109;';
	cod[82] = 'MUR ';
	sym[82] = '&#8360;';
	cod[83] = 'MXN ';
	sym[83] = '&#36;';
	cod[84] = 'MNT ';
	sym[84] = '&#8366;';
	cod[85] = 'MZN ';
	sym[85] = '&#77;&#84;';
	cod[86] = 'NAD ';
	sym[86] = '&#36;';
	cod[87] = 'NPR ';
	sym[87] = '&#8360;';
	cod[88] = 'ANG ';
	sym[88] = '&#402;';
	cod[89] = 'NLG ';
	sym[89] = '&#402;';
	cod[90] = 'NZD ';
	sym[90] = '&#36;';
	cod[91] = 'NIO ';
	sym[91] = '&#67;&#36;';
	cod[92] = 'NGN ';
	sym[92] = '&#8358;';
	cod[93] = 'KPW ';
	sym[93] = '&#8361;';
	cod[94] = 'NOK ';
	sym[94] = '&#107;&#114;';
	cod[95] = 'OMR ';
	sym[95] = '&#65020;';
	cod[96] = 'PKR ';
	sym[96] = '&#8360;';
	cod[97] = 'PAB ';
	sym[97] = '&#66;&#47;&#46;';
	cod[98] = 'PYG ';
	sym[98] = '&#71;&#115;';
	cod[99] = 'PEN ';
	sym[99] = '&#83;&#47;&#46;';
	cod[100] = 'PHP ';
	sym[100] = '&#80;&#104;&#112;';
	cod[101] = 'PLN ';
	sym[101] = '&#122;&#322;';
	cod[102] = 'QAR ';
	sym[102] = '&#65020;';
	cod[103] = 'RON ';
	sym[103] = '&#108;&#101;&#105;';
	cod[104] = 'RUB ';
	sym[104] = '&#1088;&#1091;&#1073;';
	cod[105] = 'SHP ';
	sym[105] = '&#163;';
	cod[106] = 'SAR ';
	sym[106] = '&#65020;';
	cod[107] = 'RSD ';
	sym[107] = '&#1044;&#1080;&#1085;&#46;';
	cod[108] = 'SCR ';
	sym[108] = '&#8360;';
	cod[109] = 'SGD ';
	sym[109] = '&#36;';
	cod[110] = 'SKK ';
	sym[110] = '&#83;&#73;&#84;';
	cod[111] = 'EUR ';
	sym[111] = '&#8364;';
	cod[112] = 'SBD ';
	sym[112] = '&#36;';
	cod[113] = 'SOS ';
	sym[113] = '&#83;';
	cod[114] = 'ZAR ';
	sym[114] = '&#82;';
	cod[115] = 'KRW ';
	sym[115] = '&#8361;';
	cod[116] = 'ESP ';
	sym[116] = '&#8359;';
	cod[117] = 'LKR ';
	sym[117] = '&#8360;';
	cod[118] = 'SEK ';
	sym[118] = '&#107;&#114;';
	cod[119] = 'CHF ';
	sym[119] = '&#67;&#72;&#70;';
	cod[120] = 'SRD ';
	sym[120] = '&#36;';
	cod[121] = 'SYP ';
	sym[121] = '&#163;';
	cod[122] = 'TWD ';
	sym[122] = '&#78;&#84;&#36;';
	cod[123] = 'THB ';
	sym[123] = '&#3647;';
	cod[124] = 'TTD ';
	sym[124] = '&#84;&#84;&#36;';
	cod[125] = 'TRY ';
	sym[125] = '&#89;&#84;&#76;';
	cod[126] = 'TRL ';
	sym[126] = '&#8356;';
	cod[127] = 'TVD ';
	sym[127] = '&#36;';
	cod[128] = 'UAH ';
	sym[128] = '&#8372;';
	cod[129] = 'GBP ';
	sym[129] = '&#163;';
	cod[130] = 'USD ';
	sym[130] = '&#36;';
	cod[131] = 'UYU ';
	sym[131] = '&#36;&#85;';
	cod[132] = 'UZS ';
	sym[132] = '&#1083;&#1074;';
	cod[133] = 'VAL ';
	sym[133] = '&#8356;';
	cod[134] = 'VEB ';
	sym[134] = '&#66;&#115;';
	cod[135] = 'VND ';
	sym[135] = '&#8363;';
	cod[136] = 'YER ';
	sym[136] = '&#65020;';
	cod[137] = 'ZWD ';
	sym[137] = '&#90;&#3;';
	var ret = $gJQ.inArray(val, cod);
	
	if (ret == -1) 
		return val;
	
	return sym[ret];
}

function logTo(line, val) {
	try {
		console.log(line, val);
	}catch(e) {}
}

function jq(myid)
  { return myid.replace(/:/g,"\\:").replace(/\./g,"\\.");}
  
function checkEmailAddressSyntax(anEmailAddress)
{
    var regExp = /^[A-Za-z0-9._-]+[@][a-zA-Z0-9._-]+[.][A-Za-z]{2,}$/;
    return regExp.test(anEmailAddress)
}

/**
 * @class Poller
 */
function Poller(settings) {
	this.settings = $gJQ.extend(this.settings, settings);
}

Poller.prototype = {
	settings : {
		pollInterval : 250,
		pollTimeout  : 15000,
		pollCondition : function(){return false},
		onSuccess : function(){},
		onTimeout : function(){},
		debug : false
	},
	
	_duration : 0,
	_timeoutId : null,
	
	poll : function(){
		var me = this;
		var pollResult = me.settings.pollCondition();
		me.logTo("Poller: polling...");
		if (pollResult == true) {
			me.logTo("Poller: condition found");
			clearTimeout(me._timeoutId);
			me.settings.onSuccess();
		}else {
			me.logTo("Poller: condition not found");
			me._timeoutId = setTimeout(function(){me.poll()}, me.settings.pollInterval);
			me._duration = me._duration + me.settings.pollInterval;
			
			/* stop after x miliseconds */
			if (me._duration >= me.settings.pollTimeout) {
				me.logTo("Poller: Timed out, stopping...");
				clearTimeout(me._timeoutId);
				me.settings.onTimeout();
			}
		}
	},
	
	logTo : function(txt){
		if(this.settings.debug == false) {return};
		logTo(txt, this);
	}
};

function _getLocaleInfo(){
	var winpath = window.location.pathname.substring(1);  //remove the first slash
	return winpath.substring(0, winpath.indexOf('/'));
}

function storeJsonStructure(fullyQualifiedPackageName, jsonStructure) {
	var packageNames = fullyQualifiedPackageName.split('.');
	var structureName = packageNames.pop();
	var packageInstance = window;
	for(var i = 0, l = packageNames.length; i < l; i++) {
		var packageName = packageNames[i];
		if(packageInstance[packageName] === undefined) {
			packageInstance[packageName] = {};
		}
		packageInstance = packageInstance[packageName];
	}
	packageInstance[structureName] = jsonStructure;
};
