// perk.utils
if (window.perk == null) perk = new Object();
if (perk.utils == null) perk.utils = new Object();
if (perk.utils.http == null)
{
	perk.utils.http = function(url, method, vars, unique)
	{
		if (unique == true)
		{
			if (url.indexOf('?') == -1) url += '?uuid=' + perk.utils.genUUID();
			else url += '&uuid=' + perk.utils.genUUID();
		}
		
		
		if (method == null) method = "GET";
		var retobj = {onreturn:function(text){}};
		var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
		
		request.open(method, url, true);
		
		if (method == "POST") request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		request.onreadystatechange = function()
		{
			if (request.readyState == 4 && request.status == 200) 
			{
				if (request.responseText)
				{
					retobj.onreturn(request.responseText);
				}
				else
				{
					retobj.onreturn("");
				}
			}
			else if (request.readyState == 4 && request.status != 200) 
			{
				retobj.onreturn(null);
			}
		}
		setTimeout(function(){ request.send(vars); }, 0);
		return retobj;
	}
	perk.utils.httpGet = function(url, unique) { return perk.utils.http(url, "GET", null, unique); }
	perk.utils.httpPost = function(url, vars, unique) { return perk.utils.http(url, "POST", vars, unique); }
	perk.utils.genUUID = function()
	{
		var uuid = "";
		for (;uuid.length<32;)
		{
			var hex = "00" + (Math.floor(Math.random() * 128) + Math.floor(new Date().valueOf()) % 16).toString(16);
			hex = hex.substr(hex.length - 2, 2);
			uuid += hex;
		}
		uuid = uuid.substr(0, 8) + "-" + uuid.substr(8, 4) + "-" + uuid.substr(12, 4) + "-" + uuid.substr(16, 4) + "-" + uuid.substr(20);
		return uuid.toUpperCase();
	}
	
	perk.utils.loadScript = function(url)
	{
		var retobj = {onreturn:function(scriptText){}};
		perk.utils.httpGet(url).onreturn = function(scriptText)
		{
			var retval = window.eval(scriptText);
			retobj.onreturn(retval);
		}
		return retobj;
	}
	
	perk.utils.JSON = function(url, name, obj)
	{
		var retobj = {onreturn:function(scriptText){}};
		perk.utils.httpGet(url).onreturn = function(scriptText)
		{
			var retval = window.eval("(" + scriptText + ")");
			if (name != null)
			{
				if (obj == null) obj = window;
				obj[name] = retval;
				
			}
			retobj.onreturn(retval);
		}
		return retobj;
	}
	
	
	perk.utils.addEvent = function(element, type, handler)
	{
		if (element.addEventListener)
		{
			element.addEventListener(type, handler, false);
		}
		else
		{
			element.attachEvent('on' + type, handler);
		}
	}
	
	perk.utils.removeEvent = function(element, type, handler)
	{
		if (element.removeEventListener)
		{
			element.removeEventListener(type, handler, false);
		}
		else
		{
			element.detachEvent('on' + type, handler);
		}
	}
	
	perk.utils.toCurrency = function(num)
	{
		var res = "";
		var str = "";
		
		if (num.toString().charAt(0) == '$') num = num.toString().substring(1);
		num = parseFloat(num.toString()).toString();
		var dot = num.indexOf('.');
		if (dot == -1) 
		{
			str = '$' + num + '.00';
		}
		else
		{
			if (dot == 0) 
			{
				num = '0' + num;
				dot = 1;
			}
			str = '$' + (num + '00').substring(0, dot + 3);
		}
		
		var int1 = str.split('$')[1].split('.')[0];
		for (var i=int1.length-1;i>=0;i-=3)
		{
			for (var j=i;j>i-3;j--)
			{
				res = int1.charAt(j) + res;
			}
			res = ',' + res;
		}
		if (res != '') res = res.substring(1);
		str = '$' + res + '.' + str.split('$')[1].split('.')[1]
		return str;
	}
	
	
	
	perk.utils.setCookie = function(name, value, days) 
	{
		var cookieline = escape(name) + "=" + escape(value) + ";";
		var expires = "";
		if (days != null)
		{
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			cookieline += "expires=" + date.toGMTString() + ";";
		}
		cookieline += "path=/;";
		document.cookie = cookieline;
	}

	perk.utils.getCookie = function(name) 
	{
		name = escape(name);
		var parts = document.cookie.split(';');
		for(var i=0;i<parts.length;i++) 
		{
			var pair = parts[i].split('=');
			if (pair.length == 2)
			{
				if (pair[0].trim() == name)
				{
					return unescape(pair[1]);
				}
			}			
		}
		return null;
	}

	perk.utils.removeCookie = function(name)
	{
		createCookie(name, "", -1);
	}
	
	
	/*  strreplace */
	String.prototype.strreplace = function(str1, str2)
	{
		return this.split(str1).join(str2);
	}
	String.prototype.trim = function() 
	{
		return this.replace(/^\s+|\s+$/g,"");
	}
	String.prototype.ltrim = function() 
	{
		return this.replace(/^\s+/,"");
	}
	String.prototype.rtrim = function() 
	{
		return this.replace(/\s+$/,"");
	}
	
}
