var D = YAHOO.util.Dom;
var E = YAHOO.util.Event;
var cb = {
	loader 			: null,
	loaderParent 	: null,
	browser 		: {},
	get : function(id) {
		return YAHOO.util.Dom.get(id);
	},
	getParent : function (elem, parentTagName) {
		if(!elem)
			return;
		if(!elem.tagName)
			elem = elem.parentNode;
		if(!elem)
			return
		while(elem && elem.tagName.toLowerCase()!="body" && elem.tagName.toLowerCase()!="html")
		{
			if(!elem.tagName)
				elem = elem.parentNode;

			if(elem.tagName.toLowerCase()==parentTagName.toLowerCase())
				break;

			elem = elem.parentNode;
		}
		if(elem && (elem.tagName.toLowerCase()==parentTagName.toLowerCase()))
			return elem;
		return null;
	},
	getScrollTop : function () {
		return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
	},
	getScrollLeft : function () {
		return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft;
	},
	getWindowHeight : function () {
		return YAHOO.util.Dom.getViewportHeight();
	},
	getWindowWidth : function () {
		return YAHOO.util.Dom.getViewportWidth();
	},
	addFirst : function(el, dest){
		dest.insertBefore(el, dest.firstChild);
	},
	newID : function () {
		var id;
		do {
			id = "__id__" + Math.random().toString().substr(2, 10);
		}
		while ( this.get(id) );
		return id;
	},
	trace : function(text) {
		if (typeof(Debug) !== 'undefined' && Debug.writeln) {
			// VS script debugger output window.
			Debug.writeln(text);
		} else if (window.console && window.console.log) {
			// FF firebug and Safari console.
		    window.console.log(text);
		} else if (window.opera) {
			// Opera console.
		    window.opera.postError(text);
		} else if (window.debugService ) {
			// WebDevHelper console.
		    window.debugService.trace(text);
		}
	},
	htmlentities: function(str){
		return str.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/æ/g, '&aelig;').replace(/ø/g, '&oslash;').replace(/å/g, '&aring;');
	},
	unhtmlentities: function(str) {
		return str.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&aelig;/g, 'æ').replace(/&oslash;/g, 'ø').replace(/&aring;/g, 'å');
	},
	parseXMLString: function(str){
		if (window.ActiveXObject) {
			var doc=new ActiveXObject("Microsoft.XMLDOM");
			doc.async="false";
			doc.loadXML(text);
		} else {
			var parser=new DOMParser();
			var doc=parser.parseFromString(text,"text/xml");
		}
		return doc;
	},
	fade: function(el, fromVal, toVal, time, onComplete){
		var anim = new YAHOO.util.Anim(el, { opacity: { from: fromVal, to: toVal } }, time, YAHOO.util.Easing.easeOut);
		anim.animate();
		if(onComplete)
			anim.onComplete.subscribe(onComplete);
	},
	fadeAway: function(el, time, onComplete){
		var anim = new YAHOO.util.Anim(el, { opacity: { to: 0 } }, time, YAHOO.util.Easing.easeOut);
		anim.animate();
		if(onComplete)
			anim.onComplete.subscribe(onComplete);
	},
	fadeIn: function(el, time, onComplete){
		var anim = new YAHOO.util.Anim(el, { opacity: { to: 1 } }, time, YAHOO.util.Easing.easeOut);
		anim.animate();
		if(onComplete)
			anim.onComplete.subscribe(onComplete);
	},
	addLoader : function(elem) {
		this.loaderParent = elem;
		this.loaderParent.appendChild(cb.loader);
	},
	removeLoader : function() {
		if(this.loaderParent != null) {
			this.loaderParent.removeChild(cb.loader);
			this.loaderParent = null;
		}
	},
	createNotice : function(text) {
		var p = document.createElement('p');
		D.addClass(p, 'messagenotice');
		
		D.setStyle(p, 'max-width', '200px');		//Fjern når thomas har fikset lengde
		D.setStyle(p, 'margin', '12px auto');		//Fjern når thomas har fikset lengde
		
		p.appendChild(document.createTextNode(text));
		return p;
	},
	createWarning : function(text) {
		var p = document.createElement('p');
		D.addClass(p, 'messagewarning');
		
		D.setStyle(p, 'max-width', '200px');		//Fjern når thomas har fikset lengde
		D.setStyle(p, 'margin', '12px auto');		//Fjern når thomas har fikset lengde
	
		p.appendChild(document.createTextNode(text));
		return p;
	},
	keyIsTab : function(e) {
		var key  = (window.event) ? event.keyCode : e.keyCode;
		var Tab = (window.event) ? 9 : e.DOM_VK_TAB;
		if(key == Tab)
			return true;
		return false;
	},
	keyIsEsc : function(e) {
		var key  = (window.event) ? event.keyCode : e.keyCode;
		var Esc = (window.event) ? 27 : e.DOM_VK_ESCAPE;
		if(key == Esc)
			return true;
		return false;
	}
};

cb.browser.ua	= navigator.userAgent.toLowerCase();
cb.browser.isOpera		= (cb.browser.ua.indexOf('opera') > -1 && window.opera);
cb.browser.isSafari		= (cb.browser.ua.indexOf('safari') > -1);
cb.browser.isGecko		= (!cb.browser.isOpera && !cb.browser.isSafari && cb.browser.ua.indexOf('gecko') > -1);
cb.browser.isIE			= (!cb.browser.isOpera && cb.browser.ua.indexOf('msie') > -1);
cb.browser.isIE6		= (cb.browser.isIE && typeof XMLHttpRequest=="undefined");
cb.browser.isOpera7		= (cb.browser.isOpera && navigator.appVersion.indexOf("7") > -1);
cb.loader = function() {
	var img = document.createElement('img');
	img.src = 'img/ajaxloading.gif';
	D.setStyle(img, 'height', '25px');
	D.setStyle(img, 'width', '25px');
	D.setStyle(img, 'display', 'inline');
	return img;
}();


