/*
	Various common helper functions, generally accessible
*/

Utils = Class.create();
Utils.prototype =
{
	initialize: function() { 
		this.timer;
	},

	SetCookie: function(name,value,days)
	{
		if (days)
		{
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));

			var expires = "; expires="+date.toGMTString();
		}

		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},

	GetCookie: function(name)
	{
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++)
		{
			var c = ca[i];

			while (c.charAt(0)==' ')
				c = c.substring(1,c.length);

			if (c.indexOf(nameEQ) == 0)
				return c.substring(nameEQ.length,c.length);
		}

		return null;
	},

	// Takes a filesize in bytes and returns formatted as kb, mb, gb, depending on size
	GetBestSize: function(bytes)
	{
		var unit = 'b';

		if(bytes > 1024)
		{
			bytes = bytes/1024;
			unit = 'kb';
		}

		if(bytes > 1024)
		{
			bytes = bytes/1024;
			unit = 'mb';
		}

		if(bytes > 1024)
		{
			bytes = bytes/1024;
			unit = 'gb';
		}

		if(unit == 'mb' || unit == 'gb')
			bytes = Math.round(bytes * 100)/100;
		else
			bytes = Math.round(bytes);

		return bytes + ' ' + unit;
	},

	IsArray: function(obj)
	{
		return obj.constructor.toString().indexOf("Array") >= 0;
	},
	
	showFlash: function()
	{
		$('flashMessage').visualEffect('appear');
		//this.timer=setTimeout('utils.hideFlash()',10000);
	},
	
	//hideFlash: function()
	//{
 	//	$('flashMessage').visualEffect('fade');
	//		clearTimeout(this.timer);
//
	//	return false;
	//},
	
	flashMessage: function(message)
	{
		if ($('flashMessage')!=null) 
			$('flashMessage').remove();
		
		if ($('ajaxErrorMessage')!=null) 
			$('ajaxErrorMessage').innerHTML = null;
		
		$('ajaxMessage').innerHTML = '<div id="profileUp"></div>';
    	$('ajaxMessage').innerHTML += '<div id="message" > <span class="flashMessage">' + message + '</span></div>';		
    	$('ajaxMessage').innerHTML +=  '<div id="profileBottom"></div>';
		$('ajaxMessage').visualEffect('appear');
	},
	
	errorMessage: function(message)
	{
		if ($('flashMessage')!=null) 
			$('flashMessage').remove();
		
		if ($('ajaxMessage')!=null)
			$('ajaxMessage').innerHTML = null;
		
		$('ajaxErrorMessage').innerHTML = '<div id="profileUp"></div>';
    	$('ajaxErrorMessage').innerHTML += '<div id="message" > <span class="errorMessage">' + message + '</span></div>';		
    	$('ajaxErrorMessage').innerHTML +=  '<div id="profileBottom"></div>';
   		$('ajaxErrorMessage').visualEffect('appear');
	},
	
	fieldErrorMessage: function(message,  fieldId)
	{
		//alert(fieldDiv);
		var fieldDiv = $(fieldId).parentNode;
		var errorDiv;
		
		if ($(fieldId+'Error') == null)
		{	
			errorDiv = document.createElement('div');
			errorDiv.id = fieldId + 'Error';
			errorDiv.className = 'formError';
			$(fieldDiv).appendChild(errorDiv);
		}	
		else 
			errorDiv = $(fieldId+'Error');
		
			
		errorDiv.innerHTML = message;
		
	},
	
	clearFieldErrorMessage: function(fieldId)
	{
		//alert(fieldDiv);
		var fieldDiv = $(fieldId).parentNode;
		
		if ($(fieldId+'Error') != null)
		{	
			fieldDiv.removeChild($(fieldId + 'Error'));
		}
	},
	
	windowPopUp : function(url) {
		window.open(url, 'v-know', 'width=690,height=500,menubar=no,status=no,location=no,toolbar=no,resizable=no,scrollbars=yes');
	},
	
	formatCurrency : function(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if (isNaN(num))
			num = "0";
			sign = (num == (num = Math.abs(num)));
			num = Math.floor(num*100+0.50000000001);
			cents = num%100;
			num = Math.floor(num/100).toString();
		if (cents<10)
			cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	}
}

var utils = new Utils();