// Trim the whitespace from a string
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}


// JavaScript Micro-Templating
// Credits to John Resig.
// http://ejohn.org/blog/javascript-micro-templating/
(function(){
	  var cache = {};
	 
	  this.tmpl = function tmpl(str, data){
	    // Figure out if we're getting a template, or if we need to
	    // load the template - and be sure to cache the result.
	    var fn = !/\W/.test(str) ?
	      cache[str] = cache[str] ||
	        tmpl(document.getElementById(str).innerHTML) :
	     
	      // Generate a reusable function that will serve as a template
	      // generator (and which will be cached).
	      new Function("obj",
	        "var p=[],print=function(){p.push.apply(p,arguments);};" +
	       
	        // Introduce the data as local variables using with(){}
	        "with(obj){p.push('" +
	       
	        // Convert the template into pure JavaScript
	        str
	          .replace(/[\r\t\n]/g, " ")
	          .split("<%").join("\t")
	          .replace(/((^|%>)[^\t]*)'/g, "$1\r")
	          .replace(/\t=(.*?)%>/g, "',$1,'")
	          .split("\t").join("');")
	          .split("%>").join("p.push('")
	          .split("\r").join("\\'")
	      + "');}return p.join('');");
	   
	    // Provide some basic currying to the user
	    return data ? fn( data ) : fn;
	  };
	}
)(); 

var thoora = {
		version: null,
		baseurl: null
}

var helpers = {
	/** 
     * Given a number, insert a comma for proper format.
     * credits to: http://www.mredkj.com
     */
	numberFormat: function(nStr) {
		nStr += '';
		var x = nStr.split('.');
		var x1 = x[0];
		var x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		}
		return x1 + x2;
	},

	version_image: function(nStr) {
		if(nStr.indexOf('.') < 0) {
			return nStr;
		}
		
		var last_period = nStr.lastIndexOf('.');
		
		var part1 = nStr.substr(0, last_period);
		var part2 = nStr.substr(last_period, nStr.length);
		
		return part1 + '.' + thoora.version + part2;
	},
	
	load_image: function(image) {
		return thoora.baseurl + '/www/inc/images/' + this.version_image(image);
	}
}

