kpnvandaag = {};

kpnvandaag.util = {};

kpnvandaag.namespaceURI = 'http://www.kpn.com/2008/vandaag';

kpnvandaag.util.initialize = function(oContext) {

	var aChildren = oContext.getProperty('childNodes');

	// Find all controllers and make them available on the base object
	for (var i = 0, iMax = aChildren.length; i < iMax; i++) {
		var oController = aChildren[i];
		kpnvandaag[oController.getProperty('localName')] = oController;
	}

	if(kpnvandaag.OmnitureController) kpnvandaag.OmnitureController.initialize();
	bb.document.getElementById('SPIManager').initialize();

	if (bb.browser.ie && bb.browser.version == 6)
	kpnvandaag.IE6Notifier(oContext);
};

kpnvandaag.IE6Notifier = function(oContext) {
//	bb.command.load(bb.uri.resolveUri(this.getAttribute('src'), oContext.getProperty('baseURI')), 'GET', null, null, null, null, function(oResponse) {
	bb.command.load(bb.uri.resolveUri('../../static/kpnvandaag/application/IE6Notifier.xml', oContext.getProperty('baseURI')), 'GET', null, null, null, null, function(oResponse) {
//		oThis.cookieName = bb.evaluate('//cookiename/string()', oResponse.responseXML);
		if (!bb.cookie.get('kpnvandaag_ie6_warning')) {
			var sHref = bb.evaluate('//link/href/string()', oResponse.responseXML);
			var sTitle = bb.evaluate('//link/title/string()', oResponse.responseXML);
//			with (bb.selector.query(oThis.viewNode, '.link')) {
			with (bb.selector.query(document.getElementById('ie6_warning'), '.link')) {
				href = sHref;
				innerHTML = sTitle;
			}
			document.getElementById('ie6_warning').style.display = 'block';
		}
	});
};





kpnvandaag.util.storeUserSession = function() {
	var sData = JSONRequest.serialize(bb.dashboard.instance.session);
	if(bb.dashboard.instance.storage == 'cookie') {
		bb.cookie.set('db-session', sData);
	} else {
		if (bb.dashboard.instance.uriPOST) {
			var oXHR = new XMLHttpRequest();
			oXHR.open('POST', bb.dashboard.instance.uriPOST, false);
			oXHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			oXHR.send('session=' + sData);
		}
	}
};

window.onbeforeunload = kpnvandaag.util.storeUserSession;

kpnvandaag.util.transformData = function(xmlSource, stylesheet, target, xsltParameters, bSafeContent) {

	var oHTML;
	var oTarget = target;
	var oXsltParameters = xsltParameters;

	var oProcessor = new XSLTProcessor();
	var oStylesheet = stylesheet;

	oProcessor.importStylesheet(oStylesheet);

	if(oXsltParameters) {
		for(var i in oXsltParameters) {
			oProcessor.setParameter('', i, oXsltParameters[i]);
		}
	}

	var oTransformedData = oProcessor.transformToDocument(xmlSource);

	if(oTarget === null) {
		oHTML = oTransformedData.documentElement;
		if(!bSafeContent) {
			return bb.xml.serialize(oHTML).replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
		} else {
			return bb.xml.serialize(oHTML);
		}
	} else {
		oHTML = oTransformedData.documentElement;
		if(!bSafeContent) {
			var sResult = bb.xml.serialize(oHTML).replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
			oHTML = bb.html.createElementFromString(sResult);
		}
		if ( bb.browser.webkit ) {
			var oFrames = oHTML.getElementsByTagName('iframe');
			for (var c = 0; c < oFrames.length; c++) {
				if (oFrames[c].getAttribute('src')) {
					var oFrame = oFrames[c];
					setTimeout(function(){
						oFrame.setAttribute('src', oFrame.getAttribute('src') );
					}, 10);
				}
			}
		}
		bb.command.create(oHTML, oTarget, 'replaceChildren');
	}
};

kpnvandaag.util.setGadgetLoaded = function(oGadget) {
	var oElement = bb.dashboard.gadget.getBody(oGadget);
	bb.html.addClass(oElement, 'db-gadget-loaded');
};

kpnvandaag.util.setGadgetUnloaded = function(oGadget) {
	var oElement = bb.dashboard.gadget.getBody(oGadget);
	bb.html.removeClass(oElement, 'db-gadget-loaded');
};

kpnvandaag.util.loadGadgetContent = function (oGadget, sXMLuri, sXSLuri) {

	kpnvandaag.util.setGadgetTitle(oGadget);

	if(oGadget.xslData) {
		oGadget.xslData = null;
	}

	bb.dashboard.proxy.requireOnce(bb.uri.resolveUri(sXSLuri, oGadget.originURL), function (oRequest) {
			// Always
			oGadget.xslData = oRequest.responseXML;
			bb.dashboard.proxy.load('GET', bb.uri.resolveUri(sXMLuri, oGadget.originURL), null, function (oRequest, oElm) {
					//Always
					oGadget.xmlData = oRequest.responseXML;
					oGadget.xmlCache = sXMLuri;
					kpnvandaag.util.refreshGadgetContent(oGadget);
				}
			);
		}
	);
};

kpnvandaag.util.refreshGadgetContent = function(oGadget) {
	bb.command.transform(oGadget.xmlData, oGadget.xslData, null, bb.dashboard.query('#'+oGadget.identifier+'content')[0], 'replaceChildren');
	kpnvandaag.util.setGadgetLoaded(oGadget);
};

kpnvandaag.util.fnNsKPNResolver = function(sPrefix) {
	var sNamespace;
	switch (sPrefix) {
		case 'kpncat':
			sNamespace = 'http://www.kpn.com/2008/vandaag/catalog';
			break;
		default:
			sNamespace = 'http://www.w3.org/1999/xhtml';
			break;
	}
	return sNamespace;
};

kpnvandaag.util.setGadgetTitle = function(oGadget) {
	var sTitle = oGadget.preferenceForKey('title');
	if(sTitle) {
		var sSubTitle = oGadget.preferenceForKey('subTitle');
		sSubTitle = sSubTitle && sSubTitle !== '' && sSubTitle !== ' ' ? ' <span class="subtitle">' + sSubTitle + '</span>' : '';
		bb.dashboard.gadget.setTitle(oGadget, sTitle + sSubTitle);
	}
};

kpnvandaag.gadgetData = {};

kpnvandaag.originalTitle = document.title;
