var Util = new function(){

	this.log = function(msg){
		//console.log(msg);
	}

	this.calcNewDimensions = function(w, h, maxWidth, maxHeight){
		if(w<maxWidth && h<maxHeight)
			return [w, h];
		
		var scaleW=maxWidth/w;
		var scaleH=maxHeight/h;
		
		if(scaleW < scaleH)
			return [Math.round(w*scaleW), Math.round(h*scaleW)];
		else
			return [Math.round(w*scaleH), Math.round(h*scaleH)];
	}

	this.unixTimeToString = function(time){
		var date = new Date();
		date.setTime(time*1000);
		return date.getDate() + "/" + (date.getMonth()+1) + " - " + date.getFullYear();
	}

	this.getRandomColor = function(){
		return 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
	}
	
	this.addTooltip = function(selector, tooltip){
		$(selector).unbind("mouseenter.tooltip").unbind("mouseleave.tooltip");
		$(selector).bind("mouseenter.tooltip", function(){
			ViewController.showTooltip(tooltip);
		}).bind("mouseleave.tooltip", function(){
			ViewController.hideTooltip();
		});
	}
}

/**
 * Rounds a number
 */
function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places
  return Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
}

function UrlEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}


function UrlDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}

