﻿
/*
http://www.JSON.org/json2.js
2009-09-29

Public Domain.

NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

See http://www.JSON.org/js.html
*/
if (!this.JSON) { this.JSON = {}; } (function() { function l(c) { return c < 10 ? '0' + c : c } if (typeof Date.prototype.toJSON !== 'function') { Date.prototype.toJSON = function(c) { return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + l(this.getUTCMonth() + 1) + '-' + l(this.getUTCDate()) + 'T' + l(this.getUTCHours()) + ':' + l(this.getUTCMinutes()) + ':' + l(this.getUTCSeconds()) + 'Z' : null }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function(c) { return this.valueOf() } } var o = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, p = /[\\\"\x00-\xreqf\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, h, m, r = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }, j; function q(a) { p.lastIndex = 0; return p.test(a) ? '"' + a.replace(p, function(c) { var f = r[c]; return typeof f === 'string' ? f : '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4) }) + '"' : '"' + a + '"' } function n(c, f) { var a, e, d, i, k = h, g, b = f[c]; if (b && typeof b === 'object' && typeof b.toJSON === 'function') { b = b.toJSON(c) } if (typeof j === 'function') { b = j.call(f, c, b) } switch (typeof b) { case 'string': return q(b); case 'number': return isFinite(b) ? String(b) : 'null'; case 'boolean': case 'null': return String(b); case 'object': if (!b) { return 'null' } h += m; g = []; if (Object.prototype.toString.apply(b) === '[object Array]') { i = b.length; for (a = 0; a < i; a += 1) { g[a] = n(a, b) || 'null' } d = g.length === 0 ? '[]' : h ? '[\n' + h + g.join(',\n' + h) + '\n' + k + ']' : '[' + g.join(',') + ']'; h = k; return d } if (j && typeof j === 'object') { i = j.length; for (a = 0; a < i; a += 1) { e = j[a]; if (typeof e === 'string') { d = n(e, b); if (d) { g.push(q(e) + (h ? ': ' : ':') + d) } } } } else { for (e in b) { if (Object.hasOwnProperty.call(b, e)) { d = n(e, b); if (d) { g.push(q(e) + (h ? ': ' : ':') + d) } } } } d = g.length === 0 ? '{}' : h ? '{\n' + h + g.join(',\n' + h) + '\n' + k + '}' : '{' + g.join(',') + '}'; h = k; return d } } if (typeof JSON.stringify !== 'function') { JSON.stringify = function(c, f, a) { var e; h = ''; m = ''; if (typeof a === 'number') { for (e = 0; e < a; e += 1) { m += ' ' } } else if (typeof a === 'string') { m = a } j = f; if (f && typeof f !== 'function' && (typeof f !== 'object' || typeof f.length !== 'number')) { throw new Error('JSON.stringify'); } return n('', { '': c }) } } if (typeof JSON.parse !== 'function') { JSON.parse = function(i, k) { var g; function b(c, f) { var a, e, d = c[f]; if (d && typeof d === 'object') { for (a in d) { if (Object.hasOwnProperty.call(d, a)) { e = b(d, a); if (e !== undefined) { d[a] = e } else { delete d[a] } } } } return k.call(c, f, d) } o.lastIndex = 0; if (o.test(i)) { i = i.replace(o, function(c) { return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4) }) } if (/^[\],:{}\s]*$/.test(i.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { g = eval('(' + i + ')'); return typeof k === 'function' ? b({ '': g }, '') : g } throw new SyntaxError('JSON.parse'); } } } ());


// jXHR.js (JSON-P XHR)
// v0.1 (c) Kyle Simpson
// MIT License

(function(global) {
    var SETTIMEOUT = global.setTimeout, // for better compression
		doc = global.document,
		callback_counter = 0;

    global.jXHR = function() {
        var script_url,
			script_loaded,
			jsonp_callback,
			scriptElem,
			publicAPI = null;

        function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } }

        function reset() {
            script_loaded = false;
            script_url = "";
            removeScript();
            scriptElem = null;
            fireReadyStateChange(0);
        }

        function ThrowError(msg) {
            try { publicAPI.onerror.call(publicAPI, msg, script_url); } catch (err) { throw new Error(msg); }
        }

        function handleScriptLoad() {
            if ((this.readyState && this.readyState !== "complete" && this.readyState !== "loaded") || script_loaded) { return; }
            this.onload = this.onreadystatechange = null; // prevent memory leak
            script_loaded = true;
            if (publicAPI.readyState !== 4) {ThrowError("Script loading failed [" + script_url + "].");}
            removeScript();
        }

        function fireReadyStateChange(rs, args) {
            args = args || [];
            publicAPI.readyState = rs;
            if (typeof publicAPI.onreadystatechange === "function") {publicAPI.onreadystatechange.apply(publicAPI, args);}
        }

        publicAPI = {
            onerror: null,
            onreadystatechange: null,
            readyState: 0,
            open: function(method, url) {
                reset();
                internal_callback = "cb" + (callback_counter++);
                (function(icb) {
                    global.jXHR[icb] = function() {
                        try { fireReadyStateChange.call(publicAPI, 4, arguments); }
                        catch (err) {
                            publicAPI.readyState = -1;
                            ThrowError("Script failed to run [" + script_url + "].");
                            alert(err);console.log(err);
                        }
                        global.jXHR[icb] = null;
                    };
                })(internal_callback);
                script_url = url.replace(/=\?/, "=jXHR." + internal_callback);
                fireReadyStateChange(1);
            },
            send: function() {
                SETTIMEOUT(function() {
                    scriptElem = doc.createElement("script");
                    scriptElem.setAttribute("type", "text/javascript");
                    scriptElem.onload = scriptElem.onreadystatechange = function() { handleScriptLoad.call(scriptElem); };
                    scriptElem.setAttribute("src", script_url);
                    doc.getElementsByTagName("head")[0].appendChild(scriptElem);
                }, 0);
                fireReadyStateChange(2);
            },
            setRequestHeader: function() { }, // noop
            getResponseHeader: function() { return ""; }, // basically noop
            getAllResponseHeaders: function() { return []; } // ditto
        };

        reset();

        return publicAPI;
    };
})(window);

var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf(" chrome/") >= 0 || ua.indexOf(" firefox/") >= 0 || ua.indexOf(' gecko/') >= 0) {
    var StringMaker = function() {
        this.str = "";
        this.length = 0;
        this.append = function(s) {
            this.str += s;
            this.length += s.length;
        };
        this.prepend = function(s) {
            this.str = s + this.str;
            this.length += s.length;
        };
        this.toString = function() {
            return this.str;
        };
    };
} else {
    var StringMaker = function() {
        this.parts = [];
        this.length = 0;
        this.append = function(s) {
            this.parts.push(s);
            this.length += s.length;
        };
        this.prepend = function(s) {
            this.parts.unshift(s);
            this.length += s.length;
        };
        this.toString = function() {
            return this.parts.join('');
        };
    };
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
//var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    while (i < input.length) {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2)) {
            enc3 = enc4 = 64;
        } else if (isNaN(chr3)) {
            enc4 = 64;
        }

        output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    }

    return output.toString();
}

function decode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;

    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
    input = input.replace(/[^A-Za-z0-9\-\_\.]/g, "");
    //input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

    while (i < input.length) {
        enc1 = keyStr.indexOf(input.charAt(i++));
        enc2 = keyStr.indexOf(input.charAt(i++));
        enc3 = keyStr.indexOf(input.charAt(i++));
        enc4 = keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output.append(String.fromCharCode(chr1));

        if (enc3 != 64) {
            output.append(String.fromCharCode(chr2));
        }
        if (enc4 != 64) {
            output.append(String.fromCharCode(chr3));
        }
    }

    return output.toString();
}

function getReqObjPrice(strSymbol, strProvider, boolMonitor) {
	var newReqId = ++globalCurrentReqId;
	var tempReqObj = {
		t: 1, // unsigned byte for message type (REQUEST_MONITOR_PRICE = 1)
		i: newReqId, // int indicating the request id
		m: boolMonitor?1:0, // byte indicating subscription mode (SUBSCRIPTION_MODE_SNAPSHOT=0, SUBSCRIPTION_MODE_MONITOR=1)
		s: strSymbol,
		p: strProvider
	};
	return tempReqObj;
}

function getReqObjInstrumentLookup(strMarketId, byteSearchField, strSearch, byteMode, arrInstrTypes, intMax, strProvider) {
	var newReqId = ++globalCurrentReqId;
	var tempReqObj = {
		t: 9, // unsigned byte for message type (REQUEST_MARKET_INSTRUMENTS = 9)
		i: newReqId, // int indicating the request id
		p: strProvider,
		mkt: strMarketId, // A String for market id
		fid: byteSearchField, // A byte for search field (SEARCH_ALL = 0, SEARCH_NAME = 1, SEARCH_SYMBOL = 2)
		str: strSearch, // String for string to search for
		mode: byteMode, // byte for search mode (MODE_STARTS_WITH = 1, MODE_CONTAINS = 2, MODE_ENDS_WITH = 3)
		it: arrInstrTypes, // byte for instrument type (in fact this is an array of instrument-types/bytes - extended compared to binary protocol v1)
		max: intMax // int for maximum number of results
	};
	return tempReqObj;
}

function getXReqPageSize(){
	return 4;
}

Netdania = {};
arrRequests = [];
globalCurrentReqId = 0;
globalCurrentCmp = 0;
cbfunctions = [];
sessionId = undefined;

function appendRequests(v,remove){
	if(window.xreq === undefined || xreq.appending === true || sessionId === '?'){
		arrRequests = arrRequests.concat(v);
		return;
	}
		xreq.appending = true;
		var treq = new jXHR();
		var i = 0;
		var tmpv = v.slice(0, xreqPageSize);
		var a = encode64(JSON.stringify(tmpv));
		i = i + xreqPageSize;
		var url = globalConnectHost + "?" +
				"dt=" + byteDeliveryType + "&" +
				"sessid=" + sessionId + "&" +
				"xcmd=" + a + "&" +
				"cb=?";	
		treq.onreadystatechange = function(data) {
			if (treq.readyState === 4) {
				if( i < v.length){
					tmpv = v.slice(i, i+xreqPageSize);
					a = encode64(JSON.stringify(tmpv));
					
					url = globalConnectHost + "?" +
						"dt=" + byteDeliveryType + "&" +
						"sessid=" + sessionId + "&" +
						"xcmd=" + a + "&" +
						"cb=?";
					
					i = i + xreqPageSize;
					openAjaxCall = function(){
						treq.open("GET", url);
						treq.send();
					};
					setTimeout(openAjaxCall, 10);
				}else{
					xreq.appending = false;
					if(arrRequests.length > 0){
						var temp = arrRequests.concat([]);
						arrRequests = [];
						appendRequests(temp);
					}
				}
			}
		};
		treq.open("GET", url);
		treq.send();
}

function handleError(msg, url) {
    //alert(msg);
}

function startConnection(){ //window 
	var g = window;
	
	g.xreqPageSize = getXReqPageSize();
	g.sessionId ='?';
	g.pollinngInterval = 1000;
	g.globalConnectHost = "http://balancer.netdania.com/StreamingServer/StreamingServer";
	g.byteConnBehavior = 3; // CONNECTION_STREAMING = 1, CONNECTION_POLLING = 2, CONNECTION_LONG_POLLING = 3
	g.byteDeliveryType = 1; // Delivery-type (JSON/0, JSONP/1, SCRIPT-TAG/2).
	/*g.handshake = {
		g: "hal.penge-dk.drupal6.dev.peytz.dk",
		ai: "penge_ajax",
		au: "http://hal.penge-dk.drupal6.dev.peytz.dk",
		pr: byteConnBehavior // CONNECTION_STREAMING = 1, CONNECTION_POLLING = 2, CONNECTION_LONG_POLLING = 3
	};*/

    g.handshake = {
		g: "www.penge.dk",
		ai: "penge_ajax",
		au: "http://www.penge.dk",
		pr: byteConnBehavior // CONNECTION_STREAMING = 1, CONNECTION_POLLING = 2, CONNECTION_LONG_POLLING = 3
	};

	
	//initXReq();
	
	//var strArrRequests = encode64(JSON.stringify(arrRequests.slice(0, xreqPageSize)));
	var strHandshake = encode64(JSON.stringify(handshake));

    var url = globalConnectHost + "?" +
                    "xstream=1&" +
                    "v=1&" +
                    "dt=1&" +
                    "h=" + strHandshake + "&" +
                   // "xcmd=" + strArrRequests + "&" +
                    "cb=?" +
                    "&ts=" + Math.random();
	g.xreq = new jXHR();
	xreq.pending = false;
	xreq.appending = false;
	xreq.totalCount = -1;
    xreq.onerror = handleError;
    xreq.onreadystatechange = function(data) {
        if (xreq.readyState === 4){
			sessionId = data[1].m;
			appendRequests(arrRequests);
			arrRequests = [];
			xreq.url = globalConnectHost + "?" +
					"dt=" + byteDeliveryType + "&" +
					"sessid=" + sessionId + "&" +
					"cb=?&" +
					"xpoll&" +
					"&ts=" + Math.random();
			
            xreq.onreadystatechange = function(data) {
				if (xreq.readyState === 4) {
					if (data !== '' && data !== undefined) {
						for(var kk = 0; kk < cbfunctions.length; kk++){
							//console.log(cbfunctions[kk].hasOwnProperty('win'));
							if(cbfunctions[kk].hasOwnProperty('win'))
							{
							    if(cbfunctions[kk].hasOwnProperty('win')!== null)
							    {
							        cbfunctions[kk].update(data, cbfunctions[kk].cmp, cbfunctions[kk].win);
							    }
							}
							else
							{
							    cbfunctions[kk].update(data, cbfunctions[kk].cmp);
							}
							
						}
					}
					xreq.pending = false;
				}
			};
            setInterval("doPolling(" + byteDeliveryType + ")", pollinngInterval);
        }
    };
	xreq.open("GET", url);
    xreq.send();
}


function removeCallback(c, f){
	for(var i = 0; i<cbfunctions.length; i++){
		if(cbfunctions[i].cmp.id === c.id){
			cbfunctions.splice(i,1, {update: f,cmp: c});
			break;
		}
	}
}

function removeArrayItem(arr, v){
	for(var i = 0; i<arr.length; i++){
		if(arr[i] === v){
			arr.splice(i,1);
			break;
		}
	}
}

function doPolling(byteDeliveryType) {
	if (sessionId === null) {
		//alert("TODO: We cannot poll as we do not have a session-id from the server!");
		return;
	}
	if(xreq.pending === false){
		xreq.pending = true;
		xreq.open("GET", xreq.url);
		xreq.send();
	}
}

function getBidAsk(bid, ask, decimals) {
	
    if (bid === "N/A" || ask === "N/A") {
        return bid;
    }

    if (decimals !== null && decimals !== undefined) {
	    try {
	        bid = parseFloat(bid).toFixed(decimals);
	    }
	    catch (ex) {
	    }
	    try {
	        ask = parseFloat(ask).toFixed(decimals);
	    }
	    catch (ex_) {
	    }
    }

    var charsChanged = false;
    subBid = bid.substring(0, 1);
    subAsk = ask.substring(0, 1);
    finishAsk = "/";
    var i = 0;
    while (i < bid.length && i < ask.length) {
        subBid = bid.substring(i, i + 1);
        subAsk = ask.substring(i, i + 1);
        if (charsChanged || (subBid !== subAsk)) {
            charsChanged = true;
            finishAsk = finishAsk + subAsk;
        }
        i++;
    }
    if (finishAsk !== "/") {
        return bid/* + finishAsk*/;
    } else {
        return bid;
    }
}

function getLast(value, bid, ask, decimals) {
	
	if (decimals !== null && decimals !== undefined ) {
	    if (value !== "N/A") {
	        try {
	            value = parseFloat(value).toFixed(decimals);
	        }
	        catch (ex) {
	        }
	    }
	}

    var val = value;
    if (val === "N/A") {
        val = getBidAsk(bid, ask, decimals);
    }
    return val;
}

function computeChange(last, close){
	return parseFloat(last-close).toFixed(2);
}

function computePctChange(last, close){
	if(close!=="" && close !==0){
		return parseFloat((last-close)*100/close).toFixed(2);
	}
	return 'NaN';
}

function computeYChange(last, yclose){
	return parseFloat(last-yclose).toFixed(2);
}

function computePctYChange(last, yclose){
	if(yclose!=="" && yclose !==0){
		return parseFloat((last-yclose)*100/yclose).toFixed(2);
	}
	return 'NaN';
}

/**
 * Gets the current time in milliseconds from 1970.
 */
function getCurrentDateTime() {
	var date = new Date();
	return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
}


/**
 * Gets the current time in milliseconds from 1970.
 */
function getCurrentDateTime() {
	var date = new Date();
	return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
}

function getDate(val){
		dtArray = val.split(" ");
        dt = dtArray[0];
        time = dtArray[1];

        timeArray = time.split(":");
        hour = timeArray[0];
        min = timeArray[1];
        sec = timeArray[2];

        diff = calculate_time_zone();

        tzArray = diff.split(":");

        hoursDiff = parseInt(tzArray[0], 10);
        minDiff = parseInt(tzArray[1], 10);

        dtArray = dt.split("-");

        today = new Date();
        today.setFullYear(dtArray[0], dtArray[1] - 1, dtArray[2]);
        today.setHours(hour, min, sec);
        newDate = today.add(Date.HOUR, hoursDiff);
        
		return newDate;
}

var dateFormat = function() {
    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[\-+]\d{4})?)\b/g,
		timezoneClip = /[^\-+\dA-Z]/g,
		pad = function(val, len) {
		    val = String(val);
		    len = len || 2;
		    while (val.length < len) {val = "0" + val;}
		    return val;
		};

    // Regexes and supporting functions are cached through closure
    return function(date, mask, utc) {
        var dF = dateFormat;

        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
        if (arguments.length == 1 && (typeof date == "string" || date instanceof String) && !/\d/.test(date)) {
            mask = date;
            date = undefined;
        }

        // Passing date through Date applies Date.parse, if necessary
        date = date ? new Date(date) : new Date();
        if (isNaN(date)){ throw new SyntaxError("invalid date");}

        mask = String(dF.masks[mask] || mask || dF.masks["default"]);

        // Allow setting the utc argument via the mask
        if (mask.slice(0, 4) == "UTC:") {
            mask = mask.slice(4);
            utc = true;
        }

        var _ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
			    d: d,
			    dd: pad(d),
			    ddd: dF.i18n.dayNames[D],
			    dddd: dF.i18n.dayNames[D + 7],
			    m: m + 1,
			    mm: pad(m + 1),
			    mmm: dF.i18n.monthNames[m],
			    mmmm: dF.i18n.monthNames[m + 12],
			    yy: String(y).slice(2),
			    yyyy: y,
			    h: H % 12 || 12,
			    hh: pad(H % 12 || 12),
			    H: H,
			    HH: pad(H),
			    M: M,
			    MM: pad(M),
			    s: s,
			    ss: pad(s),
			    l: pad(L, 3),
			    L: pad(L > 99 ? Math.round(L / 10) : L),
			    t: H < 12 ? "a" : "p",
			    tt: H < 12 ? "am" : "pm",
			    T: H < 12 ? "A" : "P",
			    TT: H < 12 ? "AM" : "PM",
			    Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			    o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			    S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

        return mask.replace(token, function($0) {
            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
        });
    };
} ();

// Some common format strings
dateFormat.masks = {
    "default": "ddd mmm dd yyyy HH:MM:ss",
    shortDate: "m/d/yy",
    mediumDate: "mmm d, yyyy",
    longDate: "mmmm d, yyyy",
    fullDate: "dddd, mmmm d, yyyy",
    shortTime: "h:MM TT",
    mediumTime: "h:MM:ss TT",
    longTime: "h:MM:ss TT Z",
    isoDate: "yyyy-mm-dd",
    isoTime: "HH:MM:ss",
    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
    dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
    monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function(mask, utc) {
    return dateFormat(this, mask, utc);
};

function isInArray(val, arr) {
    var isInArr = false;
    for (i = 0; i < arr.length; i++) {
        if (arr[i] == val) {
            isInArr = true;
            break;
        }
    }
    return isInArr;
}

var chartWin;
var chartLocation = 'http://penge.netdania.com/interactiveChart.aspx?symbol=';
var chartName = 'FinanceChart';

function openChart(instrumentInteractive) {
     
  if (chartWin !== null && chartWin !== undefined && chartWin.closed) {
    chartWin = null;
  }

  if (chartWin === null || chartWin === undefined) {
    chartWin = window.open(chartLocation + instrumentInteractive, chartName, 'alwaysRaised=yes,resizable=0,directories=no,location=no,menubar=no,toolbar=no,status=no,scrollbars=no,width=770,height=480');
    chartWin.focus();
  }
  else{
    chartWin.location = chartLocation + instrumentInteractive;
  }
}

function stripHeadline(headline, length) {

        if (headline.length < length) {
            return headline;
        }
        else {
            return headline.substring(0, length) + '...';
        }
    }
    


function getRecordById(records, id){
	for (var k = 0; k < records.length; k++) {
		if(records[k].id === id){
			return records[k];
		}
	}
	return undefined;
}

function reset_color(spanid){
	var span = document.getElementById(spanid);
	span.firstChild.style.color = '';
}

function reset_highlight(spanid){
	var span = document.getElementById(spanid);
	if (span !== null) {
	    span.firstChild.style.backgroundColor = 'transparent';
	    setTimeout('reset_color("' + spanid + '")', 500);
	}else
	{
	    //console.log(spanid);
	}
}

function refreshCell(grid, rec, cellid, val, oldval, fxy){
	var torender = '<span>'+ val +'</span>';
	if(grid.renderers[fxy]!== undefined){
		torender = grid.renderers[fxy].fn(grid, rec, cellid, val, oldval, fxy);
	}
	var cell = document.getElementById(cellid);
	
	if(cell !== null){
		cell.innerHTML = torender;
	}
	if(grid.renderers[fxy]!== undefined && grid.renderers[fxy].hightlightInterval !== undefined){
		setTimeout('reset_highlight("' + cellid + '")', grid.renderers[fxy].hightlightInterval);
	}
}

function receiveQuotesJsonData_light(data,grid){
	var recs = grid.records;
	for (var k = 0; k < data.length; k++) {
		if (data[k].f) {
			var r = getRecordById(grid.records, "recid-"+data[k].i);
			if(r === undefined){
				continue;
			}
			var last = "notdirty";
			var bid = "notdirty";
			var ask = "notdirty";
			var close = "notdirty";
			var yclose = "notdirty";
			var name = "notdirty";var name2 = "notdirty";
			var realSymbol = "notdirty";
			var tempOldValue = '';
			var tempOldName = r.data.f25;
			
			for(var i = 0; data[k] && i< data[k].f.length; i++){
				var field = data[k].f[i];
				if(field.f === 6){
					r.last = parseFloat(field.v).toFixed(4);
					last = "dirty";
				}
				if(field.f === 10){r.bid = field.v; bid = 'dirty';}
				if(field.f === 11){r.ask = field.v; ask = 'dirty';}
				if(field.f === 1){r.close = field.v; close = 'dirty';}
				if(field.f === 19){r.yclose = field.v; yclose = 'dirty';}
				if (field.f === 1003) {
					if(r.realSymbol !== undefined){
						realSymbol = "dirty";
					}
					r.realSymbol = field.v;
				}
				if (field.f === 39) { r.isin = field.v;}
				
				if("f"+field.f in grid.columns){
					tempOldValue = r.data["f"+field.f];
					r.data["f"+field.f] = field.v;
					if(field.f === 6){
						r.data.f6 = r.last;
					}
					if(field.f === 25){
						if(tempOldValue === undefined){
							r.data.f25 = field.v;
							name = "dirty";
						}
					}else if(field.f === 5013){
						r.data.f5013 = field.v;
						name2 = "dirty";
					}else{
						refreshCell(grid,r, r.id+'-f'+field.f, field.v,tempOldValue, 'f'+field.f);
					}
				}
				
			}
			if(r.realSymbol!== undefined){
				last = "dirty";
			}
			if(name === "dirty" || realSymbol === "dirty"){
				refreshCell(grid,r, r.id+'-f25', r.data.f25,tempOldName, 'f25');
			}
			if(name2 === "dirty"){
				refreshCell(grid,r, r.id+'-f5013', r.data.f5013,'', 'f5013');
			}
			if(grid.contentType === 'indexes' && last === "notdirty" && (bid ==="dirty" || ask==="dirty")){
				r.last = getLast("N/A", r.bid, r.ask,4);
				last = "dirty";
				if('f6' in grid.columns){
					tempOldValue = r.data.f6;
					r.data.f6 = r.last;
					refreshCell(grid,r,r.id+'-f6', r.last, tempOldValue, 'f6');
				}
			}
			
			if(last!== "notdirty" || close !== "notdirty"){
				if('f15' in grid.columns){
					tempOldValue = r.data.f15;
					r.data.f15 = computePctChange(r.last, r.close);
					refreshCell(grid,r,r.id+'-f15', r.data.f15, tempOldValue,'f15');
				}
				if('f14' in grid.columns){
					tempOldValue = r.data.f14;
					r.data.f14 = computeChange(r.last, r.close);
					refreshCell(grid,r,r.id+'-f14', r.data.f14, tempOldValue,'f14');
				}
				
			}
			
			if(last!== "notdirty" || yclose !== "notdirty"){
				if('f32' in grid.columns){
					tempOldValue = r.data.f32;
					r.data.f32 = computePctYChange(r.last, r.yclose);
					refreshCell(grid,r,r.id+'-f32', r.data.f32, tempOldValue,'f32');
				}
				if('f31' in grid.columns){
					tempOldValue = r.data.f31;
					r.data.f31 = computeYChange(r.last, r.yclose);
					refreshCell(grid,r,r.id+'-f31', r.data.f31, tempOldValue,'f31');
				}
				
			}
		}
	}
}

function cbf_lookup(data, cmp) {
	if (cmp.type !== 'quoteslookup' || cmp.loaded === 'loaded') { return; }
	var instr = [];

	for (var i = 0, len = data.length; i < len; i++) {
		if (isInArray(data[i].i, cmp.requests)) {
			if (data[i].a) {
				for (var lj = 0, lenlj = data[i].a.length; lj < lenlj; lj++) {
					var req = getReqObjPrice(data[i].a[lj].s, cmp.provider, true);
					var r = {
						id: "recid-" + req.i,
						data: {}
					};
					r.symbol = data[i].a[lj].s;
					cmp.records.push(r);
					cmp.requestItems.push(req);
				}
			}
			removeArrayItem(cmp.requests, data[i].i);
		}
	}

	if (cmp.requests.length === 0) {
		cmp.loaded = 'loaded'; cbfunctions.push({ cmp: cmp, update: cbf_update });
		appendRequests(cmp.requestItems);
		renderTable(cmp.tableConfig, cmp.tableConfig.startFrame, cmp.tableConfig.endFrame);
	}
}

function cbf_update(xdata, cmp) {
	receiveQuotesJsonData_light(xdata, cmp);
}

function renderTable(tableConfig, startFrame, endFrame) {

    var headerClass, contentClass, contentOddClass, width, fields, instr;

    fields = tableConfig.fields;
    var cmp = tableConfig.instr;
	instr = cmp.records;
	var tableWidth = 0;
	var headerHtml = '';
	var colsHtml = '';
	var lastField = '';
	
    if (tableConfig.contentClass === undefined || tableConfig.contentClass === null || tableConfig.contentClass === '') {
        contentClass = "gridDefaultContentClass";
    }

    if (tableConfig.contentOddClass === undefined || tableConfig.contentOddClass === null || tableConfig.contentOddClass === '') {
        contentOddClass = "gridDefaultContentOddClass";
    }

    if (tableConfig.width !== undefined && tableConfig.width !== null) {
        tableWidth = width;
    }
    for (var prop in fields) {
		lastField = prop;
	}
	
    for (var prop in fields) {
        if (fields.hasOwnProperty(prop)) {
			colsHtml += '<col width='+fields[prop].width+'>';
			tableWidth += parseInt(fields[prop].width);
			var lc = '';
			if(lastField === prop){
				lc = ' lastColCls';
			}
			headerHtml += '<td class="' + fields[prop].hdTDcls +lc+ '"><span class="' + fields[prop].hdCellCls +'"><span>' + fields[prop].name + '</span></span></td>';
		}
    }
	
    var align = '';
    if(tableConfig.align === '')
    {
        align = "center";
    }
    else
    {
        align = tableConfig.align;
    }
    
    if(startFrame !== undefined)
    {
        jshtml = startFrame + '<table class="middleTable" width='+ tableWidth +' style="table-layout:auto;" border="0" cellspacing="0" cellpadding="0" align="'+ align +'">';
    }
    else
    {
        jshtml = '<table class="middleTable" width='+ tableWidth +' style="table-layout:auto;" border="0" cellspacing="0" cellpadding="0">';
    }
	jshtml += colsHtml;
    jshtml += '<tr>';
	jshtml += headerHtml;
    jshtml += '</tr>';
    
    for (var ii = 0; ii < instr.length; ii++) {
        if (ii % 2 === 0) {
            jshtml += '<tr class="' + contentClass + '">';
        }
        else {
            jshtml += '<tr class="' + contentOddClass + '">';
        }
        
        var recid = instr[ii].id;

        for (var prop1 in fields) {
			if (fields.hasOwnProperty(prop1)) {
				var cellid = recid + '-' + prop1;
				var value = instr[ii].data[prop1];
				if(value === undefined){
					value = '';
				}
				if(cmp.renderers[prop1]!== undefined){
					value = cmp.renderers[prop1].fn(cmp, instr[ii], cellid, value, value, prop1);
				}else{
					value = '<span>'+value+'</span>';
				}
				var lc = '';
				if(lastField === prop1){
					lc = ' lastColCls';
				}
				jshtml += '<td  style="overflow: hidden;" class="' + fields[prop1].TDCls +lc+'"><span id="' + cellid + '" class="' + fields[prop1].cellCls + '" >' + value + '</span></td>';
			}
        }
        jshtml += '</tr>';
    }

    jshtml += '</table>';
    
    if(endFrame !== undefined)
    {
        jshtml+=endFrame;
    }
    
    if (tableConfig.renderTo !== undefined && tableConfig.renderTo !== null) {
        document.getElementById(tableConfig.renderTo).innerHTML = jshtml;
    }
    else {
        window.document.write(jshtml);
    }
}

var _FrontPageBox_baseUrl = "http://penge.netdania.com/PengeImage.aspx?instr={INSTR}&prv={PRV}&points={PT}&ts={TS}&current={CURR}&w={W}&h={H}";

function FrontPageBox_getSelectedInstrument(id, instr) {
    var selectedInstrument = [];
    
    var instruments = window[instr];
    
    for(var instrument in instruments)
        {
            if(instruments.hasOwnProperty(instrument))
        {
            var cmp = document.getElementById(instruments[instrument].s.replace('!', '').replace('/', '').replace('.', '')+ id);
            if (cmp!== null && cmp.style.fontWeight === 'bold') {
                selectedInstrument = [instruments[instrument].s, instruments[instrument].p];
                break;
            }
        }
    }
  
    return selectedInstrument;
}

function FrontPageBox_getSelectedTS(id) {

    if (document.getElementById('1D' + id)!== null && document.getElementById('1D' + id).style.fontWeight === 'bold') {
        return '1D';
    } else if (document.getElementById('3mdr' + id).style.fontWeight === 'bold') {
        return '3mdr';
    }
    else if (document.getElementById('1Y' + id).style.fontWeight === 'bold') {
        return '1Y';
    }
    else if (document.getElementById('3Y' + id).style.fontWeight === 'bold') {
        return '3Y';
    }
    else if (document.getElementById('max' + id).style.fontWeight === 'bold') {
        return 'max';
    }
}

function FrontPageBox_reloadImage(instr, prov, timespan, id, extended, width, height, instruments) {
    img = document.getElementById('chartImg' + id);
    var points = '288';
    var ts = '5';

    if (((instr === '!DJI' || instr === 'SPX' || instr === 'NDX') && timespan === '1D')) {
        timespan = '3mdr';
    }

    if (timespan === '1D') {
        points = '288';
        ts = '5';
    }
    else if (timespan === '3mdr') {
        points = '90';
        ts = '1440';
    }
    else if (timespan === '1Y') {
        points = '260';
        ts = '1440';
    }
    else if (timespan === '3Y') {
        points = '780';
        ts = '1440';
    }
    else if (timespan === 'max') {
        points = '30';
        ts = '1440';
    }

    img.src = _FrontPageBox_baseUrl.replace("{INSTR}", instr).replace("{PRV}", prov).replace("{PT}", points).replace("{TS}", ts).replace("{W}", width).replace("{H}", height);

    var divInstrName = instr.replace('!', '').replace('/', '').replace('.', '') + id;

    if (extended === true) {
        for(var instrument in instruments)
        {
            if(instruments.hasOwnProperty(instrument))
            {
                document.getElementById(instruments[instrument].s.replace('!', '').replace('/', '').replace('.', '') + id).style.textDecoration = 'none';
                document.getElementById(instruments[instrument].s.replace('!', '').replace('/', '').replace('.', '') + id).style.fontWeight = 'normal';
            }
        }

    }
    if(document.getElementById('1D' + id) !== null)
    {
        document.getElementById('1D' + id).style.textDecoration = 'none';
    }
    document.getElementById('3mdr' + id).style.textDecoration = 'none';
    document.getElementById('1Y' + id).style.textDecoration = 'none';
    document.getElementById('3Y' + id).style.textDecoration = 'none';
    document.getElementById('max' + id).style.textDecoration = 'none';
     if(document.getElementById('1D' + id) !== null)
     {
    document.getElementById('1D' + id).style.fontWeight = 'normal';
    }
    document.getElementById('3mdr' + id).style.fontWeight = 'normal';
    document.getElementById('1Y' + id).style.fontWeight = 'normal';
    document.getElementById('3Y' + id).style.fontWeight = 'normal';
    document.getElementById('max' + id).style.fontWeight = 'normal';

    if (instr === '!DJI' || instr === 'SPX' || instr === 'NDX') {
         if(document.getElementById('1D' + id) !== null)
         {
        document.getElementById('1D' + id).style.display = 'none';
        document.getElementById('moreNbsp').style.display = 'none';
    }
    else {
        if(document.getElementById('1D' + id) !== null)
        {
        document.getElementById('1D' + id).style.display = '';
        }
        }
        document.getElementById('moreNbsp').style.display = '';
    }
    if (extended === true) {
//        document.getElementById(divInstrName + id).style.textDecoration = 'underline';
//        document.getElementById(divInstrName + id).style.fontWeight = 'bold';
        document.getElementById(divInstrName).style.textDecoration = 'underline';
        document.getElementById(divInstrName).style.fontWeight = 'bold';
    }
    if(document.getElementById(timespan + id)!== null)
    {
    document.getElementById(timespan + id).style.textDecoration = 'underline';
    document.getElementById(timespan + id).style.fontWeight = 'bold';
    }
}



function FrontPageBox_renderChart(id, symbol, provider, extended, width, height, intraday, instruments, renderTo) {
    var _FrontPageBox_instr = symbol;
    if(instruments !== undefined)
    {
        _FrontPageBox_instr = instruments[0].s;
        symbol = instruments[0].s;
    }
    
    var _FrontPageBox_provider = provider;
    var _FrontPageBox_timespan = "1D";

    if (width === undefined) {
        width = 288;
    }
    if (height === undefined) {
        height = 260;
    }

    if (extended === undefined)
	{
        extended = true;
	}

    if(intraday === undefined)
    {
        intraday = true;
    }

    if(instruments === undefined)
    {
        instruments = [{ s: 'OMXC20.co', p: 'ms_dlc', n:'OMX C20' }, { s: 'OMXS30.st', p: 'ms_dlc', n:'OMX S30' }, { s: 'OMXH25.he', p: 'ms_dlc', n:'OMX H25' },  { s: 'DAX.de', p: 'ms_dlc',  n:'DAX' }, { s: '!PX1/FR', p: 'ms_dlc', n:'CAC' }];
    }
    var chartInstr = 'chartImage_instr_' + id;
    window[chartInstr] = instruments;

    var intraDayStr = '';
    if(intraday === true)
    {
         intraDayStr = ' <a class="chart" id="1D' + id + '" href="javascript:cT(\'1D\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">Dag</a><span id="moreNbsp">&nbsp;|</span>';
    }
    else
    {
        _FrontPageBox_timespan = '3mdr';
    }
    
   
                
    var chartHtml = "";
    if (extended === true) {
        chartHtml = '<table class="" cellpadding="0" border="0" cellspacing="0" width="288px" style="margin-bottom:10px">' +
        '<tr class="">' +
            '<td style="width: 100%;padding-left:5px">' +
                '<div id="indices'+ id +'" class="chart">';
                
               
                var links = '';
                var noOfInstr = instruments.length;
                var currInstr = 1;
                for (var instr in instruments) {
                    if (instruments.hasOwnProperty(instr)) {
                        links += ' <a class="chart" id="'+ instruments[instr].s.replace('!', '').replace('/', '').replace('.', '')+ id + '" href="javascript:cM(\''+ instruments[instr].s  +'\', \''+ instruments[instr].p + '\', \'' + id + '\', \'' + width + '\', \'' + height + '\',\'' + chartInstr + '\')">'+instruments[instr].n+'</a>&nbsp;';
                        
                    }
                    if(currInstr < noOfInstr)
                    {
                        links+='|';
                    }
                    currInstr++;
                }              
          chartHtml += links + ' </div>' +
          '  </td>' +
      '  </tr>' +
       ' <tr>' +
           ' <td align="center" style="padding: 5px 0px 5px 0px">' +
               ' <img src="" border="0" id="chartImg' + id + '" alt="" />' +
           ' </td>' +
       ' </tr>' +
        '<tr>' +
            '<td class="chart" style="padding-left:5px">' +
               intraDayStr +
                  ' <a class="chart" id="3mdr' + id + '" href="javascript:cT(\'3mdr\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">3 M&#229;neder</a>&nbsp;|'+
               ' <a class="chart" id="1Y' + id + '" href="javascript:cT(\'1Y\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')"> &#197;r</a>&nbsp;|'+
               ' <a class="chart" id="3Y' + id + '" href="javascript:cT(\'3Y\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">3 &#197;r</a>&nbsp;|' +
               ' <a class="chart" id="max' + id + '" href="javascript:cT(\'max\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">Max</a>' +
           ' </td>' +
       ' </tr>' +
    '</table>' +
   ' <div class="chartDotline">' +
   ' </div>';
    }
    else {
        if(intraday === true)
        {
             intraDayStr = ' <a class="chart" id="1D' + id + '" href="javascript:cT(\'1D\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">Dag</a><span id="moreNbsp">&nbsp;|</span>';
        }
    
        chartHtml = '<table class="chart" align="center" cellpadding="0" border="0" cellspacing="0" width="100%" style="margin-bottom:10px">' +
      '<tr>' +
            '<td style="padding-left:5px; text-align:left;padding-top:10px;text-align:left">' +
               intraDayStr+ //' <a class="chart" id="1D' + id + '" href="javascript:cT(\'1D\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\')">Dag</a><span id="moreNbsp">&nbsp;|</span>' +
               ' <a class="chart" id="3mdr' + id + '" href="javascript:cT(\'3mdr\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">3 M&#229;neder</a>&nbsp;|'+
               ' <a class="chart" id="1Y' + id + '" href="javascript:cT(\'1Y\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')"> &#197;r</a>&nbsp;|'+
               ' <a class="chart" id="3Y' + id + '" href="javascript:cT(\'3Y\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">3 &#197;r</a>&nbsp;|' +
               ' <a class="chart" id="max' + id + '" href="javascript:cT(\'max\', \'' + id + '\', \'' + symbol + '\', \'' + provider + '\', \'' + width + '\', \'' + height + '\', \'' + chartInstr + '\')">Max</a>' +
           ' </td>' +
       ' </tr>' +
       ' <tr>' +
           ' <td align="center" style="padding: 5px 0px 5px 0px">' +
               ' <img src="" border="0" id="chartImg' + id + '" alt="" />' +
           ' </td>' +
       ' </tr>' +
    '</table>' +
   ' <div class="chartDotline">' +
   ' </div>';
    }
    
    if(renderTo === undefined)
    {
        window.document.write(chartHtml);
    }
    else{
        document.getElementById(renderTo).innerHTML = chartHtml;
    }

    FrontPageBox_reloadImage(_FrontPageBox_instr, _FrontPageBox_provider, _FrontPageBox_timespan, id, extended, width, height, instruments);
}

function cM(i, p, id, width, height, instr) {
    //_FrontPageBox_instr = i;
    var ts = FrontPageBox_getSelectedTS(id);
    if (width === undefined) {
        width = 288;
    }
    if (height === undefined) {
        height = 260;
    }
    var instruments = window[instr];
    
    FrontPageBox_reloadImage(i, p, ts, id, true, width, height, instruments);
    //FrontPageBox_reloadImage(_FrontPageBox_instr, _FrontPageBox_provider, _FrontPageBox_timespan);
}

function cT(t, id, symbol, provider, width, height, instruments) {
    //_FrontPageBox_timespan = t;
    //FrontPageBox_reloadImage(_FrontPageBox_instr, _FrontPageBox_provider, _FrontPageBox_timespan);
    var instrProv = [];
    var extended = true;
    //if (symbol === undefined) {
        instrProv = FrontPageBox_getSelectedInstrument(id, instruments);
    //}
    if(instrProv[0] === undefined || instrProv[1] === undefined)
    {
        instrProv[0] = symbol;
        instrProv[1] = provider;
        extended = false;
    }
    if (width === undefined) {
        width = 288;
        
    }
    if (height === undefined) {
        height = 260;
    }
    

    FrontPageBox_reloadImage(instrProv[0], instrProv[1], t, id, extended, width, height);
}

function createFrameStart(width, id){
    var html = '<div style="width: ' + width + 'px;">'+
    '<div class="x-bubble-tl">'+
    '<div class="x-bubble-tr">'+
    '<div class="x-bubble-tc">'+
    ' <div style="-moz-user-select: none;">'+
    '<span class="x-bubble-header-text"><span id="boxInstrName'+ id +'"></span></span></div>'+
    '</div>'+
    ' </div>'+
    '</div>'+
    '<div class="x-bubble-bwrap">'+
    '<div class="x-bubble-ml">'+
    '<div class="x-bubble-mr">'+
    '<div class="x-bubble-mc">'+
    '<div class="x-bubble-body" style="height: auto; text-align: center">';
	
	window.document.write(html);
}

function createFrameStartString(width, id, title){
    var html = '<div style="width: ' + width + 'px;">'+
    '<div class="x-bubble-tl">'+
    '<div class="x-bubble-tr">'+
    '<div class="x-bubble-tc">'+
    ' <div style="-moz-user-select: none;padding-left:5px">'+
    '<span class="x-bubble-header-text"><span id="boxInstrName'+ id +'">'+title+'</span></span></div>'+
    '</div>'+
    ' </div>'+
    '</div>'+
    '<div class="x-bubble-bwrap">'+
    '<div class="x-bubble-ml">'+
    '<div class="x-bubble-mr">'+
    '<div class="x-bubble-mc">'+
    '<div class="x-bubble-body" style="height: auto; text-align: center">';
    
    return html;
}

function createFrameEnd(){
   var html =  ' </div>'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    ' <div class="x-bubble-bl">'+
    ' <div class="x-bubble-br">'+
    ' <div class="x-bubble-bc">'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    '</div>'+
    '</div>';
	window.document.write(html);
}

function createFrameEndString(){
    var html = ' </div>'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    ' <div class="x-bubble-bl">'+
    ' <div class="x-bubble-br">'+
    ' <div class="x-bubble-bc">'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    '</div>'+
    '</div>';
    
    return html;
}

function createBox(id, width, symbol, provider, intraday) {
   
    if(intraday === undefined)
    {
        intraday = true;
    }
    createFrameStart(width, id);
    FrontPageBox_renderChart(id, symbol, provider, false, 400, 230, intraday);

    _boxCreated = true;

}

function renderTopTable(topTable, recid, isin, width) {
    if(width === undefined)
    {
        width = 410;
    }
    var jshtml = '<table cellpadding="0" cellspacing="0" class="infoShareTopTable" border="0" width="'+ width +'px">';
    var i = 0;
    var style = ' style="background-color:#F4F4F4; height:28px"';

    for (var prop in topTable) {
        if (topTable.hasOwnProperty(prop)) {

		if (i % 2 === 0) {
            style = ' style="height:30px"';
        }
        else {
            style = ' style="background-color:#F4F4F4;height:30px"';
        }
        var cellid = recid + '-' + prop;
        //console.log(cellid);
        
        if (prop === 'f39') {
            if (isin !== undefined) {
            jshtml += '<tr ' + style + '><td class="shareInfoTopText"><span>' + topTable[prop].name + '</span></td><td class="shareInfoTopFields" id="' + cellid + '"><span>' + isin + '</span></td><tr>';
            }
        }
        else if (prop === 'f17') {
            jshtml += '<tr ' + style + '><td colspan="2" class="shareInfoTopText"><div style="float:left">' + topTable[prop].name + '</div><div style="font-weight:normal;float:right" class="shareInfoTopFields" id="' + cellid + '">' + topTable[prop].value + '</div></td><tr>';
        }
        else {
            jshtml += '<tr ' + style + '><td class="shareInfoTopText"><span>' + topTable[prop].name + '</span></td><td class="shareInfoTopFields" id="' + cellid + '"><span>' + topTable[prop].value + '</span></td><tr>';
        }
        i++;
		}
    }
    jshtml += '</table><br/>';
    window.document.write(jshtml);
}

function renderMiddleTable(middleTable, recid, width, cls, titlePadding) {
    if(width === undefined)
    {
        width = '400';
    }
    if(cls === undefined)
    {
        cls='';
    }
    if(titlePadding === undefined)
    {
        titlePadding = '';
    }
    else
    {
        titlePadding =  'padding-left:'+ titlePadding +'px';
    }
    var jshtml = '<table class="middleTable" align="center" border="0" width="'+ width +'px" cellpadding="0" cellspacing="0" style="padding-top:10px">';
    jshtml += '<tr><td colspan="4" align="left" style="padding-bottom:10px;'+titlePadding+'"><span class="x-bubble-header-text">KURSINFORMATION</span></span></td></tr>';

    var i = 0;
    var j = 0;
    var style = ' style="background-color:#F4F4F4"';
    for (var prop in middleTable) {
		if (middleTable.hasOwnProperty(prop)) {
			var cellid = recid + '-' + prop;
			if (prop === 'f6' || prop === 'f14') {
				cellid = recid + '-' + prop + '-dup';
			}
			//console.log(cellid);
			if (j % 2 === 0) {
				style = ' style="height:21px"';
			}
			else {
				style = ' style="background-color:#F4F4F4;height:30px"';
			}

			if (i % 2 === 0) {
				jshtml += '<tr ' + style + '><td class="infoShareMidText'+cls+'"><span>' + middleTable[prop].name + '</span></td><td class="infoShareMidField1" id="' + cellid + '"><span>' + middleTable[prop].value + '</span></td>';
			} else {
				jshtml += '<td class="infoShareMidText'+cls+'"><span>' + middleTable[prop].name + '</span></td><td class="infoShareMidField" id="' + cellid + '"><span>' + middleTable[prop].value + '</span></td>';
				jshtml += '<tr>';
				j++;
			}

			i++;
		}
    }
    jshtml += '</table>';
	window.document.write(jshtml);
}

function renderBottomTable(topTable, recid) {
    window.document.writeln('<img width="408px" style="padding-top:10px;padding-bottom:10px" src="http://penge.netdania.com/js/images/dotted_border_horiz_300.gif">');
    var jshtml = '<table border="0" width="400px" style="margin-bottom:10px;padding-top:15px" align="center" cellpadding="0" cellspacing="0" >';
    jshtml += '<tr><td colspan="4" align="left" style="padding-bottom:10px"><span class="x-bubble-header-text">N&#216;GLETAL</span></span></td></tr>';
    var j = 0;
    var style = ' style="background-color:#F4F4F4"';
    for (var prop in topTable) {
        if (topTable.hasOwnProperty(prop)) {
			var cellid = recid + '-' + prop;
			if (j % 2 === 0) {
				style = ' style="height:21px"';
			}
			else {
				style = ' style="background-color:#F4F4F4;height:30px"';
			}
			j++;
			//console.log(cellid);
			jshtml += '<tr  ' + style + '><td class="infoShareMidText"><span>' + topTable[prop].name + '</span></td><td class="infoShareMidField" id="' + cellid + '"><span>' + topTable[prop].value + '</span></td><tr>';
		}
    }
    jshtml += '</table>';
    window.document.write(jshtml);

    
    createFrameEnd();
    
}

Netdania.renderShareInfoBlock = function(isin, symbol) {
		
	window.shareInfoBlock = {
		id: 'gridid-shareInfoBlock',
		current: ""+globalCurrentCmp,
		renderers: {
			f6: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var cellElDup = document.getElementById(cellid + '-dup');
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '</span>';
				if (val > oldval) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				} else if (val < oldval) {
					value = '<span style="color:red;background-color:#E9E9EA">' + val + '</span>';
				}
				cellElDup.innerHTML = value;
				setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
				return value;
			},
				hightlightInterval: 1000
			},
			f25: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				document.getElementById('boxInstrName' + 'infoShare'+grid.current).innerHTML = val.toUpperCase();
				return '<span>' + val + '</span>';
			},
				hightlightInterval: 1000
			},
			f17: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd. mmmm yyyy, HH:MM").toLowerCase() +'</span>';
			},
				hightlightInterval: 1000
			},
			f14: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var upImagePath = "http://penge.netdania.com/js/images/up.png";
				var downImagePath = "http://penge.netdania.com/js/images/down.png";

				var cellElDup = document.getElementById(cellid + '-dup');
				val = parseFloat(val).toFixed(2);
				var val1 = parseFloat(rec.data.f15).toFixed(2);

				var value = '<span style="color:red;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
				var svalue = '<span>' + val + '</span>';
				if (val > 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA"><img style="padding-bottom:2px" src="' + upImagePath + '"> ' + val + ' (' + val1 + '%)</span>';
					svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				} else if (val < 0) {
					value = '<span style="color:red;background-color:#E9E9EA"><img style="padding-bottom:2px" src="' + downImagePath + '">' + val + ' (' + val1 + '%)</span>';
					svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				}
				cellElDup.innerHTML = svalue;
				setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
				//reset_highlight(cellid + '-dup');
				return value;
			},
				hightlightInterval: 1000
			},
			f15: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var value = '<span>' + val + '%</span>';
				if (val > 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '%</span>';
				} else if (val < 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '%</span>';
				}
				return value;
			},
				hightlightInterval: 1000
			},
			f32: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '%</span>';
				return value;
			},
			hightlightInterval: 1000
			},
			f31: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '</span>';
				return value;
			},
				hightlightInterval: 1000
			}
		},
		records: [
			{
				id: 'recid-i',
				data: {}
			}
		],
		columns: { f6: 0, f5: 0, f14: 0, f8: 0, f15: 0, f19: 0, f2: 0, f31: 0, f3: 0, f32: 0, f4: 0, f21: 0, f1: 0, f22: 0, f25: '', f17: '', f6076: 0, f6086: 0, f6088: 0, f6314: 0, f6077: 0, f6087: 0, f6299: 0, f6315: 0 }

	};
	var cmp = window.shareInfoBlock;
	var provider = 'ms_dlc';

    

    var rec = getReqObjPrice(symbol, provider, true);
    var recid = 'recid-' + rec.i;
    cmp.records[0].id = recid;
    arrRequests.push(rec);

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var topTable = {
        f6: { name: 'Seneste kurs', value: 'N/A' }, f14: { name: '&#198;ndring', value: 'N/A' },
        f17: { name: 'Tid', value: 'N/A' }, f39: { name: 'ISIN', value: 'N/A' }
    };

    var middleTable = {
        f6: { name: 'Seneste kurs', value: 'N/A' }, f5: { name: 'Volumen', value: 'N/A' },
        f14: { name: '&#198;ndring', value: 'N/A' }, f8: { name: 'Sidst handlet volume', value: 'N/A' },
        f15: { name: '&#198;ndring i %', value: 'N/A' }, f19: { name: 'Kurs ult. sidste&#229;r', value: 'N/A' },
        f2: { name: 'Dagens h&#248;jeste', value: 'N/A' }, f31: { name: '&#197;rets &#230;ndring', value: 'N/A' },
        f3: { name: 'Dagens laveste', value: 'N/A' }, f32: { name: '&#197;rets &#230;ndring i %', value: 'N/A' },
        f4: { name: '&#197;benkurs', value: 'N/A' }, f21: { name: '52 ugers h&#248;jeste', value: 'N/A' },
        f1: { name: 'Lukkekurs', value: 'N/A' }, f22: { name: '52 ugers laveste', value: 'N/A' }
    };

    var bottomTable = {
        f6076: { name: 'Indtjeningsprocent', value: 'N/A' }, f6077: { name: 'P/E', value: 'N/A' },
        f6086: { name: 'Udbytteprocent', value: 'N/A' }, f6087: { name: 'Forventet udbytteprocent', value: 'N/A' },
        f6088: { name: 'Forventet indtjeningsprocent', value: 'N/A' }, f6299: { name: '1 dags totalafkast', value: 'N/A' },
        f6314: { name: 'Antal udstedte aktier', value: 'N/A' }, f6315: { name: 'Markedsv&#230;rdi', value: 'N/A' }
    };

    renderTopTable(topTable, recid, isin);
    createBox('infoShare'+globalCurrentCmp,410, symbol, provider);
    //FrontPageBox_reloadImage(symbol, _provider, _timespan, 'infoShare');
    renderMiddleTable(middleTable, recid);
    renderBottomTable(bottomTable, recid);

    if (sessionId === undefined) {
        startConnection();
    }
};




defaultRenderers = {
	f14: function(grid, rec, cellid, val, oldval, fxy) {
		val = parseFloat(val).toFixed(2);
		if(val === "NaN"){
			return '<span></span>';
		}
		return '<span>' + val +'</span>';
	},
	f6: function(grid, rec, cellid, val, oldval, fxy) {
		var value = '<span>' + val + '</span>';
		if (val > oldval) {
			value = '<span style="color:#83A508; background-color:#E9E9EA;">' + val + '</span>';
		} else if (val < oldval) {
			value = '<span style="color:red; background-color:#E9E9EA;">' + val + '</span>';
		}
		return value;
	},
	f15: function(grid, rec, cellid, val, oldval, fxy) {
		var upImagePath = "http://penge.netdania.com/js/images/up.gif";
		var downImagePath = "http://penge.netdania.com/js/images/down.gif";
		val = parseFloat(val).toFixed(2);
		val = val.replace("NaN", "");
		if(val === ""){
			return '<span></span>';
		}
		val = val.replace("-0.00", "0.00");
		var value = '<span>' + val +'%&nbsp; &nbsp;</span>';
		if (val > 0) {
			value = '<span>' + val + '% <img src="' + upImagePath + '"></span>';
		} else if (val < 0) {
			value = '<span>' + val + '% <img src="' + downImagePath + '"></span>';
		}
		return value;
	},
	f17: function(grid, rec, cellid, val, oldval, fxy) {
			if (val === "N/A" || val === undefined) {
				return "N/A";
			}
			var dateUnf = new Date(val * 1000);
			return '<span>' + dateFormat(dateUnf, "dd-HH:MM:ss")+'</span>';
		}
};

//------------------------------------BLOCKS---------------------------------------------//

function FrontPageBox_createWinnersGrid() {
	window['FrontPageBox_winnersInfoBlock'+globalCurrentCmp] = {
		id: 'gridid-winnersBlock',
		renderers: {
			f6: { 
				fn: defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
			
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
					var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol) + '&t=s';
					if (val === undefined) { val = ""; }
					return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
				},
				hightlightInterval: 1000
			}
		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0}
	};
	
	var cmp = window['FrontPageBox_winnersInfoBlock'+globalCurrentCmp];
	
	var provider = 'ms_dlc';
    var instr = [];
	
	
    for(var i = 0; i< 10; i++){
	    instr.push(getReqObjPrice("S_WINNER_"+i+".co", provider, true));
    }

    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
    f25: { name: 'Aktie', value: '', width: 150, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
	f6: { name: 'Kurs', value: '', width: 64, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
	f15: { name: '%', value: '', width: 74, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };

   
    winnersGridDivId = 'winnersGridDiv'+globalCurrentCmp;
    window.document.write('<div id="' + winnersGridDivId + '"></div>');

    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '', 
        contentOddClass: '',
        renderTo: winnersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

function FrontPageBox_createLoosersGrid() {
	window['losersInfoBlock'+globalCurrentCmp] = {
		id: 'gridid-losersBlock',
		renderers: {
			f6: {
				fn:defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn:defaultRenderers.f15,
				hightlightInterval: 1000
			},
			
			f25: {fn:function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol) + '&t=s';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
			},
				hightlightInterval: 1000
			}

		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0}
	};
	
	var cmp = window['losersInfoBlock'+globalCurrentCmp];
	
	var provider = 'ms_dlc';
    var instr = [];
	for(var i = 0; i< 10; i++){
		instr.push(getReqObjPrice("S_LOSER_"+i+".co", provider, true));
	}
    
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
        f25: { name: 'Aktie', value: '', width: 150, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f6: { name: 'Kurs', value: '', width: 64, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f15: { name: '%', value: '', width: 74, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };

    var losersGridDivId = 'losersGridDiv'+globalCurrentCmp;
    window.document.write('<div style="display:none" id="'+ losersGridDivId +'"></div>');
    
    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '',
        contentOddClass: '',
        renderTo: losersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

function FrontPageBox_createWinnersGridSingle() {
	globalCurrentCmp++;
    window['FrontPageBox_winnersInfoBlockSingle'+globalCurrentCmp] = {
		id: 'gridid-winnersBlock',
		renderers: {
			f6: { 
				fn: defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
			
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
					var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol)+ '&t=s';
					if (val === undefined) { val = ""; }
					return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
				},
				hightlightInterval: 1000
			}
		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0}
	};
	var cmp = window['FrontPageBox_winnersInfoBlockSingle'+globalCurrentCmp];

	var provider = 'ms_dlc';
    var instr = [];
	for(var i = 0; i< 10; i++){
		instr.push(getReqObjPrice("S_WINNER_"+i+".co", provider, true));
	}
    
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
    f25: { name: 'Aktie', value: '', width: 138, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
	f6: { name: 'Kurs', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
	f15: { name: '%', value: '', width: 85, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };

    var winnersGridDivId = 'winnersGridDivSingle'+globalCurrentCmp;
    window.document.write('<div id="' + winnersGridDivId + '"></div>');

    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '', 
        contentOddClass: '',
        renderTo: winnersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

function FrontPageBox_createLoosersGridSingle() {
	globalCurrentCmp++;
	window['losersInfoBlockSingle'+globalCurrentCmp] = {
		id: 'gridid-losersBlock',
		renderers: {
			f6: {
				fn:defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
			f25: {fn:function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol)+ '&t=s';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
			},
				hightlightInterval: 1000
			}

		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0 }
	};
	var cmp = window['losersInfoBlockSingle'+globalCurrentCmp];
	
	var provider = 'ms_dlc';
    
    var instr = [];
	for(var i = 0; i< 10; i++){
		instr.push(getReqObjPrice("S_LOSER_"+i+".co", provider, true));
	}
    
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
        f25: { name: 'Aktie', value: '', width: 138, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f6: { name: 'Kurs', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f15: { name: '%', value: '', width: 85, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };


    var losersGridDivId = 'losersGridDivSingle'+globalCurrentCmp;
    window.document.write('<div id="'+ losersGridDivId +'"></div>');
    
    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '',
        contentOddClass: '',
        renderTo: losersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

Netdania.FrontPageBox_createLoosersGridSingle = function(){
    FrontPageBox_createLoosersGridSingle();
};

Netdania.FrontPageBox_createWinnersGridSingle = function(){
    FrontPageBox_createWinnersGridSingle();
};

function FrontPageBox_showGrid(gridId, current) {
    if (gridId === 'winners') {
        document.getElementById('losersGridDiv'+current).style.display = 'none';
        document.getElementById('winnersGridDiv'+current).style.display = '';
    }
    else {
        document.getElementById('losersGridDiv'+current).style.display = '';
        document.getElementById('winnersGridDiv'+current).style.display = 'none';
    }
}

function FrontPageBox_renderWinnersLoosersTable(top, flop) {

    if(top === undefined)
    {
        top = 'Top aktier';
    }
    
    if(flop === undefined)
    {
        flop = 'Flop aktier';
    }
    
    var table = '<table cellpadding="0" cellspacing="0" border="0" style="margin-bottom:10px; margin-top:10px" width="288px">'+
                    '<tr><td class="gridDefaultHeader" style="text-align:left;padding-left:4px">Dagens Top</td>' +
                    '</tr>' +

                    '<tr><td class="nameColumn" style="padding-left:0px">' +
                    '<input type="radio" checked name="winersLosers'+globalCurrentCmp+'" onclick="FrontPageBox_showGrid(\'winners\',\''+globalCurrentCmp+'\')" value="winners" /> ' + top + 
                    '<input type="radio" name="winersLosers'+globalCurrentCmp+'" onclick="FrontPageBox_showGrid(\'loosers\',\''+globalCurrentCmp+'\')" value="losers" /> ' + flop +
                    '</td>' +
                    '</tr>' +
                '</table>';
    window.document.write(table);          
}

Netdania.renderFrontPageBoxExtensive = function() {
    globalCurrentCmp++;
	FrontPageBox_renderChart('extensive'+globalCurrentCmp, 'OMXC20.co', 'ms_dlc', true, 282, 260);
	FrontPageBox_renderWinnersLoosersTable();
    FrontPageBox_createWinnersGrid();
    FrontPageBox_createLoosersGrid();
};

Netdania.renderFrontPageBoxLessExtensive = function() {
    FrontPageBox_renderChart('lessExtensive'+globalCurrentCmp, 'OMXC20.co', 'ms_dlc', true, 282, 260);
};

function renderFPT10WLBig_createLoosersGrid() {
    window['renderFPT10WLBigLosers'+globalCurrentCmp] = {
		id: 'gridid-lrenderFPT10WLBig',
		renderers: {
			f6: { 
				fn: defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
			f25: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol)+ '&t=s';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
			},
				hightlightInterval: 1000
			}

		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0}
	};
	var cmp = window['renderFPT10WLBigLosers'+globalCurrentCmp];
	var provider = 'ms_dlc';
	
    var instr = [];
	for(var i = 0; i< 10; i++){
		instr.push(getReqObjPrice("S_LOSER_"+i+".co", provider, true));
	}
    
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
        f25: { name: 'Aktie', value: '', width: 145, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f6: { name: 'Kurs', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f15: { name: '%', value: '', width: 90, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };


    var losersGridDivId = 'renderFPT10WLBigLosers'+globalCurrentCmp;
    //document.write('<div id="' + losersGridDivId + '"></div>');

    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '',
        contentOddClass: '',
        renderTo: losersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

function renderFPT10WLBig_createWinnersGrid() {
	window['renderFPT10WLBig_winnersInfoBlock'+globalCurrentCmp] = {
		id: 'gridid-winnersBlock',
		renderers: {
			f6: { 
				fn: defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
					var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.realSymbol) + '&t=s';
					if (val === undefined) { val = ""; }
					return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
				},
				hightlightInterval: 1000
			}
		},
		records: [],
		columns: { f6: 0, f15: 0, f25: 0}
	};
	var cmp = window['renderFPT10WLBig_winnersInfoBlock'+globalCurrentCmp];
	
	var provider = 'ms_dla';
	
    var instr = [];
	for(var i = 0; i< 10; i++){
		instr.push(getReqObjPrice("S_WINNER_"+i+".co", "ms_dlc", true));
	}

    
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.records.push({
            id: 'recid-' + instr[ii].i,
            symbol: instr[ii].s,
            data: {}
        });
        arrRequests.push(instr[ii]);
    }

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var fields = {
        f25: { name: 'Aktie', value: '', width: 145, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f6: { name: 'Kurs', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f15: { name: '%', value: '', width: 90, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
            
	};

    var winnersGridDivId = 'renderFPT10WLBig_winnersInfoBlock_winnersGridDiv'+globalCurrentCmp;
    //document.write('<div id="' + winnersGridDivId + '"></div>');

    var tableConfig = {
        instr: cmp,
        fields: fields,
        contentClass: '',
        contentOddClass: '',
        renderTo: winnersGridDivId
        //,width: 288
    };
    renderTable(tableConfig);
    if (sessionId === undefined) {
        startConnection();
    }
}

function renderFPT10WLBig_renderTable() {
    var html = '<table cellpadding="0" cellspacing="0"><tr><td><div style="padding-right:15px" id="renderFPT10WLBig_winnersInfoBlock_winnersGridDiv'+globalCurrentCmp+'"></div></td><td><div style="padding-left:15px"  id="renderFPT10WLBigLosers'+globalCurrentCmp+'"></div></td></tr></table>';
    window.document.write(html);
}

Netdania.renderFPT10WLBig = function() {
	globalCurrentCmp++;
    renderFPT10WLBig_renderTable();
    renderFPT10WLBig_createLoosersGrid();
    renderFPT10WLBig_createWinnersGrid();
};

function renderCurrInfoBoxBottom() {
    var html = ' </div>'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    ' <div class="x-bubble-bl">'+
    ' <div class="x-bubble-br">'+
    ' <div class="x-bubble-bc">'+
    '  </div>'+
    ' </div>'+
    ' </div>'+
    '</div>'+
    '</div>';
	window.document.write(html);
}

Netdania.renderCurrInfoBox = function(symbol, prov, intraday, isin) {
    globalCurrentCmp++;
	window['renderCurrInfoBox'+globalCurrentCmp] = {
		id: 'gridid-CurrInfoBox',
		contentType: 'indexes',
		current: ""+globalCurrentCmp,
		
		renderers: {
			f6: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var cellElDup = document.getElementById(cellid + '-dup');
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '</span>';
				if (val > oldval) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				} else if (val < oldval) {
					value = '<span style="color:red;background-color:#E9E9EA">' + val + '</span>';
				}
				cellElDup.innerHTML = value;
				setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
				return value;
			},
				hightlightInterval: 1000
			},
			f25: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				document.getElementById('boxInstrName' + 'infoCurrency'+grid.current).innerHTML = stripHeadline(val.toUpperCase(), 35);
				return '<span>' + val + '</span>';
			},
				hightlightInterval: 1000
			},
			f17: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd. mmmm yyyy, HH:MM").toLowerCase() +'</span>';
			},
				hightlightInterval: 1000
			},
			f14: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var upImagePath = "http://penge.netdania.com/js/images/up.png";
				var downImagePath = "http://penge.netdania.com/js/images/down.png";

				var cellElDup = document.getElementById(cellid + '-dup');
				val = parseFloat(val).toFixed(2);
				var val1 = parseFloat(rec.data.f15).toFixed(2);

				var value = '<span style="color:red;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
				var svalue = '<span>' + val + '</span>';
				if (val > 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA"><img src="' + upImagePath + '"> ' + val + ' (' + val1 + '%)</span>';
					svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				} else if (val < 0) {
					value = '<span style="color:red;background-color:#E9E9EA"><img src="' + downImagePath + '">' + val + ' (' + val1 + '%)</span>';
					svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				}
				cellElDup.innerHTML = svalue;
				setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
				return value;
			},
				hightlightInterval: 1000
			},
			f15: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var value = '<span>' + val + '%</span>';
				if (val > 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '%</span>';
				} else if (val < 0) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '%</span>';
				}
				return value;
			},
				hightlightInterval: 1000
			},
			f32: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '%</span>';
				return value;
			},
				hightlightInterval: 1000
			},
			f31: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '</span>';
				return value;
			},
				hightlightInterval: 1000
			}
		},
		records: [
			{
				id: 'recid-i',
				data: {}
			}
		],
		columns: { f6: 0, f5: 0, f14: 0, f8: 0, f15: 0, f19: 0, f2: 0, f31: 0, f3: 0, f32: 0, f4: 0, f21: 0, f1: 0, f22: 0, f25: '', f17: '', f6076: 0, f6086: 0, f6088: 0, f6314: 0, f6077: 0, f6087: 0, f6299: 0, f6315: 0 }

	};

	var cmp = window['renderCurrInfoBox'+globalCurrentCmp];
	
	
	var provider = 'ms_dla';
    if(prov !== undefined)
    {
        provider = prov;
    }
    

    var rec = getReqObjPrice(symbol, provider, true);
    var recid = 'recid-' + rec.i;
    cmp.records[0].id = recid;
    arrRequests.push(rec);

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

     var topTable = {};

     if(isin !== undefined && isin !== null)
    {

        topTable = {
            f6: { name: 'Seneste kurs', value: 'N/A' }, f14: { name: '&#198;ndring', value: 'N/A' },
            f17: { name: 'Tid', value: 'N/A' }, f39: { name: 'ISIN', value: 'N/A' }
        };
    }
    else
    {
         topTable = {
            f6: { name: 'Seneste kurs', value: 'N/A' }, f14: { name: '&#198;ndring', value: 'N/A' },
            f17: { name: 'Tid', value: 'N/A' }
        };
    }

    var middleTable = {
        f6: { name: 'Seneste kurs', value: 'N/A' }, f5: { name: 'Volumen', value: 'N/A' },
        f14: { name: '&#198;ndring', value: 'N/A' }, f8: { name: 'Antal handler i dag', value: 'N/A' },
        f15: { name: '&#198;ndring i %', value: 'N/A' }, f19: { name: 'Kurs ult. sidster', value: 'N/A' },
        f2: { name: 'Dagens hjeste', value: 'N/A' }, f31: { name: '&#197;rets &#230;ndring', value: 'N/A' },
        f3: { name: 'Dagens laveste', value: 'N/A' }, f32: { name: '&#197;rets &#230;ndring i %', value: 'N/A' },
        f4: { name: '&#197;benkurs', value: 'N/A' }, f21: { name: '52 ugers h&#248;jeste', value: 'N/A' },
        f1: { name: 'Lukkekurs', value: 'N/A' }, f22: { name: '52 ugers laveste', value: 'N/A' }
    };

    var bottomTable = {
        f6076: { name: 'Indtjeningsprocent', value: 'N/A' }, f6077: { name: 'P/E', value: 'N/A' },
        f6086: { name: 'Udbytteprocent', value: 'N/A' }, f6087: { name: 'Forventet udbytteprocent', value: 'N/A' },
        f6088: { name: 'Forventet indtjeningsprocent', value: 'N/A' }, f6299: { name: '1 dags totalafkast', value: 'N/A' },
        f6314: { name: 'Antal udstedte aktier', value: 'N/A' }, f6315: { name: 'Markedsv&#230;rdi', value: 'N/A' }
    };

    if(isin !== undefined && isin !== null)
    {
        renderTopTable(topTable, recid, isin);
    }
    else
    {
        renderTopTable(topTable, recid);
    }
    createBox('infoCurrency'+globalCurrentCmp, 410, symbol, provider, intraday);

    
    renderMiddleTable(middleTable, recid);
    renderCurrInfoBoxBottom();
    if (sessionId === undefined) {
        startConnection();
    }
};

Netdania.renderFrontPageCurrenciesBox = function(){
	globalCurrentCmp++;
	window['frontPageCurrencies'+globalCurrentCmp] = {
		id: 'gridid-frontPageCurrencies',
		contentType: 'indexes',
		renderers: {
			f6: {
				fn :defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15
			},
			
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
						var realSymbol = rec.realSymbol;
						if(rec.realSymbol === undefined){
							realSymbol = rec.symbol;
						}
						var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', realSymbol) + '&t=c';
						if (val === undefined) { val = ""; }
						//var shortval = stripHeadline(val, 15);
						//return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + val + '</a></span>';
						
						return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '">'+ val + '</span>';
					}
			},
			flag: {
				fn:function(grid, rec, cellid, val, oldval, fxy) {
						var cellEl = document.getElementById(cellid);
						return '<img src="' + val +'">';
					}
			}
		},
		records: [],
		columns: { f25: 0, f6: 0, f15: 0}
	};

	
	var instr = [
		getReqObjPrice("USDDKKCOMP.fx", "ms_dla", true),
		getReqObjPrice("JPYDKKCOMP.fx", "ms_dla", true),
		getReqObjPrice("GBPDKKCOMP.fx", "ms_dla", true),
		getReqObjPrice("CHFDKKCOMP.fx", "ms_dla", true),
		getReqObjPrice("SEKDKKCOMP.fx", "ms_dla", true),
		getReqObjPrice("EURDKKCOMP.fx", "ms_dla", true)
	];
	var flags = [
		"http://b2b.netposten.dk/graphics/flags/USD.gif",
		"http://b2b.netposten.dk/graphics/flags/JPY.gif",
		"http://b2b.netposten.dk/graphics/flags/GBP.gif",
		"http://b2b.netposten.dk/graphics/flags/CHF.gif",
		"http://b2b.netposten.dk/graphics/flags/SEK.gif",
		"http://b2b.netposten.dk/graphics/flags/EUR.gif"
	];
	var cmp = window['frontPageCurrencies'+globalCurrentCmp];

	for (var ii = 0; ii < instr.length; ii++) {
		cmp.records.push({
			id: 'recid-' + instr[ii].i,
			symbol: instr[ii].s,
			data: {flag: flags[ii]}
		});
		arrRequests.push(instr[ii]);
	}

	cbfunctions.push({
		update: cbf_update,
		cmp: cmp
	});

	var fields = {
		flag: {name: 'Land', value: '',width: 35,  hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
		f25: { name: 'Valuta', value: '', width: 78, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
		f6: { name: 'Seneste kurs', value: '', width: 90,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
		f15: { name: '&#198;ndring', value: '', width: 85, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};

	var tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: ''
	};
	renderTable(tableConfig);
	if (sessionId === undefined) {
		startConnection();
	}
};

Netdania.renderFrontPageAllCurrenciesBox = function(){
	globalCurrentCmp++;
	window['frontPageAllCurrenciesBox'+globalCurrentCmp] = {
		id: 'gridid-frontPageAllCurrenciesBox',
		contentType: 'indexes',
		renderers: {
			f6: {
				fn :defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f14: {
				fn: defaultRenderers.f14
			},
			f15: {
				fn: defaultRenderers.f15
			},
			f17: {
				fn: defaultRenderers.f17
			},
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
						var realSymbol = rec.realSymbol;
						if(rec.realSymbol === undefined){
							realSymbol = rec.symbol;
						}
						var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', realSymbol) + '&t=c';
						if (val === undefined) { val = ""; }
						//var shortval = stripHeadline(val, 15);
						//return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + val + '</a></span>';
                        return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '">' + val + '</span>';
					}
			}
		},
		records: [],
		columns: { f25: 0, f6: 0, f14: 0, f15: 0, f2: 0, f3: 0, f17: 0}
	};
	var provider = "ms_dla";
	 var instr = [
		getReqObjPrice("EURDKKCOMP.fx",provider, true),
		getReqObjPrice("USDDKKCOMP.fx",provider, true),
		getReqObjPrice("GBPDKKCOMP.fx",provider, true),
		getReqObjPrice("CHFDKKCOMP.fx",provider, true),
		getReqObjPrice("JPYDKKCOMP.fx",provider, true),
		getReqObjPrice("NOKDKKCOMP.fx",provider, true),
		getReqObjPrice("SEKDKKCOMP.fx",provider, true),
		getReqObjPrice("TRYDKKCOMP.fx",provider, true),
		getReqObjPrice("EURUSDCOMP.fx",provider, true),
		getReqObjPrice("USDJPYCOMP.fx",provider, true),
		getReqObjPrice("GBPUSDCOMP.fx",provider, true),
		getReqObjPrice("USDCADCOMP.fx",provider, true),
		getReqObjPrice("EURJPYCOMP.fx",provider, true),
		getReqObjPrice("AUDUSDCOMP.fx",provider, true),
		getReqObjPrice("NZDUSDCOMP.fx",provider, true),
		getReqObjPrice("EURCHFCOMP.fx",provider, true)
	];

	var cmp = window['frontPageAllCurrenciesBox'+globalCurrentCmp];

	for (var ii = 0; ii < instr.length; ii++) {
		cmp.records.push({
			id: 'recid-' + instr[ii].i,
			symbol: instr[ii].s,
			data: {}
		});
		arrRequests.push(instr[ii]);
	}

	cbfunctions.push({
		update: cbf_update,
		cmp: cmp
	});

	var fields = {
			f25: { name: 'Navn', value: '', width: 210, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
			f6: { name: 'Seneste', value: '', width: 80,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
			f14: { name: '+/-', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f15: { name: '%', value: '', width: 70, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f2: { name: 'H&#248;j', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
			f3: { name: 'Lav', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
			f17: { name: 'Tid', value: '', width: 90, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};

	var tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: ''
	};
	renderTable(tableConfig);
	if (sessionId === undefined) {
		startConnection();
	}
};

Netdania.renderfrontPageSectorPerformance = function(big){
	globalCurrentCmp++;
	if(big === undefined){
		big = "";
	}
	window['frontPageSectorPerformance'+big+globalCurrentCmp] = {
		id: 'gridid-frontPageSectorPerformance' +big+globalCurrentCmp,
		renderers: {
			f6: {
				fn :defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15
			},
			
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
						var realSymbol = rec.realSymbol;
						if(realSymbol === undefined){
							realSymbol = rec.symbol;
						}
						var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.data.f39).replace('####SYMBOL####', realSymbol) + '&t=s';
						if (val === undefined) { 
						    val = ""; 
						}else{
						    val = rec.newName.f25;
						}
						//var shortval = stripHeadline(val, 15);
						return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + val + '</a></span>';
					}
			}
			
		},
		records: [],
		columns: { f25: 0, f6: 0, f15: 0, f39:0}
	};

	var provider = "ms_dlc";
	var instr = [
		{
			r:getReqObjPrice("CX10PI.co", provider, true),f25: "Energi"
		},{
			r:getReqObjPrice("CX40PI.co", provider, true),f25: "Finans"
		},{
			r:getReqObjPrice("CX25PI.co", provider, true),f25: "Forbrugsgoder"
		},{
			r:getReqObjPrice("CX55PI.co", provider, true),f25: "Forsyning"
		},{
			r:getReqObjPrice("CX20PI.co", provider, true),f25: "Industri"
		},{
			r:getReqObjPrice("CX45PI.co", provider, true),f25: "IT"
		},{
			r:getReqObjPrice("CX30PI.co", provider, true),f25: "Konsumentvarer"
		},{
			r:getReqObjPrice("CX15PI.co", provider, true),f25: "Materials"
		},{
			r:getReqObjPrice("CX35PI.co", provider, true),f25: "Sundhedspleje"
		},{
			r:getReqObjPrice("CX50PI.co", provider, true),f25: "Telekommunikation"
		}
	];
	var cmp = window['frontPageSectorPerformance'+big+globalCurrentCmp];

	for (var ii = 0; ii < instr.length; ii++) {
		cmp.records.push({
			id: 'recid-' + instr[ii].r.i,
			symbol: instr[ii].r.s,
			//isin: instr[ii].f39,
			//data: {f25: instr[ii].f25}
			data: {},
			newName: {f25: instr[ii].f25}
		});
		arrRequests.push(instr[ii].r);
	}

	cbfunctions.push({
		update: cbf_update,
		cmp: cmp
	});

	var fields = {
		f25: { name: 'Navn', value: '', width: 138, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
		f6: { name: 'Seneste', value: '', width: 70,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
		f15: { name: '&#198;ndring', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};
	if(big === 'big'){
		fields = {
			f25: { name: 'Navn', value: '', width: 140, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
			f6: { name: 'Seneste', value: '', width: 80,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
			f14: { name: '+/-', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f15: { name: '%', value: '', width: 70, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f2: { name: 'H&#248;j', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
			f3: { name: 'Lav', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
			f17: { name: 'Tid', value: '', width: 95, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f32: { name: 'Year&nbsp;% change', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'}
		};
		cmp.columns.f14 = 0;
		cmp.columns.f17 = 0;
		cmp.columns.f32 = 0;
		cmp.columns.f2 = 0;
		cmp.columns.f3 = 0;
		//cmp.columns.f39 = 0;
		cmp.renderers.f17 = {
			fn: defaultRenderers.f17
		};
		cmp.renderers.f14 = {
			fn: defaultRenderers.f14
		};
		cmp.renderers.f32 = {
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val==="NaN" || val === undefined) {
					return "N/A";
				}
				return '<span>' + val +'%</span>';
			}
		};
	}

	var tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: ''
	};
	renderTable(tableConfig);
	if (sessionId === undefined) {
		startConnection();
	}
};

Netdania.renderfrontPageSectorPerformanceBig = function(big){
	Netdania.renderfrontPageSectorPerformance('big');
};

Netdania.renderfrontPageInternationalIndexes = function(big){
	globalCurrentCmp++;
	if(big === undefined){
		big = "";
	}
	window['frontPageInternationalIndexes'+big+globalCurrentCmp] = {
		id: 'gridid-frontPageInternationalIndexes'+big,
		renderers: {
			f6: {
				fn : defaultRenderers.f6,
				hightlightInterval: 1000
			},
			f15: {
				fn: defaultRenderers.f15
			},
			
			f25: {
				fn: function(grid, rec, cellid, val, oldval, fxy) {
						var realSymbol = rec.realSymbol;
						if(rec.realSymbol === undefined){
							realSymbol = rec.symbol;
						}
						var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', realSymbol) + '&t=c';
						if (val === undefined) { 
						    val = ""; 
						}else{
						    val = rec.newName.f25;
						}
						//var shortval = stripHeadline(val, 15);
						//return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + val + '</a></span>';
                        return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + rec.href + '">' + val + '</a></span>';
					}
			}
		},
		records: [],
		columns: { f25: 0, f6: 0, f15: 0}
	};


   
	
	var provider = "ms_dlc";
	var instr = [
		{
			r:getReqObjPrice("OMXC20.co", provider, true),
			f25: "K&#248;benhavn OMXC20",
            href: "http://penge.dk/investering/aktier/aktiekurser/omx-copenhagen-c20"
		},{
			r:getReqObjPrice("OMXS30.st", provider, true),
			f25: "Stockholm  OMXS30",
            href: "http://penge.dk/investering/aktier/aktiekurser/omx-stockholm-30-indeks"
		},{
			r:getReqObjPrice("OMXH25.he", provider, true),
			f25: "Helsinki OMXH25",
            href: "http://penge.dk/investering/aktier/aktiekurser/omx-helsinki-25-indeks"
		},{
			r:getReqObjPrice("DAX.de", provider, true),
			f25: "Tyskland DAX",
            href: "http://penge.dk/investering/aktier/aktiekurser/tyskland-dax-indeks"
		},{
			r:getReqObjPrice("!PX1/FR", provider, true),
			f25: "Frankrig CAC 40",
            href: "http://penge.dk/investering/aktier/aktiekurser/frankrig-cac-40-indeks"
		},{
			r:getReqObjPrice("!N100/FR", provider, true),
			f25: "Euronext100",
            href: "http://penge.dk/investering/aktier/aktiekurser/euronext-100-indeks"
		},{
			r:getReqObjPrice("OSEBX.ol", provider, true),
			f25: "Oslo OBX",
            href: "http://penge.dk/investering/aktier/aktiekurser/oslo-obx-indeks"
		},{
			r:getReqObjPrice("OMXI6CAPEUR.st", provider, true),
			f25: "Iceland OMX",
            href: "http://penge.dk/investering/aktier/aktiekurser/omx-island-6-indeks"
		},{
			r:getReqObjPrice("100000018.os", provider, true),
			f25: "Japan Nikkei",
            href: "http://penge.dk/investering/aktier/aktiekurser/japan-nikkei-indeks"
		},{
			r:getReqObjPrice("!HKHSX", provider, true),
			f25: "Hong Kong - Hang Seng",
            href: "http://penge.dk/investering/aktier/aktiekurser/hong-kong-hang-seng-indeks"
		},{
			r:getReqObjPrice("!DJI", provider, true),
			f25: (big==='big')?"Dow Jones Industrial Average":"Dow Jones Industrial A...",
            href: "http://penge.dk/investering/aktier/aktiekurser/dow-jones-industrial-average-indeks"
		},{
			r:getReqObjPrice("NDX", provider, true),
			f25: "NASDAQ Composite",
            href: "http://penge.dk/investering/aktier/aktiekurser/nasdaq-composite-indeks"
		},{
			r:getReqObjPrice("SPX", provider, true),
			f25: "S&P 500",
            href: "http://penge.dk/investering/aktier/aktiekurser/sp500-indeks"
		}
	];

    var cmp = window['frontPageInternationalIndexes'+big+globalCurrentCmp];

	for (var ii = 0; ii < instr.length; ii++) {
		cmp.records.push({
			id: 'recid-' + instr[ii].r.i,
			symbol: instr[ii].r.s,
			//data: {f25: instr[ii].f25}
			data: {},
			newName: {f25: instr[ii].f25}
            ,href: instr[ii].href
		});
		arrRequests.push(instr[ii].r);
	}

	cbfunctions.push({
		update: cbf_update,
		cmp: cmp
	});

	var fields = {
		f25: { name: 'Navn', value: '', width: 138, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
		f6: { name: 'Seneste', value: '', width: 70,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
		f15: { name: '&#198;ndring', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};
	if(big === 'big'){
		fields = {
			f25: { name: 'Navn', value: '', width: 290, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
			f6: { name: 'Seneste', value: '', width: 80,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
			f14: { name: '+/-', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f15: { name: '%', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
			f17: { name: 'Tid', value: '', width: 100, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'}
		};
		cmp.columns.f14 = 0;
		cmp.columns.f17 = 0;
		cmp.renderers.f17 = {
			fn: defaultRenderers.f17
		};
	}
	var tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: ''
	};
	renderTable(tableConfig);
	if (sessionId === undefined) {
		startConnection();
	}	
};

Netdania.renderfrontPageInternationalIndexesBig = function(){
	Netdania.renderfrontPageInternationalIndexes('big');
};

Netdania.renderRelatedStockBlock = function(isin, id, type) {
    globalCurrentCmp++;
    window['relatedStockBlock' + globalCurrentCmp] = {
        type: 'quoteslookup',
        id: 'gridid-relatedStockBlock' + globalCurrentCmp,
        renderers: {
            f6: {
                fn: defaultRenderers.f6,
                hightlightInterval: 1000
            },
            f15: {
                fn: defaultRenderers.f15,
                hightlightInterval: 1000
            },
            f14: { fn: function(grid, rec, cellid, val, oldval, fxy) {

                val = parseFloat(val).toFixed(2);
                var val1 = parseFloat(rec.data.f15).toFixed(2);
                var value = '<span style="color:red;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
                if (val > 0) {
                    value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
                } else if (val < 0) {
                    value = '<span style="color:red;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
                }
                return value;
            },
                hightlightInterval: 1000
            },
            f25: {
                fn: function(grid, rec, cellid, val, oldval, fxy) {
                    var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=s';
                    if (val === undefined) { val = ""; }
                    return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 19) + '</a></span>';
                }
            }
        },
        records: [],
        columns: { f25: 0, f10: 0, f11: 0, f6: 0, f15: 0, f14: 0, f1003: 0, f39: 0 }
    };
    var relatedStockBlock = window['relatedStockBlock' + globalCurrentCmp];
    relatedStockBlock.provider = 'ms_dlc';
    var markets = ['DENMARK']; //, 'SWEDEN', 'FINLAND', 'ICELAND'];
    var divid = '';
    if(id===undefined)
    {
        divid = 'relatedStock' + globalCurrentCmp;
        window.document.write('<div id="' + divid + '"></div>');
    }
    else
    {
        if(type === 'l')
        {
            divid = 'losersGridDiv' + id;//globalCurrentCmp;
        }
        else
        {
            divid = 'winnersGridDiv' + id; 
        }
    }
    var fields = {};
    if(id===undefined)
    {
	 fields = {
		f25: { name: 'Papir', value: '', width: 140, hdTDcls: 'hdTDclsRel', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f10: { name: 'Bud', value: '', width: 56, hdTDcls: 'TDClsLeft', TDCls: 'TDClsLeft', cellCls: 'kursColumn', hdCellCls: 'gridHeaderRelStock' },
		f11: { name: 'Udbud', value: '', width: 56, hdTDcls: 'TDClsLeft', TDCls: 'TDClsLeft', cellCls: 'kursColumn', hdCellCls: 'gridHeaderRelStock' },
		f6: { name: 'Seneste', value: '', width: 56, hdTDcls: 'TDClsLeft', TDCls: 'TDClsLeft', cellCls: 'kursColumn', hdCellCls: 'gridHeaderRelStock' },
		f14: { name: '&#198;ndring', value: '', width: 92, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};
	}
	else
	{
	fields = {
    f25: { name: 'Aktie', value: '', width: 150, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
	f6: { name: 'Kurs', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
	f15: { name: '%', value: '', width: 85, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
    };
}
	relatedStockBlock.tableConfig = {
		instr: relatedStockBlock,
		fields: fields,
		contentClass: '',
		contentOddClass: '',
		renderTo: divid,
		startFrame: id===undefined?createFrameStartString(410, 'frame_' + globalCurrentCmp, 'KURSINFORMATION'):'', 
		endFrame: id===undefined?createFrameEndString():''
	    //,width: 288
	    ,align: id===undefined?'':'left'
	};
	startBoxLookup(relatedStockBlock, markets, isin,undefined,[1]);
};

function Index_renderChart(symbol, intraday) {
    //globalCurrentCmp++;
    FrontPageBox_renderChart('IndexChartId' + globalCurrentCmp, symbol, 'ms_dlc', false, 630, 300, intraday);
}

function Index_renderTables(isin, symbol) {
    window['IndexId' + globalCurrentCmp] = {
        id: 'gridid-IndexId',
        current: "" + globalCurrentCmp,
        renderers: {
       f6: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				var cellElDup = document.getElementById(cellid + '-dup');
				val = parseFloat(val).toFixed(2);
				var value = '<span>' + val + '</span>';
				if (val > oldval) {
					value = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
				} else if (val < oldval) {
					value = '<span style="color:red;background-color:#E9E9EA">' + val + '</span>';
				}
				cellElDup.innerHTML = value;
				setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
				return value;
			},
				hightlightInterval: 1000
			},
            f25: { fn: function(grid, rec, cellid, val, oldval, fxy) {
                //document.getElementById('boxInstrName' + 'infoShare' + grid.current).innerHTML = val.toUpperCase();
                return '<span>' + val + '</span>';
            },
                hightlightInterval: 1000
            },
            f17: { fn: function(grid, rec, cellid, val, oldval, fxy) {
                if (val === "N/A" || val === undefined) {
                    return "N/A";
                }
                var dateUnf = new Date(val * 1000);

                return '<span>' + dateFormat(dateUnf, "dd. mmmm yyyy, HH:MM").toLowerCase() +'</span>';
            },
                hightlightInterval: 1000
            },
            f14: { fn: function(grid, rec, cellid, val, oldval, fxy) {
                var upImagePath = "http://penge.netdania.com/js/images/up.png";
                var downImagePath = "http://penge.netdania.com/js/images/down.png";

                var cellElDup = document.getElementById(cellid + '-dup');
                val = parseFloat(val).toFixed(2);
                var val1 = parseFloat(rec.data.f15).toFixed(2);

                var value = '<span style="color:red;background-color:#E9E9EA">' + val + ' (' + val1 + '%)</span>';
                var svalue = '<span>' + val + '</span>';
                if (val > 0) {
                    value = '<span style="color:#83A508;background-color:#E9E9EA"><img src="' + upImagePath + '"> ' + val + ' (' + val1 + '%)</span>';
                    svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
                } else if (val < 0) {
                    value = '<span style="color:red;background-color:#E9E9EA"><img src="' + downImagePath + '">' + val + ' (' + val1 + '%)</span>';
                    svalue = '<span style="color:#83A508;background-color:#E9E9EA">' + val + '</span>';
                }
                cellElDup.innerHTML = svalue;
                setTimeout('reset_highlight("' + cellid + '-dup")', grid.renderers[fxy].hightlightInterval);
                return value;
            },
                hightlightInterval: 1000
            },
            f15: { 
				fn: defaultRenderers.f15,
				hightlightInterval: 1000
			},
            f32: { fn: function(grid, rec, cellid, val, oldval, fxy) {
                val = parseFloat(val).toFixed(2);
                var value = '<span>' + val + '%</span>';
                return value;
            },
                hightlightInterval: 1000
            },
            f31: { fn: function(grid, rec, cellid, val, oldval, fxy) {
                val = parseFloat(val).toFixed(2);
                var value = '<span>' + val + '</span>';
                return value;
            },
                hightlightInterval: 1000
            }
        },
        records: [
			{
			    id: 'recid-i',
			    data: {}
			}
		],
        columns: { f6: 0, f5: 0, f14: 0, f8: 0, f15: 0, f19: 0, f2: 0, f31: 0, f3: 0, f32: 0, f4: 0, f21: 0, f1: 0, f22: 0, f25: '', f17: '', f6076: 0, f6086: 0, f6088: 0, f6314: 0, f6077: 0, f6087: 0, f6299: 0, f6315: 0 }
    };
    var cmp = window['IndexId' + globalCurrentCmp];
    var provider = 'ms_dlc';

    

    var rec = getReqObjPrice(symbol, provider, true);
    var recid = 'recid-' + rec.i;
    cmp.records[0].id = recid;
    arrRequests.push(rec);

    cbfunctions.push({
        update: cbf_update,
        cmp: cmp
    });

    var topTable = {
        f6: { name: 'Seneste kurs', value: 'N/A' }, f14: { name: '&#198;ndring', value: 'N/A' },
        f17: { name: 'Tid', value: 'N/A' }, f39: { name: 'ISIN', value: 'N/A' }
    };

    var middleTable = {
        f6: { name: 'Seneste kurs', value: 'N/A' }, f5: { name: 'Volumen', value: 'N/A' },
        f14: { name: '&#198;ndring', value: 'N/A' }, f8: { name: 'Antal handler i dag', value: 'N/A' },
        f15: { name: '&#198;ndring i %', value: 'N/A' }, f19: { name: 'Kurs ult. sidster', value: 'N/A' },
        f2: { name: 'Dagens hjeste', value: 'N/A' }, f31: { name: '&#197;rets &#230;ndring', value: 'N/A' },
        f3: { name: 'Dagens laveste', value: 'N/A' }, f32: { name: '&#197;rets &#230;ndring i %', value: 'N/A' },
        f4: { name: '&#197;benkurs', value: 'N/A' }, f21: { name: '52 ugers h&#248;jeste', value: 'N/A' },
        f1: { name: 'Lukkekurs', value: 'N/A' }, f22: { name: '52 ugers laveste', value: 'N/A' }
    };


    renderTopTable(topTable, recid, isin, 630);
    renderMiddleTable(middleTable, recid, 630, 'NI', 7);
    if (sessionId === undefined) {
        startConnection();
    } 
}

function renderIndexCts(cmpId, markets, instr) {
    window[cmpId + globalCurrentCmp] = {
        type: 'quoteslookup',
        id: 'gridid-' + cmpId + globalCurrentCmp,
        renderers: {
        f6: {
            fn: defaultRenderers.f6,
            hightlightInterval: 1000
        },
        f15: {
            fn: defaultRenderers.f15,
            hightlightInterval: 1000
        },
            f14: {
            fn: defaultRenderers.f14,
            hightlightInterval: 1000
            },
            f25: {
                fn: function(grid, rec, cellid, val, oldval, fxy) {
                    var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=s';
                    if (val === undefined) { val = ""; }
                    return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 23) + '</a></span>';
                }
            },           
			f17: { fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd/mm HH:MM").toLowerCase() +'</span>';
			},
				hightlightInterval: 1000
			}
        },
        records: [],
        columns: { f25: 0, f6: 0, f14: 0, f15: 0, f17: 0 }
    };
    var IndexIdCts = window[cmpId + globalCurrentCmp];
    IndexIdCts.provider = 'ms_dlc';
    var divid = cmpId + globalCurrentCmp;
    window.document.write('<div id="' + divid + '"></div>');

	var fields = {
		f25: { name: 'Navn', value: '', width: 210, hdTDcls: 'hdTDclsRel', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f6: { name: 'Seneste', value: '', width: 96, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f14: { name: '+/-', value: '', width: 112, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f15: { name: '%', value: '', width: 100, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f17: { name: 'Tid', value: '', width: 112, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' }
	};

	IndexIdCts.tableConfig = {
		instr: IndexIdCts,
		fields: fields,
		contentClass: '',
		contentOddClass: '',
		renderTo: divid
		//,width: 288
	};
	
	startBoxLookup(IndexIdCts, markets, undefined,instr, [1]);
}

function Index_renderBlockStart(width){
    var html = '<table cellpadding="0" cellspacing="0" width=' + width + '><tr><td>';
    window.document.write(html);
}

function Index_renderBlockEnd(){
    var html = '</td></tr></table>';
    window.document.write(html);
}

function renderIndex(isin, symbol, cmpId, market,instr) {
    globalCurrentCmp++;
    Index_renderBlockStart(630);
    Index_renderTables(isin, symbol);
    Index_renderChart(symbol);
    renderIndexCts(cmpId, market,instr);
    Index_renderBlockEnd();
}

Netdania.renderOMXC20Index = function() {
    renderIndex('DX0000001376', 'OMXC20.co', 'OMXC20Idx', ['DENMARK#KFX']);
};

Netdania.renderOMXC20LCapIdx = function() {
    renderIndex('DX0000000539', 'OMXCCAPGI.co', 'OMXC20LCIdx', ['DENMARK^CAP=2']);
};

Netdania.renderOMXC20MCapIdx = function() {
    renderIndex('SE0001776683', 'OMXCMCGI.co', 'OMXC20MCIdx', ['DENMARK^CAP=1']);
};

Netdania.renderOMXC20SCapIdx = function() {
    renderIndex('SE0001776709', 'OMXCSCGI.co', 'OMXC20SCIdx', ['DENMARK^CAP=0']);
};

Netdania.renderOMXS30Idx = function() {
    renderIndex('SE0000337842', 'OMXS30.st', 'OMXS30Idx', ['SWEDEN#OMXS30']);
};

Netdania.renderOMXS30LCIdx = function() {
    renderIndex('SE0002402800', 'OMXS30GI.st', 'OMXS30LCIdx', ['SWEDEN^CAP=2']); //OMXNLCEURGI
};

Netdania.renderOMXS30MCIdx = function() {
    renderIndex('SE0001775818', 'OMXSMCGI.st', 'OMXS30MCIdx', ['SWEDEN^CAP=1']);
};

Netdania.renderOMXS30SCIdx = function() {
    renderIndex('SE0001775826', 'OMXSSCGI.st', 'OMXS30SCIdx', ['SWEDEN^CAP=0']);
};

Netdania.renderOMXH25Idx = function() {
    renderIndex('SE0001775826', 'OMXH25.he', 'OMXSH25Idx', ['FINLAND#OMXH25']);
};

Netdania.renderOMXLCH25Idx = function() {
    renderIndex('FI0008900220', 'OMXHGI.he', 'OMXLCH25Idx', ['FINLAND^CAP=2']);
};

Netdania.renderOMXMCH25Idx = function() {
    renderIndex('SE0001775743', 'OMXHMCGI.he', 'OMXMCH25Idx', ['FINLAND^CAP=1']);
};

Netdania.renderOMXSCH25Idx = function() {
    renderIndex('SE0001775768', 'OMXHSCGI.he', 'OMXSCH25Idx', ['FINLAND^CAP=0']);
};

Netdania.renderOMXI6Idx = function() {
    renderIndex('IS0000018935', 'OMXI6CAPEUR.st', 'OMXI6Idx', ['ICELAND#OMXI6']);
};

Netdania.renderOMXICEAll = function() {
    renderIndex('IS0000018935', 'OMXIGI.st', 'OMXICEAll', ['ICELAND']);
};

Netdania.renderAllDanishShares = function() {
    globalCurrentCmp++;
    renderIndexCts('allDanishShares', ['DENMARK']);
};

renderIndexTop = function(isin, symbol, intraday) {
    globalCurrentCmp++;
    if (intraday === undefined) {
        intraday = true;
    }
    Index_renderBlockStart(630);
    Index_renderTables(isin, symbol);
    Index_renderChart(symbol, intraday);
    Index_renderBlockEnd();
};

Netdania.renderDAX = function(){
    renderIndexTop('DE0008469008', 'DAX.de');
};

Netdania.renderCAC40 = function() {
    renderIndexTop('FR0003500008', '!PX1/FR');
};

Netdania.renderEN100 = function() {
    renderIndexTop('FR0003502079', '!N100/FR');     
};

Netdania.renderOBX = function() {
    renderIndexTop('NO0007035327', 'OSEBX.ol', false);
};

Netdania.renderNikkei = function() {
    renderIndexTop('XC0009692440', '100000018.os', false);
};

Netdania.renderHangSeng = function() {
    renderIndexTop('N/A', '!HKHSX', false);
};

Netdania.renderDJI = function() {
    renderIndexTop('US2605661048', '!DJI', false);
};

Netdania.renderNasdaq = function() {
    renderIndexTop('US12490H1041', 'NDX', false);
};

Netdania.renderSP500 = function() {
    renderIndexTop('US78378X1072', 'SPX', false);
};

Netdania.renderEnergi = function(){
	var instr = ['FO-ATLA/CSE.co','TORM.co'];
	renderIndex('DX0000000291', 'CX10PI.co', 'ENERGI', ['DENMARK'], instr);
};

Netdania.renderFinans = function(){
	var instr = ['AARHUS.co','ALMB.co','ALMBF/B.co','ALMBP/B.co','AMAG.co','ASGGRO.co','BERL3/B.co','BERLIV/B.co','BLVIS.co','BNORDIK/CSE.co','DANSKE.co','DEH.co','DELTAQ.co','DIBA.co','DJUR.co','DKTI.co','FEI.co','FEII.co','FO-EIK/CSE.co','FPEPI.co','FPLIM.co','FPMER.co','FPOPT.co','FPPAR.co','FPPEN.co','FPSAFE.co','GERHSP/B.co','GRLA.co','HOLD.co','HVETBO.co','HVID.co','JDAN.co','JMI.co','JYSK.co','KLIMA.co','KRE.co','LASP.co','LL/A.co','LL/B.co','LOLB.co','LUXOR/B.co','MAX.co','MNBA.co','MORS.co','NDA/DKK.co','NEWCAP.co','NORDJB.co','NRDC.co','NRDF.co','NRSU.co','OJBA.co','PRIMOF.co','RILBA.co','SALB.co','SCANP/B.co','SCD.co','SCHAUP.co','SJGR.co','SKJE.co','SPALOL.co','SPB.co','SPEAS.co','SPFA.co','SPHIM.co','SPNFI.co','SPB.co','SVEND.co','SYDB.co','TKDV.co','TNDR.co','TOP.co','TOTA.co','TOWER.co','TRYG.co','VEFY.co','VIINT.co','VIND.co','VIPRO.co','VJBA.co','VORD.co'];
	renderIndex('DX0000000297', 'CX40PI.co', 'FINANS', ['DENMARK'], instr);
};

Netdania.renderMaterialer = function(){
	var instr = ['AURI/B.co','HART.co','CHR.co','FLUG/B.co','HH.co','IMAIL/B.co','NZYM/B.co','NUNA.co','SPG.co'];
	renderIndex('DX0000000298', 'CX15PI.co', 'MATERIALER', ['DENMARK'], instr);
};

Netdania.renderIndustri = function(){
	var instr = ['MAERSK/A.co','MAERSK/B.co','ARKIL/B.co','FO-AIR/CSE.co','KLEE/B.co','AOJ/P.co','CIMBER.co','DNORD.co','DANIO.co','DANTH.co','DFDS.co','DLH/B.co','DSV.co','ERRIA.co','EXP/B.co','BORD/B.co','FLS.co','G4S.co','GJ.co','HOEJ/A.co','HOEJ/B.co','KBHL.co','MIGA/B.co','MOLS.co','MT/B.co','NKT.co','NORDIC.co','NTR/B.co','PAAL/B.co','RIAS/B.co','RBLN/B.co','ROCK/A.co','ROCK/B.co','ROV.co','SANI/B.co','SAS/DKK.co','SAT.co','SCFT.co','SCHO.co','SKAKO.co','SOLAR/B.co','SPNC/A.co','SPNC/B.co','USEA.co','VWS.co'];
	renderIndex('DX0000000301', 'CX20PI.co', 'Industri', ['DENMARK'], instr);
};

Netdania.renderForbrugsgoder = function(){
	var instr = ['AAB.co','AM/B.co','BO.co','BOCON/B.co','BIF/B.co','DANT.co','EGE/B.co','GABR.co','GYLD/A.co','GYLD/B.co','IC.co','LAST/B.co','NORTHM.co','PARKEN.co','RELLA.co','SBS.co','SIF/B.co','TIV.co','VIBHK.co','ELITE/B.co'];
	renderIndex('DX0000000292', 'CX25PI.co', 'Forbrugsgoder', ['DENMARK'], instr);
};

Netdania.renderKonsumentvarer = function(){
	var instr = ['CARL/A.co', 'CARL/B.co', 'DCO.co', 'FFARMS.co', 'HARB/B.co', 'RBREW.co', 'UIE.co', 'UPB.co', 'EAC.co'];
	renderIndex('DX0000000294', 'CX30PI.co', 'Konsumentvarer', ['DENMARK'], instr);
};

Netdania.renderSundhedspleje = function(){
	var instr = ['AFFI.co', 'ALK/B.co', 'AMBU/B.co', 'BAVA.co', 'BIOPOR.co', 'CHEMM.co', 'COLO/B.co', 'EXQ.co', 'GEN.co', 'GN.co', 'LCP.co', 'LUN.co', 'NEUR.co', 'NOVO/B.co', 'TOPO.co', 'WDH.co', 'OSSR/DKK.co'];
	renderIndex('DX0000000295', 'CX35PI.co', 'Sundhedspleje', ['DENMARK'], instr);
};

Netdania.renderIT = function(){
	var instr = ['CBRAIN.co', 'COLUM.co', 'COM.co', 'EI.co', 'NETOP.co', 'RTX.co', 'SIM.co', 'THRAN.co', 'TPSL.co', 'TRIFOR.co'];
	renderIndex('DX0000000299', 'CX45PI.co', 'IT', ['DENMARK'], instr);
};

Netdania.renderTelekommunikation = function(){
	var instr = ['TDC.co'];
	renderIndex('DX0000000300', 'CX50PI.co', 'Telekommunikation', ['DENMARK'], instr);
};

Netdania.renderForsyning = function(){
	var instr = ['GW.co','GES.co'];
	renderIndex('DX0000000296', 'CX55PI.co', 'Forsyning', ['DENMARK'], instr);
};

function renderBondsCategory(cmpId, markets, isin, big) {
    globalCurrentCmp++;
	window[cmpId + globalCurrentCmp] = {
        type: 'quoteslookup',
        id: 'gridid-' + cmpId + globalCurrentCmp,
        renderers: {
        f6: {
            fn: defaultRenderers.f6,
            hightlightInterval: 1000
        },
        f15: {
            fn: defaultRenderers.f15,
            hightlightInterval: 1000
        },
		f14: {
			fn: defaultRenderers.f14,
			hightlightInterval: 1000
		},
		f5013: {
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=b';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 16) + '</a></span>';
			}
		},           
		f17: { 
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd/mm HH:MM").toLowerCase() +'</span>';
			},
			hightlightInterval: 1000
		}
        },
        records: [],
        columns: { f5013: 0, f39: 0, f6: 0, f14: 0, f15: 0, f5547: 0, f5556: 0, f17: 0 }
    };
    var cmp = window[cmpId + globalCurrentCmp];
    cmp.provider = 'ms_dlc';
    var divid = cmpId + globalCurrentCmp;
    window.document.write('<div id="' + divid + '"></div>');

	var fields = {
		f5013: { name: 'Navn', value: '', width: 140, hdTDcls: 'hdTDclsRel', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f39: { name: 'ISIN', value: '', width: 90, hdTDcls: 'TDClsLeft', TDCls: 'TDClsLeft', hdCellCls: 'gridDefaultHeader' },
		f6: { name: 'Seneste', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f14: { name: '+/-', value: '', width: 50, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f15: { name: '%', value: '', width: 70, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f5547: { name: 'Kupon', value: '', width: 50, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		//f997: { name: 'Udl&#248;bsdato', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
        f5556: { name: 'Udl&#248;bsdato', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f17: { name: 'Tid', value: '', width: 90, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' }


	};
	if(big === 'notbig'){
		cmp.columns = { f6: 0, f15: 0, f5013: 0};
		fields = {
			f5013: { name: 'Navn', value: '', width: 150, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
			f6: { name: 'Kurs', value: '', width: 64, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
			f15: { name: '%', value: '', width: 74, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
		};
	}
	cmp.tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: '',
		renderTo: divid
		//,width: 288
	};
	startBoxLookup(cmp, markets, isin,undefined, [2], 100);
}

Netdania.renderFrontPageBox_BondsByISIN = function(isin){
	renderBondsCategory('FrontPageBoxBigBonds', ['DENMARK'], isin, 'notbig');
}

Netdania.renderFrontPageBoxBig_BondsByISIN = function(isin){
	renderBondsCategory('FrontPageBoxBonds', ['DENMARK'], isin);
}

Netdania.renderStructuredBonds = function(){
	renderBondsCategory('StructuredBonds', ['DENMARK#STRUCTURED BONDS']);
};

Netdania.renderCorporateBonds = function(){
	renderBondsCategory('CorporateBonds', ['DENMARK#CORPORATE']);
};

Netdania.renderBenchmarkBonds = function(){
	renderBondsCategory('BenchmarkBonds', ['DENMARK#BENCHMARK']);
};

Netdania.renderBRFKreditBonds = function(){
	var isin = ['DK00057','DK00065','DK00078','DK00087','DK00093','LU040','LU04802','LU0460381261','LU0523371192'];
	renderBondsCategory('BRFKreditBonds', ['DENMARK'], isin);
};

Netdania.renderDLRKreditBonds = function(){
	var isin = ['DK00063','LU039958','LU04681','LU0470431825','LU0518045975'];
	renderBondsCategory('DLRKreditBonds', ['DENMARK'], isin);
};

Netdania.renderRealKreditBonds = function(){
	var isin = ['DK00022','DK00046','DK00056','DK00064','DK00067','DK00070','DK00071','DK00077','DK00092','LU03956','LU04878','LU0430093624','LU0450438196','LU0516523395'];
	renderBondsCategory('RealKreditBonds', ['DENMARK'], isin);
};

Netdania.renderNykreditRealkreditASBonds = function(){
	var isin = ['DK00023','DK00045','DK00048','DK00050','DK00051','DK00052','DK00054','DK00058','DK00062','DK00068','DK00069','DK00072','DK00073','DK00074','DK00075','DK00076','DK00079','DK00081','DK00084','DK00085','DK00090','DK00091','DK00097','LU039200','LU0418','LU0455','LU048355','LU0448746015','LU0469205974','LU0471616655','LU0516444170'];
	renderBondsCategory('NykreditRealkreditASBonds', ['DENMARK'], isin);
};

Netdania.renderNordeaKreditBonds = function(){
	var isin = ['DK00020','LU046280','LU04838','LU050388','LU0415288421','LU0514466159'];
	renderBondsCategory('NordeaKreditBonds', ['DENMARK'], isin);
};

Netdania.renderLRRealKreditBonds = function(){
	var isin = ['DK00049'];
	renderBondsCategory('LRRealKreditBonds', ['DENMARK'], isin);
};

Netdania.renderKommuneKreditBonds = function(){
	var isin = ['DK00089'];
	renderBondsCategory('KommuneKreditBonds', ['DENMARK'], isin);
};

Netdania.renderTotalkreditASBonds = function(){
	var isin = ['DK00047'];
	renderBondsCategory('TotalkreditASBonds', ['DENMARK'], isin);
};

Netdania.renderUnikreditBonds = function(){
	var isin = ['DK000200','DK0002011469','DK0002015106'];
	renderBondsCategory('RealKreditBonds', ['DENMARK'], isin);
};

Netdania.renderDanskeKreditRealkreditaktieselskabBonds = function(){
	var isin = ['DK00032'];
	renderBondsCategory('UnikreditBonds', ['DENMARK'], isin);
};

Netdania.renderForoiaBonds = function(){
	var isin = ['DK0030172812','DK0030236054'];
	renderBondsCategory('ForoiaBonds', ['DENMARK'], isin);
};

Netdania.renderFIHRealkreditBonds = function(){
	var isin = ['DK00026'];
	renderBondsCategory('FIHRealkreditBonds', ['DENMARK'], isin);
};

Netdania.renderKongerigetBonds = function(){
	var isin = ['DK00096'];
	renderBondsCategory('KongerigetBonds', ['DENMARK'], isin);
};

Netdania.renderFixedIncomeBonds = function(){
	var isin = ['SE0003360825','SE0003465236'];
	renderBondsCategory('FixedIncomeBonds', ['DENMARK'], isin);
};

Netdania.renderDanmarkShipskreditBonds = function(){
	var isin = ['DK00041'];
	renderBondsCategory('DanmarkShipskreditBonds', ['DENMARK'], isin);
};

Netdania.renderCollateralizedMortgageBonds = function(){
	var isin = ['DK000110'];
	renderBondsCategory('CollateralizedMortgageBonds', ['DENMARK'], isin);
};

Netdania.renderGovernementBonds = function(){
	var isin = ['DK00099','DK00098'];
	renderBondsCategory('GovernementBonds', ['DENMARK'], isin);
};

function renderFPFunds(cmpId, markets, isin, instr, big) {
    globalCurrentCmp++;
	window[cmpId + globalCurrentCmp] = {
        type: 'quoteslookup',
        id: 'gridid-' + cmpId + globalCurrentCmp,
        renderers: {
        f6: {
            fn: defaultRenderers.f6,
            hightlightInterval: 1000
        },
        f15: {
            fn: defaultRenderers.f15,
            hightlightInterval: 1000
        },
		f14: {
			fn: defaultRenderers.f14,
			hightlightInterval: 1000
		},
		f25: {
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol);
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 16) + '</a></span>';
			}
		},           
		f17: { 
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd/mm HH:MM").toLowerCase() +'</span>';
			},
			hightlightInterval: 1000
		}
        },
        records: [],
        columns: { f25: 0, f39: 0, f6: 0, f14: 0, f15: 0,f2: 0,  f3: 0, f17: 0 }
    };
    var cmp = window[cmpId + globalCurrentCmp];
    cmp.provider = 'ms_dlc';
    var divid = cmpId + globalCurrentCmp;
    window.document.write('<div id="' + divid + '"></div>');

	var fields = {
		f25: { name: 'Navn', value: '', width: 115, hdTDcls: 'hdTDclsRel', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
		f39: { name: 'ISIN', value: '', width: 90, hdTDcls: 'TDClsLeft', TDCls: 'TDClsLeft', hdCellCls: 'gridDefaultHeader' },
		f6: { name: 'Seneste', value: '', width: 80, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
		f14: { name: '+/-', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f15: { name: '%', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f2: { name: 'H&#248;j', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
		f3: { name: 'Lav', value: '', width: 65, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
		f17: { name: 'Tid', value: '', width: 85, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' }


	};
	if(big === 'notbig'){
		cmp.columns = { f6: 0, f15: 0, f25: 0};
		fields = {
			f25: { name: 'Navn', value: '', width: 138, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
			f6: { name: 'Kurs', value: '', width: 64, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
			f15: { name: '%', value: '', width: 74, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
		};
	}
	cmp.tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: '',
		renderTo: divid
		//,width: 288
	};
	startBoxLookup(cmp, markets, isin,instr,[7]);
}

function renderFPCommodities(cmpId, markets, isin,instr, big) {
    globalCurrentCmp++;
	window[cmpId + globalCurrentCmp] = {
        type: 'quoteslookup',
        id: 'gridid-' + cmpId + globalCurrentCmp,
        contentType: 'indexes',
        renderers: {
        f6: {
            fn: defaultRenderers.f6,
            hightlightInterval: 1000
        },
        f15: {
            fn: defaultRenderers.f15,
            hightlightInterval: 1000
        },
		f14: {
			fn: defaultRenderers.f14,
			hightlightInterval: 1000
		},
		f25: {
			fn: (big==='notbig')?
			function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=com';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 16) + '</a></span>';
			}
			:
			function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol);
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + stripHeadline(val, 25) + '</a></span>';
			}
		},           
		f17: { 
			fn: function(grid, rec, cellid, val, oldval, fxy) {
				if (val === "N/A" || val === undefined) {
					return "N/A";
				}
				var dateUnf = new Date(val * 1000);

				return '<span>' + dateFormat(dateUnf, "dd/mm HH:MM").toLowerCase() +'</span>';
			},
			hightlightInterval: 1000
		}
        },
        records: [],
        columns: { f25: 0, f6: 0, f14: 0, f15: 0, f2: 0, f3: 0, f17: 0}
    };
    var cmp = window[cmpId + globalCurrentCmp];

    if(instr!== undefined && instr[0].s !== undefined && instr[0].href !== undefined){

        cmp.renderers.f25.fn = function(grid, rec, cellid, val, oldval, fxy) {
				//var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=com';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + rec.data.href + '">' + val + '</a></span>';
			}
    }
	else if(instr!== undefined && instr[0].s !== undefined){
		cmp.renderers.f25.fn = function(grid, rec, cellid, val, oldval, fxy) {
				var srclink = Drupal.settings.isinPath.replace('###ISIN###', rec.isin).replace('####SYMBOL####', rec.symbol) + '&t=com';
				if (val === undefined) { val = ""; }
				return '<span style="font-family: verdana; font-size: 11px;color: #336699" title="' + val + '"><a class="xgrid" href="' + srclink + '">' + val + '</a></span>';
			}
	}
    cmp.provider = 'ms_dlc';
    var divid = cmpId + globalCurrentCmp;
    window.document.write('<div id="' + divid + '"></div>');
	
	var fields = {
		f25: { name: 'Navn', value: '', width: 210, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass'},
		f6: { name: 'Seneste', value: '', width: 80,hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader'},
		f14: { name: '+/-', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f15: { name: '%', value: '', width: 70, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' },
		f2: { name: 'H&#248;j', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
		f3: { name: 'Lav', value: '', width: 60, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader'},
		f17: { name: 'Tid', value: '', width: 90, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
	};
	
	if(big === 'notbig'){
		cmp.columns = { f6: 0, f15: 0, f25: 0};
		fields = {
			f25: { name: 'Navn', value: '', width: 150, hdTDcls: 'hdTDcls', TDCls: 'TDCls', cellCls: 'nameColumn', hdCellCls: 'nameHeaderClass' },
			f6: { name: 'Kurs', value: '', width: 64, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'kursColumn', hdCellCls: 'gridDefaultHeader' },
			f15: { name: '%', value: '', width: 74, hdTDcls: 'TDClsRight', TDCls: 'TDClsRight', cellCls: 'changeColumn', hdCellCls: 'gridChangeHeader' }
		};
	}
	cmp.tableConfig = {
		instr: cmp,
		fields: fields,
		contentClass: '',
		contentOddClass: '',
		renderTo: divid
		//,width: 288
	};
	startBoxLookup(cmp, markets, isin,instr, [0,2,3]);
}

function startBoxLookup(cmp, markets, isin, instr, type, max){
	
	cmp.requests = [];
	cmp.requestItems = [];
	
	if(instr !== undefined){
		for (var i = 0; i < instr.length; i++) {
			var s = '';
			var data = {};
			
            if(instr[i].s!== undefined){
				s = instr[i].s;
				
                if(instr[i].f25!== undefined && instr[i].href!== undefined)
                {
                    data = {f25: instr[i].f25, href: instr[i].href}
                }
                else if(instr[i].f25!== undefined){
					data = {f25: instr[i].f25}
				}

			}else{
				s = instr[i];
			}

			var req = getReqObjPrice(s, cmp.provider, true);
			var r = {
				id: "recid-" + req.i,
				data: data
			};
			r.symbol = s;
			cmp.records.push(r);
			cmp.requestItems.push(req);
		}
		cbfunctions.push({ cmp: cmp, update: cbf_update });
		renderTable(cmp.tableConfig);
		appendRequests(cmp.requestItems);
	}else{
		var lookupReqs = [];
		if(max === undefined){max = 10000;}
		for (i = 0; i < markets.length; i++) {
			if(isin!==undefined){
				for (j = 0; j < isin.length; j++) {
					var req = getReqObjInstrumentLookup('ISIN@' + markets[i], 1, isin[j], 1, type, max, cmp.provider);
					lookupReqs.push(req);
					cmp.requests.push(req.i);
				}
			}else{
				var req = getReqObjInstrumentLookup(markets[i], 1, '', 1, type, max, cmp.provider);
				lookupReqs.push(req);
				cmp.requests.push(req.i);
			}
		}
		appendRequests(lookupReqs);
		if(cmp.cbFunction !== undefined)
		{
		    cbfunctions.push({
			    update: cmp.cbFunction,
			    cmp: cmp
		    });
		}else
		{
		    cbfunctions.push({
			    update: cbf_lookup,
			    cmp: cmp
		    });
		}
	}
    if (sessionId === undefined) {
        startConnection();
    }
}

Netdania.renderAktierBrancherFunds = function(){
	var instr = ['ALIMTK.co','INIAEA.co','BAIGF.co','BPTNRE.co','DKIEEUIX.co','DKIKTR.co','DEIEEA.co','EIIKLM.co','IIIBEG.co','JYIGLE.co','LDIMK.co','NDIKM.co','SPIEFA.co','SYIKM.co'];
	renderFPFunds('AktierBrancherFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierDanmarkFunds = function(){
	var instr = ['BAIDK.co','BLIDA.co','CAIDKA.co','DKIDKIX.co','DKIDK.co','DKIDKA.co','DKIDKSC.co','DEIDKSMALLCAP.co','DEIFDA.co','EIIDK.co','GRIDKA.co','HAIDK.co','SMCAPDK.co','JYIDKA.co','LSIDK.co','LDIDKAKT.co','NDIDK.co','NDIDKA.co','NDIDAF.co','NYIDA.co','NYIDAA.co','SEIDKA.co','SEIDAA.co','SPIOMXC20.co','SYIDK.co'];
	renderFPFunds('AktierDanmarkFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierEmergingMarketsFunds = function(){
	var instr = ['BAINEMA.co','DKIENEMD.co','DKINYM.co','DKINMAKK.co','DKINMSC.co','GRIEMA.co','IIINEW.co','JYINYA.co','NDIEM.co','SEINEME.co','SKIKON.co','SPINAM.co','SYIAM.co','SYIBRI.co','SYIBRIKAKK.co'];
	renderFPFunds('AktierEmergingMarketsFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierEnkeltlandeFunds = function(){
	var instr = ['ABIRUS.co','DKIKI.co','DKITYSK.co','HAIKI.co','JYIBA.co','JYIINA.co','JYIKI.co','JYITYR.co','NDIIND.co','NDIKI.co','SYITYSKLAND.co'];
	renderFPFunds('AktierEnkeltlandeFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierEuropaFunds = function(){
	var instr = ['ABIEU.co','ALIEUA.co','ATRIUM.co','BAIEUA.co','BAIPEUAK.co','CAIEUR.co','DKIEUBI.co','DKIEUFOK.co','DKIEUHUDBA.co','DKIEUIX.co','DKIEUIXBNP.co','DKIEREUAE.co','DKIEU.co','DKIEFA.co','DKIEUHU.co','DKIEVA.co','DKIEUFOK.co','EIIEUF.co','HAIEU.co','JYIEUA.co','MMIEUR.co','LDIEUAKT.co','MMIEUR.co','MMIEUA.co','NDIEU.co','NDIEUSC.co','NDIDAF.co','NYIIEUR.co','NYIIEURAKK.co','NYISP.co','SEINESC.co','SEIEHU.co','SEIESP.co','SEIFO.co','SPIEUG.co','SPIEUC.co','SPIEUV.co','SPIEUS.co','SYIEUL.co','SYIEU.co'];
	renderFPFunds('AktierEuropaFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierFjernFunds = function(){
	var instr = ['BAIAS.co','DKIFJIX.co','DKIFJE.co','EIIEOEST.co','EIIES.co','HAIFJ.co','JYIFJE.co','MMIPAC.co','MMIPAA.co','NDIFJE.co','SPIFJE.co','SYIFJE.co','SYIFJERNAKK.co'];
	renderFPFunds('AktierFjernFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierGlobaltFunds = function(){
	var instr = ['ALIGLO.co','BAIBA.co','BAIGE.co','BAIPB.co','BLIGA.co','CAIGLO.co','DKIGLOIX.co','DKIGLOIX2.co','DKIGLOIXVAKK.co','DKIGLOP.co','DKIGLOSP.co','DKIGLOSPAKK.co','DKIGLOSP2.co','DKIGLOV.co','DKIENGLO.co','DKIEREUAE.co','DKIIAKT.co','EIIAKTHU.co','EIIAKTHUAKK.co','GRISEL.co','HAIVER.co','IIIGLO.co','JYIAKP.co','JYIFAV.co','JYIGLO.co','JYIGAS.co','LSIVER.co','LDIAKT.co','LDIVALUE.co','MSIVAK.co','NGIVAL.co','NDIA.co','NDIAKTII.co','NDIGLOV.co','NDIGV.co','NDISTAA.co','NDIVER.co','NYIGLO.co','NYIGSA.co','NYISPA.co','SKIGLO.co','SKIVEK.co','SPIDJW.co','SPIGLAMRI.co','SPICUM.co','SSIEGV.co','SPIVA.co','SRIGAU.co','STIGA.co','SYIVER.co','TEIKSP.co','VAIBLUE.co','VAIGLO.co','VAIGAK.co','WWINV.co'];
	renderFPFunds('AktierGlobaltFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierHealthCareFunds = function(){
	var instr = ['DKISIX.co','DKIBIO.co','EIISUN.co','GRIHEC.co','JYIBIO.co','MMIHCE.co','MMIHCA.co','NDIHEA.co'];
	renderFPFunds('AktierHealthCareFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierITBranchenFunds = function(){
	var instr = ['DKITEK.co','JYIIT.co','MMITEK.co','MMITEA.co','NDIIT.co','SYIIT.co'];
	renderFPFunds('AktierITBranchenFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierJapanFunds = function(){
	var instr = ['JYIJAP.co','MMIJAP.co','MMIJAA.co','NDIJAP.co','NYIIJP.co','NYIIJPAKK.co','SEINJH.co','SPIJAG.co','SPIJAS.co','SPIJAV.co','VAIJAP.co'];
	renderFPFunds('AktierJapanFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierLatinamerikaFunds = function(){
	var instr = ['BAILAT.co','DKILAT.co','HAILAT.co','JYILAT.co','NDILATIN.co','SYILAT.co'];
	renderFPFunds('AktierLatinamerikaFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierNordamerikaFunds = function(){
	var instr = ['ABIUSA.co','DKIUSAVADK.co','DKIUSA.co','HAINAM.co','JYIUSA.co','LSINA.co','MMIUSA.co','MMIUSK.co','NDIUSA.co','NYIIUSA.co','NYIIUSAAKK.co','SEINAI.co','SPIUSG.co','SPIUSS.co','SPIUSV.co','SPISP.co','SYIUSA.co'];
	renderFPFunds('AktierNordamerikaFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierNordenFunds = function(){
	var instr = ['ABINO.co','ALINA.co','INIANA.co','DKINOIX.co','EIINO.co','ETIVAEL.co','GRINA.co','HAINOR.co','JYINOA.co','NDINOR.co','NDINSC.co','SEINAK.co','SYISCA.co'];
	renderFPFunds('AktierNordenFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderAktierSteuropaFunds = function(){
	var instr = ['BAIEEU.co','CAIEAS.co','DKIEEU.co','DKIEEUK.co','EIIEOESTEU.co','JYIEEU.co','NDIEEU.co'];
	renderFPFunds('AktierSteuropaFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderBlandedeAfdelingerFunds = function(){
	var instr = ['ABIOTI.co','ABIPP2.co','ABIPP3.co','ABIPP4.co','ABIPP5.co','ABIPP6.co','ABIPP7.co','BAIMIX.co','DKIMIX.co','DKIMD.co','DKIMIXS.co','DKIMO.co','DKIMOP.co','INIOP.co','JYIOBAK.co','RAIO12.co','RAIO16.co','RMIMP.co','LDIKONTRA.co','LDIPENSION.co','NDIAP1.co','NDIAP2.co','NDIAP3.co','NDIAP4.co','NDIKAP.co','NDISTAB.co','NDISTRAH.co','NDISTRAL.co','NDISTRAM.co','NYIFOSAKK.co','SEIIPK.co','SEIIPL.co','SEIIPM.co','SSISEC.co','SSIPRO.co','SSIEV.co'];
	renderFPFunds('BlandedeAfdelingerFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderHedgeforeningerFunds = function(){
	var instr = ['BAISTA.co'];
	renderFPFunds('HedgeforeningerFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderIndeksOblDanmarkFunds = function(){
	var instr = ['DKIIOB.co'];
	renderFPFunds('IndeksOblDanmarkFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOblEmMarketsFunds = function(){
	var instr = ['ABIEMO.co','ALIHOJ.co','BAIHRL.co','BAIHOJAK.co','BAIHOJLOK.co','DKINMOBL.co','DKINMOBLLV.co','DKIENEMD.co','EIIOBLHOJ.co','HAIHRTL.co','JYINOB.co','JYINOBV.co','NDIHOJL.co','SEINAEMB.co','SPINOB.co','SSIECB.co','SYIHY.co','SYIHYAKK.co','SYIHYLV.co','SYILSA.co','SYIHYM.co','SYIHYV.co'];
	renderFPFunds('OblEmMarketsFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOblErhvervFunds = function(){
	var instr = ['ABIHYO.co','BAIVO.co','BAIVIRAK.co','DKIGLOVO.co','DKIENGHYB.co','DKIENEICBR.co','DKIENEIGCB.co','GRIEHY.co','GRIUSHY.co','JYIHRV.co','JYIVIRK.co','NDIEHY.co','NDIVOB.co','NDIVOH.co','NYIERO.co','NYIEROA.co','SEIIHO.co','SEINUSHYB.co','SSEHYB.co','SPIHYVB.co','SSIHYVALB.co','SSIHYVALBO.co','SYIVIROBL.co','SYIVIA.co'];
	renderFPFunds('OblErhvervFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOblEuropaFunds = function(){
	var instr = ['AIIORA.co','DKIENGKEUO.co','DKIEUO.co','EIIIOB.co','JYIIO.co','SKIAVK.co','SPIIOB.co'];
	renderFPFunds('OblEuropaFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOblGlobaltFunds = function(){
	var instr = ['BAIGIO.co','BAIUOB.co','DKIGLOIXOAKK.co','DKIGIU.co','DKIINT.co','DKIUOBL.co','JYIFOB.co','LDIOBL.co','NDIGOBL.co','SKITEL.co','STIGO.co','SYIINT.co'];
	renderFPFunds('OblGlobaltFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOblKorteDanskeFunds = function(){
	var instr = ['ALIKOB.co','BAIKDO.co','BAIKDOA.co','BAIKPE.co','DKIKO.co','DKIKDO.co','DEIKO.co','EIIKOPE.co','EIIKO.co','HPIKDO.co','JYIKOB.co','LSIKO.co','NDIKOB.co','NDIKOP.co','NYIKOB.co','NYIKOP.co','NYIKOA.co','SPIKOBL.co','SPILOB.co','SYIDRT.co'];
	renderFPFunds('OblKorteDanskeFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderOtherDanishBondsFunds = function(){
	var instr = ['ALIOBL.co','ALIOBLP.co','BAILDO.co','BAILPE.co','DKILDO.co','DKIDKMLOBL.co','DKIDAN.co','DKIENGK4.co','DKIENGK5.co','DKIFO.co','DKILDO.co','DKIOBL4.co','DEILO.co','EIIBOB.co','EIILOPE.co','EIILOB.co','EIIOBL.co','EIIOPE.co','ETIVAEL.co','HAIDKOBL.co','HAIDKOGO.co','HAILDKOBL.co','HAILDKOGO.co','HPILDO.co','JYILOB.co','JYIOB.co','JYIOBP.co','LSILO.co','LSIOBL.co','LDIDKOBL.co','NDIFON.co','NDILAO.co','NDILOP.co','NDIMLO.co','NDIMP.co','NDISFO.co','NYILOB.co','NYILOP.co','NYILOA.co','SEIMOBL.co','SPILOBL.co','SPILOB.co','SPIDOBPE.co','SPIDOB.co','SSILB.co','SYIDANPE.co','SYIDANPRI.co','SYIFON.co'];
	renderFPFunds('OtherDanishBondsFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderCollectiveFunds = function(){
	var instr = ['BAIPEQ.co'];
	renderFPFunds('CollectiveFunds', ['DENMARK'], undefined, instr);
}

Netdania.renderFrontPageBox_FundsByISIN = function(isin){
	renderFPFunds('FrontPageBoxBigFunds', ['DENMARK'], isin, undefined, 'notbig');
}

Netdania.renderFrontPageBoxBig_FundsBySymbol = function(symbols){
	renderFPFunds('FrontPageBoxBigFunds', ['DENMARK'], undefined, symbols, 'notbig');
}

Netdania.renderFrontPageBoxBig_FundsByISIN = function(isin){
	renderFPFunds('FrontPageBoxBigFunds', ['DENMARK'], isin);
}

Netdania.renderFrontPageBox_CommoditiesByISIN = function(isin){
	renderFPCommodities('FrontPageBoxCommodities', ['DENMARK'], isin, 'notbig');
}

Netdania.renderFrontPageBoxBig_CommoditiesByISIN = function(isin){
	renderFPCommodities('FrontPageBoxBigCommodities', ['DENMARK'], isin);
}

Netdania.renderFrontPageBox_Commodities = function(){
	var instr= [{s:'ET0Y.ip', f25:'WTI Crude Fut., 1. pos', href:'http://penge.dk/node/12631'}, 
                {s:'EB0Y.ip',f25:'Brent Blend Fut., 1. pos', href:'http://penge.dk/node/12637'},
                {s:'XAUEUROCOMP.fx', f25:'Guld, spot', href:'http://penge.dk/node/12427'},
                {s:'XAGEUROCOMP.fx', f25:'S&#248;lv, spot', href:'http://penge.dk/node/12623'},
                {s:'EMA0Y.pa', f25:'Corn Fut., 1. pos', href:'http://penge.dk/node/12639'}, 
                {s:'CW0Y.li', f25:'Sugar Fut., 1. pos', href:'http://penge.dk/node/12640'},
                {s:'CC0Y.li', f25:'Cocoa Fut., 1. pos', href:'http://penge.dk/node/12641'},
                {s:'EBM0Y.pa', f25:'Milling Wheat Fut., 1. pos', href:'http://penge.dk/node/12642'},
                {s:'CT0Y.li', f25:'Feed Wheat Fut., 1. pos', href:'http://penge.dk/node/12643'}
            ];
	renderFPCommodities('FrontPageBoxCommodities', ['DENMARK'], undefined, instr, 'notbig');
}

Netdania.renderFrontPageBoxBig_Commodities = function(){
	//var instr= [{s:'ET0Y.ip', f25:'WTI Crude Fut., 1. pos'}, {s:'EB0Y.ip',f25:'Brent Blend Fut., 1. pos'},{s:'XAUEUROCOMP.fx', f25:'Guld, spot'},{s:'XAGEUROCOMP.fx', f25:'S&#248;lv, spot'},{s:'EMA0Y.pa', f25:'Corn Fut., 1. pos'}, {s:'CW0Y.li', f25:'Sugar Fut., 1. pos'},{s:'CC0Y.li', f25:'Cocoa Fut., 1. pos'},{s:'EBM0Y.pa', f25:'Milling Wheat Fut., 1. pos'},{s:'CT0Y.li', f25:'Feed Wheat Fut., 1. pos'}];
    var instr= [{s:'ET0Y.ip', f25:'WTI Crude Fut., 1. pos', href:'http://penge.dk/node/12631'}, 
                {s:'EB0Y.ip',f25:'Brent Blend Fut., 1. pos', href:'http://penge.dk/node/12637'},
                {s:'XAUEUROCOMP.fx', f25:'Guld, spot', href:'http://penge.dk/node/12427'},
                {s:'XAGEUROCOMP.fx', f25:'S&#248;lv, spot', href:'http://penge.dk/node/12623'},
                {s:'EMA0Y.pa', f25:'Corn Fut., 1. pos', href:'http://penge.dk/node/12639'}, 
                {s:'CW0Y.li', f25:'Sugar Fut., 1. pos', href:'http://penge.dk/node/12640'},
                {s:'CC0Y.li', f25:'Cocoa Fut., 1. pos', href:'http://penge.dk/node/12641'},
                {s:'EBM0Y.pa', f25:'Milling Wheat Fut., 1. pos', href:'http://penge.dk/node/12642'},
                {s:'CT0Y.li', f25:'Feed Wheat Fut., 1. pos', href:'http://penge.dk/node/12643'}
            ];
	renderFPCommodities('FrontPageBoxBigCommodities', ['DENMARK'], undefined, instr);
}

function Converter_rendAmount(id) {
    var html = '<input onblur="if(this.value==\'\') this.value=\'Indtast bel&#248;b\';" onclick="this.value=\'\';" style="text-align:right" onKeyUp="Converter_convert(\'' + id + '\')" onchange="Converter_convert(\'' + id + '\')" type="text" value="Indtast bel&#248;b" size="15" id="amount' + id + '"/>';
    return html;
}

function Converter_rendCurrency(id, isFrom) {

    var name = 'to';
    if (isFrom === true) { 
        name = 'from';
    }

    var to = [{ s: 'EURDKK', n: 'Danske kroner (DKK)' }, { s: 'EURUSD', n: 'US Dollar (USD)' }, { s: 'EUR', n: 'Euro (EUR)' }
, { s: 'EURSEK', n: 'Swedish Krona (SEK)' }
, { s: 'EURGBP', n: 'British Pound (GBP)' }
, { s: 'EURALL', n: 'Albanian Lek (ALL)' }
//, { s: 'EURAMD', n: 'Armenia Dram (AMD)' }
//, { s: 'EURAOA', n: 'Angolan Kwanza (AOA)' }
, { s: 'EURAUD', n: 'Australian Dollar (AUD)' }
, { s: 'EURBBD', n: 'Barbados-Dollar (BBD)' }
, { s: 'EURBHD', n: 'Bahraini-Dinar (BHD)' }
, { s: 'EURBIF', n: 'Burundi-Franc (BIF)' }
, { s: 'EURBRL', n: 'Brazilian Real (BRL)' }
, { s: 'EURBYR', n: 'Belarus Ruble (BYR)' }
, { s: 'EURBZD', n: 'Belize-Dollar (BZD)' }
, { s: 'EURCAD', n: 'Canadian Dollar (CAD)' }
, { s: 'EURCHF', n: 'Swiss Franc (CHF)' }
, { s: 'EURCLP', n: 'Chilian Peso (CLP)' }
, { s: 'EURCOP', n: 'Colombian Peso (COP)' }
, { s: 'EURCZK', n: 'Czech Koruna (CZK)' }
, { s: 'EURDJF', n: 'Dschibuti-Franc (DJF)' }
, { s: 'EURDOP', n: 'Dominican R. Peso (DOP)' }
//, { s: 'EURECS', n: 'Ecuador Sucre (ECS)' }
, { s: 'EUREEK', n: 'Estonian Kroon (EEK)' }
, { s: 'EUREGP', n: 'Egyptian Pound (EGP)' }
, { s: 'EURETB', n: 'Ethiopian Birr (ETB)' }
, { s: 'EURGMD', n: 'Gambian Dalasi (GMD)' }
, { s: 'EURHKD', n: 'Hong Kong Dollar (HKD)' }
, { s: 'EURHUF', n: 'Hungarian Forint (HUF)' }
, { s: 'EURIDR', n: 'Indonesian Rupiah (IDR)' }
, { s: 'EURILS', n: 'Israeli New Shekel (ILS)' }
, { s: 'EURINR', n: 'Indian Rupee (INR)' }
, { s: 'EURIRR', n: 'Iranian Rial (IRR)' }
, { s: 'EURISK', n: 'Iceland Krona (ISK)' }
, { s: 'EURJOD', n: 'Jordanian Dinar (JOD)' }
, { s: 'EURJPY', n: 'Japanese Yen (JPY)' }
, { s: 'EURKES', n: 'Kenyan Shilling (KES)' }
, { s: 'EURKHR', n: 'Cambodian Riel (KHR)' }
//, { s: 'EURKPW', n: 'North Korean Won (KPW)' }
, { s: 'EURKRW', n: 'South-Korean Won (KRW)' }
, { s: 'EURKWD', n: 'Kuwaiti-Dinar (KWD)' }
, { s: 'EURLBP', n: 'Lebanese Pound (LBP)' }
, { s: 'EURLKR', n: 'Sri-Lanka-Rupee (LKR)' }
//, { s: 'EURLRD', n: 'Liberian Dollar (LRD)' }
, { s: 'EURLTL', n: 'Lithuanian Litas (LTL)' }
, { s: 'EURLYD', n: 'Libyian Dinar (LYD)' }
, { s: 'EURMAD', n: 'Moroccan Dirham (MAD)'}
, { s: 'EURMDL', n: 'Moldovan Leu (MDL)' }
, { s: 'EURMOP', n: 'Macau Pataca (MOP)' }
, { s: 'EURMRO', n: 'Mauritanian Ouguiya (MRO)' }
, { s: 'EURMWK', n: 'Malawi-Kwacha (MWK)' }
, { s: 'EURMXN', n: 'Mexican Peso (MXN)' }
, { s: 'EURMYR', n: 'Malaysian Ringgit (MYR)' }
, { s: 'EURNAD', n: 'Namibia-Dollar (NAD)'}
, { s: 'EURNOK', n: 'Norwegian Kroner (NOK)' }
, { s: 'EURNZD', n: 'New Zealand Dollar (NZD)' }
, { s: 'EURPEN', n: 'Peruvian Sol (PEN)' }
, { s: 'EURPHP', n: 'Philippine Peso (PHP)' }
, { s: 'EURPKR', n: 'Pakistan Rupee (PKR)' }
, { s: 'EURPLN', n: 'Polish Zloty (PLN)' }
, { s: 'EURRUB', n: 'Russian Rouble (RUB)' }
, { s: 'EURRWF', n: 'Ruanda-Franc (RWF)' }
, { s: 'EURSAR', n: 'Saudi Riyal (SAR)' }
, { s: 'EURSGD', n: 'Singapore-Dollar (SGD)' }
, { s: 'EURSKK', n: 'Slovak Koruna (SKK)' }
//, { s: 'EURSLL', n: 'Sierra Leone Leone (SLL)'}
, { s: 'EURSZL', n: 'Swaziland Lilangeni (SZL)' }
, { s: 'EURTHB', n: 'Thai Baht (THB)' }
, { s: 'EURTRY', n: 'Turkish Lira (new) (TRY)' }
, { s: 'EURTWD', n: 'Taiwan Dollar (TWD)' }
, { s: 'EURTWD', n: 'Uruguayian Peso (UYU)' }
, { s: 'EURVND', n: 'Vietnamese Dong (VND)' }
, { s: 'EURXAF', n: 'CFA Franc BEAC (XAF)' }
, { s: 'EURXCD', n: 'East Caribbean Dollar (XCD)' }
, { s: 'EURXPF', n: 'CFP-Franc (XPF)' }
, { s: 'EURYER', n: 'Jemen-Rial (YER)' }
, { s: 'EURZAR', n: 'South African Rand (ZAR)' }
//, { s: 'EURZAC', n: 'South African Cents **** (ZAc)'}
, { s: 'EURZMK', n: 'Kwacha (ZMK)' }
//, { s: 'EURZWD', n: 'Simbabwe-Dollar (ZWD)' }
];

    var html = '<select onchange="Converter_convert(\'' + id + '\')" name="to' + id + '" id="'+ name + id + '">';
    var select = '';
    for (var currency in to) {
        if (to.hasOwnProperty(currency)) {
            select += '<option value="' + to[currency].s + '">' + to[currency].n;
        }
    }
    html += select;
    html += '</select>';
    return html;
}

function Converter_rendResult(id) {
    var html = '<input type="text" value="0,00" size="22" style="font-weight: bold; text-align: right; border: 0px solid rgb(0, 0, 0); color: rgb(0, 0, 0);" readonly="yes" id="result' + id + '">';
    return html;
}

function getValue(data, f) {
    if (data.f) {
        for (var i = 0; data && i < data.f.length; i++) {
            var field = data.f[i];
            if (field.f === f) {
                return field.v;
            }
        }
    }
}

function Converter_computeResult(data, cmp) {
    if (cmp.noOfReqs > 9) {
        cmp.result.value = 'N/A';
        cmp.noOfReqs = 0;
        return;
    }
    for (var i = 0, len = data.length; i < len; i++) {
        if (isInArray(data[i].i, cmp.requests)) {
            if (data[i].f) {
                if ((data[i].f.length === 0 || isNaN(getValue(data[i], 10))) && cmp.noOfReqs < 10) {
                    cmp.noOfReqs++;
                    Converter_convert(cmp.currentId, true);
                }
                else if (!isInArray(data[i].i, cmp.loadedReq) && !isNaN(getValue(data[i], 10))) {
                    cmp.dataConv.push(data[i]);
                    cmp.loadedReq.push(data[i].i);
                }
            }
        }
    }

    if (cmp.dataConv.length >= 2) {
        var from = getValue(cmp.dataConv[0], 10);
        var to = getValue(cmp.dataConv[1], 10);

        var fromName = getValue(cmp.dataConv[0], 25);
        var toName = getValue(cmp.dataConv[1], 25);

        if (cmp.dataConv[0].i > cmp.dataConv[1].i) {
            var temp = from;
            var tempName = fromName;
            from = to;
            to = temp;

            fromName = toName;
            toName = tempName;
        }

        if (cmp.toIsEur === true) {
            to = 1;
        }
        if (cmp.fromIsEur === true) {
           from = 1;
       }

       if (fromName === 'EUR/USD' && toName === 'EUR/USD' && (cmp.toIsEur === true || cmp.fromIsEur === true)) {
           if (cmp.toIsEur === true) {
               cmp.result.value = (1 / (from / cmp.amount)).toFixed(2);
           }
           else {
               cmp.result.value = (to * cmp.amount).toFixed(2).replace('.', ',');
           }
       }
       else if (toName === 'EUR/ZAR' && cmp.toIsZAC === true ) {
            cmp.result.value = ((1 / (from / to / cmp.amount))*100).toFixed(2).replace('.', ',');
        }
        else if (fromName === 'EUR/ZAR' && cmp.fromIsZAC === true) {
            cmp.result.value = ((1 / (from / to / cmp.amount)) / 100).toFixed(2).replace('.', ',');
        }
       else {
           cmp.result.value = (1 / (from / to / cmp.amount)).toFixed(2).replace('.', ',');
       }
        cmp.requests = [];
        cmp.dataConv = [];
    }
}


function Converter_convert(id, flush) {

    var amount = document.getElementById('amount' + id).value;
    var amountOK = true;
    try {
        amount = parseFloat(amount);
    }
    catch (ex) {
        amountOK = false;
    }

    if (amount === '' || amount < 0 || amountOK === false || isNaN(amount)) {
        //alert('Please give an amount!');
        return;
    }
    var cmp = null;
    var result = document.getElementById('result' + id);
    if (window['Converter_' + id] === undefined) {
        cmp = window['Converter_' + id] = {
            id: 'Converter_' + id,
            currentId: id,
            isRunning: false,
            amount: 1,
            result: null, 
            toIsEur: false,
            fromIsEur: false,
            requests: [],
            dataConv:[],
            loadedReq: [],
            noOfReqs: 0
        }
       
        cmp.result = result;
        
    }
    else {
        cmp = window['Converter_' + id];
    }

    cmp.dataConv = [];
    cmp.requests = [];
    cmp.loadedReq = [];
    result.value = 'Wait...';
    cmp.fromIsEur = false;
    cmp.toIsEur = false;
    var provider = "ms_dla";
    
    cmp.amount = amount;
    var from = document.getElementById('from' + id).value;
    if (from.toLowerCase() === 'eur') {
        cmp.fromIsEur = true;
        from = 'EURUSDCOMP.fx';
    }
    else if (from.toLowerCase() === 'eurzac') {
        cmp.fromIsZAC = true;
        from = 'EURZARCOMP.fx';
    }
    else {
        from += 'COMP.fx';
    }
    var to = document.getElementById('to' + id).value;
    
    if (to.toLowerCase() === 'eur') {
        cmp.toIsEur = true;
        to = 'EURUSDCOMP.fx';
    }
    else if (to.toLowerCase() === 'eurzac')
    {
        cmp.toIsZAC = true;
        to = 'EURZARCOMP.fx';
    }
    else {
        to += 'COMP.fx';
    }
    
   
    if (from === to && cmp.fromIsEur === false && cmp.toIsEur === false) {
        result.value = amount + ',00';
        return;
    }  
  
    function cbf_update(data, cmp) {
        Converter_computeResult(data, cmp);
    }
    var instr = [
				getReqObjPrice(from, provider, 0),
				getReqObjPrice(to, provider, 0)
			];
    for (var ii = 0; ii < instr.length; ii++) {
        cmp.requests.push(instr[ii].i);
        arrRequests.push(instr[ii]);
    }

    appendRequests(instr);
    
    if (cmp.isRunning === false) {
        cbfunctions.push({
            update: cbf_update,
            cmp: cmp
        });
    }
        if (sessionId === undefined) {
            startConnection();
            cmp.isRunning = true;
        }
}

Netdania.renderCurrencyConverter = function() {
    var id = ++globalCurrentCmp;
    var html = '<table class="converter" cellpadding="0" cellspacing="0" border="0">' +
                    '<tr>' +
                        '<td width="95px" style="padding-bottom:15px">Bel&#248;b:' +
                        '</td>' +
                         '<td align="right" style="padding-bottom:15px">' + Converter_rendAmount(id) +
                        '</td>' +
                    '</tr>' +
                     '<tr>' +
                        '<td style="padding-bottom:5px">Fra valuta: ' +
                        '</td>' +
                         '<td style="padding-bottom:7px">' + Converter_rendCurrency(id, true) +
                        '</td>' +
                    '</tr>' +
                     '<tr>' +
                        '<td style="padding-bottom:5px">Til valuta: ' +
                        '</td>' +
                         '<td>' + Converter_rendCurrency(id, false) +
                        '</td>' +
                    '</tr>' +
                     '<tr>' +
                         '<td colspan="2">' + '<div style="padding-top:10px" class="chartDotline"></div>' +
                        '</td>' +
                    '</tr>' +
                    
                    '<tr style="font-weight:bold">' +
                        '<td>Resultat:' +
                        '</td>' +
                         '<td align="right">' + Converter_rendResult(id) +
                        '</td>' +
                    '</tr>' +
                '</table>';

    window.document.write(html);
};

Netdania.renderBondInfoBox = function(symbol, isin) {
    Netdania.renderCurrInfoBox(symbol, 'ms_dlc', false, isin);
};

Netdania.renderFundInfoBox = function(symbol, isin) {
    Netdania.renderCurrInfoBox(symbol, 'ms_dlc', false, isin);
};

Netdania.renderCommoditiesInfoBox = function(symbol) {
    Netdania.renderCurrInfoBox(symbol, 'ms_dlc', false);
};

Netdania.renderFrontPageBoxGeneralExtensive = function(isinC, isinW, isinL, extensive, topName, flopName) {
    globalCurrentCmp++;
    var cmpId = 'fpBoxBond';
    var isinChart = [];
    for (var ci in isinC) {
        if (isinC.hasOwnProperty(ci)) {
            isinChart.push(isinC[ci].isin);
        }
    }
    
    if (extensive === undefined) {
        extensive = true;
    }

    if (extensive === true) {
        window.document.write('<table><tr><td><div style="width:288px;" id="' + 'div_' + cmpId + globalCurrentCmp + '"></div>');
    }
    else {
        window.document.write('<table><tr><td><div style="width:288px;" id="' + 'div_' + cmpId + globalCurrentCmp + '"></div></td></tr></table>');
    }
    if (extensive === true) {
        FrontPageBox_renderWinnersLoosersTable(topName, flopName);
        var winnersGridDivId = 'winnersGridDiv' + globalCurrentCmp;
        window.document.write('<div style="border: solid 0px; width:288px" id="' + winnersGridDivId + '"></div>');
        var losersGridDivId = 'losersGridDiv' + globalCurrentCmp;
        window.document.write('<div style="display:none; width:288px" id="' + losersGridDivId + '"></div></td></tr></table>');
    }
    cmp = window[cmpId + globalCurrentCmp] = {
        currentId: globalCurrentCmp,
        id: cmpId + globalCurrentCmp,
        type: 'quoteslookup',
        cbFunction: FPB_getInstrumentsCB,
        renderTo: 'div_' + cmpId + globalCurrentCmp,
        provider: 'ms_dlc',
        records: [],
        winIns: isinW,
        losIns: isinL,
        chartIns: isinChart,
        chartIN: isinC,
        priceReqs: [],
        instruments: [],
        markets: ['DENMARK'],
        extensive: extensive
    }
    startBoxLookup(cmp, cmp.markets, isinChart, undefined, [0, 2, 3], 5);
};

function FPB_getInstrumentsCB(data, cmp)
{
    if (cmp.type !== 'quoteslookup' || cmp.loaded === 'loaded') { return; }
    var instr = [];

    for (var i = 0, len = data.length; i < len; i++) {
        if (isInArray(data[i].i, cmp.requests)) {
            if (data[i].a) {
                for (var lj = 0, lenlj = data[i].a.length; lj < lenlj; lj++) {
                    var req = getReqObjPrice(data[i].a[lj].s, cmp.provider, false);
                    var r = {
                        id: "recid-" + req.i,
                        data: {}
                    };
                    r.symbol = data[i].a[lj].s;
                    r.isin = data[i].a[lj].n;
                    cmp.records.push(r);
                    cmp.requestItems.push(req);
                    cmp.priceReqs.push(req.i);
                }
            }
            removeArrayItem(cmp.requests, data[i].i);

            if (cmp.requests.length === 0) {
                appendRequests(cmp.requestItems);
                cbfunctions.push({ cmp: cmp, update: renderFPBoxCB });
            }
            if(cmp.extensive === true)
            {
                Netdania.renderRelatedStockBlock(cmp.winIns, cmp.currentId, 'w');
                Netdania.renderRelatedStockBlock(cmp.losIns, cmp.currentId, 'l');
            }
        }
    }
}

function getSymbolByISIN(isins, isin) {
    var symbol = '';
    for (var currentisin in isins) {
        if (isins.hasOwnProperty(currentisin)) {
            if (isins[currentisin].isin === isin) {
                symbol = isins[currentisin].symbol;
                break;                
            }
        }
    }
    return symbol;
}

function getInstrBySymbol(instrs, symbol, field) {
    for (var ci in instrs) {
        if (instrs.hasOwnProperty(ci)) {
            if (instrs[ci][field] === symbol) {
                return instrs[ci];
            }
        }
    }
}

function renderFPBoxCB(data, cmp) {
    if (cmp.loaded === 'loaded') return;
    for (var i = 0, len = data.length; i < len; i++) {
        var instruments = [];
        if (isInArray(data[i].i, cmp.priceReqs)) {
            if (data[i].f) {
                var isin = getValue(data[i], 39);
                var name = getValue(data[i], 25);
                var symbol = getSymbolByISIN(cmp.records, isin);
                cmp.instruments.push({ s: symbol, p: cmp.provider, n: name });
            }
        }
    }
    if (cmp.instruments.length === cmp.chartIns.length) {
        var orderedIns = [];
        for (var i = 0; i < cmp.chartIns.length; i++) {
            var ci = cmp.chartIns[i];
            var cs = getSymbolByISIN(cmp.records, ci);
            var cinstr = getInstrBySymbol(cmp.instruments, cs, 's');
            var name = getInstrBySymbol(cmp.chartIN, ci, 'isin');
            if (name.n !== '') {
                cinstr.n = name.n;
            }
            orderedIns.push(cinstr);
        }
        FrontPageBox_renderChart('extensive' + cmp.currentId, 'OMXC20.co', 'ms_dlc', true, 282, 260, false, orderedIns, cmp.renderTo);
        cmp.loaded = 'loaded';
    }
}
    
Netdania.renderFrontPageBoxGeneralLessExtensive = function(isinC) { 
    Netdania.renderFrontPageBoxGeneralExtensive(isinC, undefined, undefined, false);
};

Netdania.renderGeneralInfoBox = function(isin, symbol, type) {
    
    if(type === undefined)
    {
        type = 'c';
    }
    
    switch (type) {
        case 's':
            {
                Netdania.renderShareInfoBlock(isin, symbol);
                break;
            }
        case 'b':
            {
                Netdania.renderBondInfoBox(symbol, isin);
                break;
            }
        case 'f':
            {
                Netdania.renderFundInfoBox(symbol, isin);
                break;
            }
        case 'c':
            {
                Netdania.renderCurrInfoBox(symbol);
                break;
            }
        case 'com':
            {
                Netdania.renderCommoditiesInfoBox(symbol, 'ms_dlc', false);
                break;
            }
        default: 
            {
                Netdania.renderCurrInfoBox(symbol); 
            }
    }
};





