var utils = {
	 /**
	 * finds a radio button set and detemines which one is currently
	 * checked
	 * 
	 * @param {} name of radioGroup
	 * @return {} value of checked radio button
	 */
	radioValue:function(radioGroup, getElement) {
		var bind = { 'element':false, 'value':false }		
		var radios = $$('input[name='+radioGroup+']').each(function(el) {
			if(el.checked) {
				this.element = el;
				this.value = Element.value;
				return;
			}
		},bind);
		return typeof getElement != "undefined" ? bind.element : bind.value;
	},
	
	isEmail:function (email) {
	  var usr    = "([a-zA-ZäöüÄÖÜ0-9][a-zA-ZäöüÄÖÜ0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	  var domain = "([a-zA-ZäöüÄÖÜ0-9][a-zA-ZäöüÄÖÜ0-9._-]*\\.)*[a-zA-ZäöüÄÖÜ0-9.][a-zA-ZäöüÄÖÜ0-9._-]*\\.[a-zA-Z]{2,5}";
	  var regex  = "^" + usr + "\@" + domain + "$";
	  var rgx    = new RegExp(regex);
	  return rgx.exec(email) ? true : false;
	},

	toNumber:function(str) {
		return Number(str.toString().split(',').join('.'));
	},
	
	/**
	 * checks if the keyCode is either an integer or 8 or 9
	 * 
	 * @param {} keyCode
	 * @param {} key
	 * @return {}
	 */
	checkKey:function (keyCode, key){
		// allowed keys are backspace and tab
		if ('8,9,'.indexOf(keyCode+",") != -1) return { cancelKey: false }
	  	return { cancelKey: "0123456789".indexOf(key) == -1 };
	},

	
	/**
	 *  taken from Cyanide_7 
	 *  this function formats a number to a dollar currency string
	 *  
	 */
	formatCurrency:function(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num)) num = "0";
		
		var sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		var 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);
	},
	
	/**
	 * Finds and returns the x,y scroll Postition of the window, crossbrowser compliant
	 * 
	 * @return {x,y} x and y postition in pixel
	 * @example:<code>var xpos = getScrollXY().x;<br>var scroll = getScrollXY(); alert(scroll.y); // alerts y scroll position in pixel </code>
	 */
	getScrollXY:function() {
	  var scrOfX = 0, scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' ) {
	    //Netscape compliant
	    scrOfY = window.pageYOffset;
	    scrOfX = window.pageXOffset;
	  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrOfY = document.body.scrollTop;
	    scrOfX = document.body.scrollLeft;
	  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	    //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	    scrOfX = document.documentElement.scrollLeft;
	  }
	  return {'x':scrOfX, 'y':scrOfY};
	}
}

