/***************************************************************************** 
Global YUI based JS functions for Ericsson
Version 1.1 @Lars Hendahl @Mikael Ek
*****************************************************************************/

/*****************************************************************************
scalable Inman Flash Replacement (sIFR) version 3, revision 436.

Copyright 2006 - 2008 Mark Wubben, <http://novemberborn.net/>

Older versions:
* IFR by Shaun Inman
* sIFR 1.0 by Mike Davidson, Shaun Inman and Tomas Jogin
* sIFR 2.0 by Mike Davidson, Shaun Inman, Tomas Jogin and Mark Wubben

See also <http://novemberborn.net/sifr3> and <http://wiki.novemberborn.net/sifr3>.

This software is licensed and provided under the CC-GNU LGPL.
See <http://creativecommons.org/licenses/LGPL/2.1/>
*****************************************************************************/
var sIFR = new function() { var O = this; var E = { ACTIVE: "sIFR-active", REPLACED: "sIFR-replaced", IGNORE: "sIFR-ignore", ALTERNATE: "sIFR-alternate", CLASS: "sIFR-class", LAYOUT: "sIFR-layout", FLASH: "sIFR-flash", FIX_FOCUS: "sIFR-fixfocus", DUMMY: "sIFR-dummy" }; E.IGNORE_CLASSES = [E.REPLACED, E.IGNORE, E.ALTERNATE]; this.MIN_FONT_SIZE = 6; this.MAX_FONT_SIZE = 126; this.FLASH_PADDING_BOTTOM = 5; this.VERSION = "436"; this.isActive = false; this.isEnabled = true; this.fixHover = true; this.autoInitialize = true; this.setPrefetchCookie = true; this.cookiePath = "/"; this.domains = []; this.forceWidth = true; this.fitExactly = false; this.forceTextTransform = true; this.useDomLoaded = true; this.useStyleCheck = false; this.hasFlashClassSet = false; this.repaintOnResize = true; this.replacements = []; var L = 0; var R = false; function Y() { } function D(c) { function d(e) { return e.toLocaleUpperCase() } this.normalize = function(e) { return e.replace(/\n|\r|\xA0/g, D.SINGLE_WHITESPACE).replace(/\s+/g, D.SINGLE_WHITESPACE) }; this.textTransform = function(e, f) { switch (e) { case "uppercase": return f.toLocaleUpperCase(); case "lowercase": return f.toLocaleLowerCase(); case "capitalize": return f.replace(/^\w|\s\w/g, d) } return f }; this.toHexString = function(e) { if (e.charAt(0) != "#" || e.length != 4 && e.length != 7) { return e } e = e.substring(1); return "0x" + (e.length == 3 ? e.replace(/(.)(.)(.)/, "$1$1$2$2$3$3") : e) }; this.toJson = function(g, f) { var e = ""; switch (typeof (g)) { case "string": e = '"' + f(g) + '"'; break; case "number": case "boolean": e = g.toString(); break; case "object": e = []; for (var h in g) { if (g[h] == Object.prototype[h]) { continue } e.push('"' + h + '":' + this.toJson(g[h])) } e = "{" + e.join(",") + "}"; break } return e }; this.convertCssArg = function(e) { if (!e) { return {} } if (typeof (e) == "object") { if (e.constructor == Array) { e = e.join("") } else { return e } } var l = {}; var m = e.split("}"); for (var h = 0; h < m.length; h++) { var k = m[h].match(/([^\s{]+)\s*\{(.+)\s*;?\s*/); if (!k || k.length != 3) { continue } if (!l[k[1]]) { l[k[1]] = {} } var g = k[2].split(";"); for (var f = 0; f < g.length; f++) { var n = g[f].match(/\s*([^:\s]+)\s*\:\s*([^;]+)/); if (!n || n.length != 3) { continue } l[k[1]][n[1]] = n[2].replace(/\s+$/, "") } } return l }; this.extractFromCss = function(g, f, i, e) { var h = null; if (g && g[f] && g[f][i]) { h = g[f][i]; if (e) { delete g[f][i] } } return h }; this.cssToString = function(f) { var g = []; for (var e in f) { var j = f[e]; if (j == Object.prototype[e]) { continue } g.push(e, "{"); for (var i in j) { if (j[i] == Object.prototype[i]) { continue } var h = j[i]; if (D.UNIT_REMOVAL_PROPERTIES[i]) { h = parseInt(h, 10) } g.push(i, ":", h, ";") } g.push("}") } return g.join("") }; this.escape = function(e) { return escape(e).replace(/\+/g, "%2B") }; this.encodeVars = function(e) { return e.join("&").replace(/%/g, "%25") }; this.copyProperties = function(g, f) { for (var e in g) { if (f[e] === undefined) { f[e] = g[e] } } return f }; this.domain = function() { var f = ""; try { f = document.domain } catch (g) { } return f }; this.domainMatches = function(h, g) { if (g == "*" || g == h) { return true } var f = g.lastIndexOf("*"); if (f > -1) { g = g.substr(f + 1); var e = h.lastIndexOf(g); if (e > -1 && (e + g.length) == h.length) { return true } } return false }; this.uriEncode = function(e) { return encodeURI(decodeURIComponent(e)) }; this.delay = function(f, h, g) { var e = Array.prototype.slice.call(arguments, 3); setTimeout(function() { h.apply(g, e) }, f) } } D.UNIT_REMOVAL_PROPERTIES = { leading: true, "margin-left": true, "margin-right": true, "text-indent": true }; D.SINGLE_WHITESPACE = " "; function U(e) { var d = this; function c(g, j, h) { var k = d.getStyleAsInt(g, j, e.ua.ie); if (k == 0) { k = g[h]; for (var f = 3; f < arguments.length; f++) { k -= d.getStyleAsInt(g, arguments[f], true) } } return k } this.getBody = function() { return document.getElementsByTagName("body")[0] || null }; this.querySelectorAll = function(f) { return window.parseSelector(f) }; this.addClass = function(f, g) { if (g) { g.className = ((g.className || "") == "" ? "" : g.className + " ") + f } }; this.removeClass = function(f, g) { if (g) { g.className = g.className.replace(new RegExp("(^|\\s)" + f + "(\\s|$)"), "").replace(/^\s+|(\s)\s+/g, "$1") } }; this.hasClass = function(f, g) { return new RegExp("(^|\\s)" + f + "(\\s|$)").test(g.className) }; this.hasOneOfClassses = function(h, g) { for (var f = 0; f < h.length; f++) { if (this.hasClass(h[f], g)) { return true } } return false }; this.ancestorHasClass = function(g, f) { g = g.parentNode; while (g && g.nodeType == 1) { if (this.hasClass(f, g)) { return true } g = g.parentNode } return false }; this.create = function(f, g) { var h = document.createElementNS ? document.createElementNS(U.XHTML_NS, f) : document.createElement(f); if (g) { h.className = g } return h }; this.getComputedStyle = function(h, i) { var f; if (document.defaultView && document.defaultView.getComputedStyle) { var g = document.defaultView.getComputedStyle(h, null); f = g ? g[i] : null } else { if (h.currentStyle) { f = h.currentStyle[i] } } return f || "" }; this.getStyleAsInt = function(g, i, f) { var h = this.getComputedStyle(g, i); if (f && !/px$/.test(h)) { return 0 } return parseInt(h) || 0 }; this.getWidthFromStyle = function(f) { return c(f, "width", "offsetWidth", "paddingRight", "paddingLeft", "borderRightWidth", "borderLeftWidth") }; this.getHeightFromStyle = function(f) { return c(f, "height", "offsetHeight", "paddingTop", "paddingBottom", "borderTopWidth", "borderBottomWidth") }; this.getDimensions = function(j) { var h = j.offsetWidth; var f = j.offsetHeight; if (h == 0 || f == 0) { for (var g = 0; g < j.childNodes.length; g++) { var k = j.childNodes[g]; if (k.nodeType != 1) { continue } h = Math.max(h, k.offsetWidth); f = Math.max(f, k.offsetHeight) } } return { width: h, height: f} }; this.getViewport = function() { return { width: window.innerWidth || document.documentElement.clientWidth || this.getBody().clientWidth, height: window.innerHeight || document.documentElement.clientHeight || this.getBody().clientHeight} }; this.blurElement = function(g) { try { g.blur(); return } catch (h) { } var f = this.create("input"); f.style.width = "0px"; f.style.height = "0px"; g.parentNode.appendChild(f); f.focus(); f.blur(); f.parentNode.removeChild(f) } } U.XHTML_NS = "http://www.w3.org/1999/xhtml"; function H(r) { var g = navigator.userAgent.toLowerCase(); var q = (navigator.product || "").toLowerCase(); var h = navigator.platform.toLowerCase(); this.parseVersion = H.parseVersion; this.macintosh = /^mac/.test(h); this.windows = /^win/.test(h); this.linux = /^linux/.test(h); this.quicktime = false; this.opera = /opera/.test(g); this.konqueror = /konqueror/.test(g); this.ie = false/*@cc_on || true@*/; this.ieSupported = this.ie && !/ppc|smartphone|iemobile|msie\s5\.5/.test(g)/*@cc_on && @_jscript_version >= 5.5@*/; this.ieWin = this.ie && this.windows/*@cc_on && @_jscript_version >= 5.1@*/; this.windows = this.windows && (!this.ie || this.ieWin); this.ieMac = this.ie && this.macintosh/*@cc_on && @_jscript_version < 5.1@*/; this.macintosh = this.macintosh && (!this.ie || this.ieMac); this.safari = /safari/.test(g); this.webkit = !this.konqueror && /applewebkit/.test(g); this.khtml = this.webkit || this.konqueror; this.gecko = !this.khtml && q == "gecko"; this.ieVersion = this.ie && /.*msie\s(\d\.\d)/.exec(g) ? this.parseVersion(RegExp.$1) : "0"; this.operaVersion = this.opera && /.*opera(\s|\/)(\d+\.\d+)/.exec(g) ? this.parseVersion(RegExp.$2) : "0"; this.webkitVersion = this.webkit && /.*applewebkit\/(\d+).*/.exec(g) ? this.parseVersion(RegExp.$1) : "0"; this.geckoVersion = this.gecko && /.*rv:\s*([^\)]+)\)\s+gecko/.exec(g) ? this.parseVersion(RegExp.$1) : "0"; this.konquerorVersion = this.konqueror && /.*konqueror\/([\d\.]+).*/.exec(g) ? this.parseVersion(RegExp.$1) : "0"; this.flashVersion = 0; if (this.ieWin) { var l; var o = false; try { l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7") } catch (m) { try { l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); this.flashVersion = this.parseVersion("6"); l.AllowScriptAccess = "always" } catch (m) { o = this.flashVersion == this.parseVersion("6") } if (!o) { try { l = new ActiveXObject("ShockwaveFlash.ShockwaveFlash") } catch (m) { } } } if (!o && l) { this.flashVersion = this.parseVersion((l.GetVariable("$version") || "").replace(/^\D+(\d+)\D+(\d+)\D+(\d+).*/g, "$1.$2.$3")) } } else { if (navigator.plugins && navigator.plugins["Shockwave Flash"]) { var n = navigator.plugins["Shockwave Flash"].description.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); var p = n.replace(/^\D*(\d+\.\d+).*$/, "$1"); if (/r/.test(n)) { p += n.replace(/^.*r(\d*).*$/, ".$1") } else { if (/d/.test(n)) { p += ".0" } } this.flashVersion = this.parseVersion(p); var j = false; for (var k = 0, c = this.flashVersion >= H.MIN_FLASH_VERSION; c && k < navigator.mimeTypes.length; k++) { var f = navigator.mimeTypes[k]; if (f.type != "application/x-shockwave-flash") { continue } if (f.enabledPlugin) { j = true; if (f.enabledPlugin.description.toLowerCase().indexOf("quicktime") > -1) { c = false; this.quicktime = true } } } if (this.quicktime || !j) { this.flashVersion = this.parseVersion("0") } } } this.flash = this.flashVersion >= H.MIN_FLASH_VERSION; this.transparencySupport = this.macintosh || this.windows || this.linux && (this.flashVersion >= this.parseVersion("10") && (this.gecko && this.geckoVersion >= this.parseVersion("1.9") || this.opera)); this.computedStyleSupport = this.ie || !!document.defaultView.getComputedStyle; this.fixFocus = this.gecko && this.windows; this.nativeDomLoaded = this.gecko || this.webkit && this.webkitVersion >= this.parseVersion("525") || this.konqueror && this.konquerorMajor > this.parseVersion("03") || this.opera; this.mustCheckStyle = this.khtml || this.opera; this.forcePageLoad = this.webkit && this.webkitVersion < this.parseVersion("523"); this.properDocument = typeof (document.location) == "object"; this.supported = this.flash && this.properDocument && (!this.ie || this.ieSupported) && this.computedStyleSupport && (!this.opera || this.operaVersion >= this.parseVersion("9.61")) && (!this.webkit || this.webkitVersion >= this.parseVersion("412")) && (!this.gecko || this.geckoVersion >= this.parseVersion("1.8.0.12")) && (!this.konqueror) } H.parseVersion = function(c) { return c.replace(/(^|\D)(\d+)(?=\D|$)/g, function(f, e, g) { f = e; for (var d = 4 - g.length; d >= 0; d--) { f += "0" } return f + g }) }; H.MIN_FLASH_VERSION = H.parseVersion("8"); function F(c) { this.fix = c.ua.ieWin && window.location.hash != ""; var d; this.cache = function() { d = document.title }; function e() { document.title = d } this.restore = function() { if (this.fix) { setTimeout(e, 0) } } } function S(l) { var e = null; function c() { try { if (l.ua.ie || document.readyState != "loaded" && document.readyState != "complete") { document.documentElement.doScroll("left") } } catch (n) { return setTimeout(c, 10) } i() } function i() { if (l.useStyleCheck) { h() } else { if (!l.ua.mustCheckStyle) { d(null, true) } } } function h() { e = l.dom.create("div", E.DUMMY); l.dom.getBody().appendChild(e); m() } function m() { if (l.dom.getComputedStyle(e, "marginLeft") == "42px") { g() } else { setTimeout(m, 10) } } function g() { if (e && e.parentNode) { e.parentNode.removeChild(e) } e = null; d(null, true) } function d(n, o) { l.initialize(o); if (n && n.type == "load") { if (document.removeEventListener) { document.removeEventListener("DOMContentLoaded", d, false) } if (window.removeEventListener) { window.removeEventListener("load", d, false) } } } function j() { l.prepareClearReferences(); if (document.readyState == "interactive") { document.attachEvent("onstop", f); setTimeout(function() { document.detachEvent("onstop", f) }, 0) } } function f() { document.detachEvent("onstop", f); k() } function k() { l.clearReferences() } this.attach = function() { if (window.addEventListener) { window.addEventListener("load", d, false) } else { window.attachEvent("onload", d) } if (!l.useDomLoaded || l.ua.forcePageLoad || l.ua.ie && window.top != window) { return } if (l.ua.nativeDomLoaded) { document.addEventListener("DOMContentLoaded", i, false) } else { if (l.ua.ie || l.ua.khtml) { c() } } }; this.attachUnload = function() { if (!l.ua.ie) { return } window.attachEvent("onbeforeunload", j); window.attachEvent("onunload", k) } } var Q = "sifrFetch"; function N(c) { var e = false; this.fetchMovies = function(f) { if (c.setPrefetchCookie && new RegExp(";?" + Q + "=true;?").test(document.cookie)) { return } try { e = true; d(f) } catch (g) { } if (c.setPrefetchCookie) { document.cookie = Q + "=true;path=" + c.cookiePath } }; this.clear = function() { if (!e) { return } try { var f = document.getElementsByTagName("script"); for (var g = f.length - 1; g >= 0; g--) { var h = f[g]; if (h.type == "sifr/prefetch") { h.parentNode.removeChild(h) } } } catch (j) { } }; function d(f) { for (var g = 0; g < f.length; g++) { document.write('<script defer type="sifr/prefetch" src="' + f[g].src + '"><\/script>') } } } function b(e) { var g = e.ua.ie; var f = g && e.ua.flashVersion < e.ua.parseVersion("9.0.115"); var d = {}; var c = {}; this.fixFlash = f; this.register = function(h) { if (!g) { return } var i = h.getAttribute("id"); this.cleanup(i, false); c[i] = h; delete d[i]; if (f) { window[i] = h } }; this.reset = function() { if (!g) { return false } for (var j = 0; j < e.replacements.length; j++) { var h = e.replacements[j]; var k = c[h.id]; if (!d[h.id] && (!k.parentNode || k.parentNode.nodeType == 11)) { h.resetMovie(); d[h.id] = true } } return true }; this.cleanup = function(l, h) { var i = c[l]; if (!i) { return } for (var k in i) { if (typeof (i[k]) == "function") { i[k] = null } } c[l] = null; if (f) { window[l] = null } if (i.parentNode) { if (h && i.parentNode.nodeType == 1) { var j = document.createElement("div"); j.style.width = i.offsetWidth + "px"; j.style.height = i.offsetHeight + "px"; i.parentNode.replaceChild(j, i) } else { i.parentNode.removeChild(i) } } }; this.prepareClearReferences = function() { if (!f) { return } __flash_unloadHandler = function() { }; __flash_savedUnloadHandler = function() { } }; this.clearReferences = function() { if (f) { var j = document.getElementsByTagName("object"); for (var h = j.length - 1; h >= 0; h--) { c[j[h].getAttribute("id")] = j[h] } } for (var k in c) { if (Object.prototype[k] != c[k]) { this.cleanup(k, true) } } } } function K(d, g, f, c, e) { this.sIFR = d; this.id = g; this.vars = f; this.movie = null; this.__forceWidth = c; this.__events = e; this.__resizing = 0 } K.prototype = { getFlashElement: function() { return document.getElementById(this.id) }, getAlternate: function() { return document.getElementById(this.id + "_alternate") }, getAncestor: function() { var c = this.getFlashElement().parentNode; return !this.sIFR.dom.hasClass(E.FIX_FOCUS, c) ? c : c.parentNode }, available: function() { var c = this.getFlashElement(); return c && c.parentNode }, call: function(c) { var d = this.getFlashElement(); if (!d[c]) { return false } return Function.prototype.apply.call(d[c], d, Array.prototype.slice.call(arguments, 1)) }, attempt: function() { if (!this.available()) { return false } try { this.call.apply(this, arguments) } catch (c) { if (this.sIFR.debug) { throw c } return false } return true }, updateVars: function(c, e) { for (var d = 0; d < this.vars.length; d++) { if (this.vars[d].split("=")[0] == c) { this.vars[d] = c + "=" + e; break } } var f = this.sIFR.util.encodeVars(this.vars); this.movie.injectVars(this.getFlashElement(), f); this.movie.injectVars(this.movie.html, f) }, storeSize: function(c, d) { this.movie.setSize(c, d); this.updateVars(c, d) }, fireEvent: function(c) { if (this.available() && this.__events[c]) { this.sIFR.util.delay(0, this.__events[c], this, this) } }, resizeFlashElement: function(c, d, e) { if (!this.available()) { return } this.__resizing++; var f = this.getFlashElement(); f.setAttribute("height", c); this.getAncestor().style.minHeight = ""; this.updateVars("renderheight", c); this.storeSize("height", c); if (d !== null) { f.setAttribute("width", d); this.movie.setSize("width", d) } if (this.__events.onReplacement) { this.sIFR.util.delay(0, this.__events.onReplacement, this, this); delete this.__events.onReplacement } if (e) { this.sIFR.util.delay(0, function() { this.attempt("scaleMovie"); this.__resizing-- }, this) } else { this.__resizing-- } }, blurFlashElement: function() { if (this.available()) { this.sIFR.dom.blurElement(this.getFlashElement()) } }, resetMovie: function() { this.sIFR.util.delay(0, this.movie.reset, this.movie, this.getFlashElement(), this.getAlternate()) }, resizeAfterScale: function() { if (this.available() && this.__resizing == 0) { this.sIFR.util.delay(0, this.resize, this) } }, resize: function() { if (!this.available()) { return } this.__resizing++; var g = this.getFlashElement(); var f = g.offsetWidth; if (f == 0) { return } var e = g.getAttribute("width"); var l = g.getAttribute("height"); var m = this.getAncestor(); var o = this.sIFR.dom.getHeightFromStyle(m); g.style.width = "1px"; g.style.height = "1px"; m.style.minHeight = o + "px"; var c = this.getAlternate().childNodes; var n = []; for (var k = 0; k < c.length; k++) { var h = c[k].cloneNode(true); n.push(h); m.appendChild(h) } var d = this.sIFR.dom.getWidthFromStyle(m); for (var k = 0; k < n.length; k++) { m.removeChild(n[k]) } g.style.width = g.style.height = m.style.minHeight = ""; g.setAttribute("width", this.__forceWidth ? d : e); g.setAttribute("height", l); if (sIFR.ua.ie) { g.style.display = "none"; var j = g.offsetHeight; g.style.display = "" } if (d != f) { if (this.__forceWidth) { this.storeSize("width", d) } this.attempt("resize", d) } this.__resizing-- }, replaceText: function(g, j) { var d = this.sIFR.util.escape(g); if (!this.attempt("replaceText", d)) { return false } this.updateVars("content", d); var f = this.getAlternate(); if (j) { while (f.firstChild) { f.removeChild(f.firstChild) } for (var c = 0; c < j.length; c++) { f.appendChild(j[c]) } } else { try { f.innerHTML = g } catch (h) { } } return true }, changeCSS: function(c) { c = this.sIFR.util.escape(this.sIFR.util.cssToString(this.sIFR.util.convertCssArg(c))); this.updateVars("css", c); return this.attempt("changeCSS", c) }, remove: function() { if (this.movie && this.available()) { this.movie.remove(this.getFlashElement(), this.id) } } }; var X = new function() { this.create = function(p, n, j, i, f, e, g, o, l, h, m) { var k = p.ua.ie ? d : c; return new k(p, n, j, i, f, e, g, o, ["flashvars", l, "wmode", h, "bgcolor", m, "allowScriptAccess", "always", "quality", "best"]) }; function c(s, q, l, h, f, e, g, r, n) { var m = s.dom.create("object", E.FLASH); var p = ["type", "application/x-shockwave-flash", "id", f, "name", f, "data", e, "width", g, "height", r]; for (var o = 0; o < p.length; o += 2) { m.setAttribute(p[o], p[o + 1]) } var j = m; if (h) { j = W.create("div", E.FIX_FOCUS); j.appendChild(m) } for (var o = 0; o < n.length; o += 2) { if (n[o] == "name") { continue } var k = W.create("param"); k.setAttribute("name", n[o]); k.setAttribute("value", n[o + 1]); m.appendChild(k) } l.style.minHeight = r + "px"; while (l.firstChild) { l.removeChild(l.firstChild) } l.appendChild(j); this.html = j.cloneNode(true) } c.prototype = { reset: function(e, f) { e.parentNode.replaceChild(this.html.cloneNode(true), e) }, remove: function(e, f) { e.parentNode.removeChild(e) }, setSize: function(e, f) { this.html.setAttribute(e, f) }, injectVars: function(e, g) { var h = e.getElementsByTagName("param"); for (var f = 0; f < h.length; f++) { if (h[f].getAttribute("name") == "flashvars") { h[f].setAttribute("value", g); break } } } }; function d(p, n, j, h, f, e, g, o, k) { this.dom = p.dom; this.broken = n; this.html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="' + f + '" width="' + g + '" height="' + o + '" class="' + E.FLASH + '"><param name="movie" value="' + e + '"></param></object>'; var m = ""; for (var l = 0; l < k.length; l += 2) { m += '<param name="' + k[l] + '" value="' + k[l + 1] + '"></param>' } this.html = this.html.replace(/(<\/object>)/, m + "$1"); j.style.minHeight = o + "px"; j.innerHTML = this.html; this.broken.register(j.firstChild) } d.prototype = { reset: function(f, g) { g = g.cloneNode(true); var e = f.parentNode; e.innerHTML = this.html; this.broken.register(e.firstChild); e.appendChild(g) }, remove: function(e, f) { this.broken.cleanup(f) }, setSize: function(e, f) { this.html = this.html.replace(e == "height" ? /(height)="\d+"/ : /(width)="\d+"/, '$1="' + f + '"') }, injectVars: function(e, f) { if (e != this.html) { return } this.html = this.html.replace(/(flashvars(=|\"\svalue=)\")[^\"]+/, "$1" + f) } } }; this.errors = new Y(O); var A = this.util = new D(O); var W = this.dom = new U(O); var T = this.ua = new H(O); var G = { fragmentIdentifier: new F(O), pageLoad: new S(O), prefetch: new N(O), brokenFlashIE: new b(O) }; this.__resetBrokenMovies = G.brokenFlashIE.reset; var J = { kwargs: [], replaceAll: function(d) { for (var c = 0; c < this.kwargs.length; c++) { O.replace(this.kwargs[c]) } if (!d) { this.kwargs = [] } } }; this.activate = function() { if (!T.supported || !this.isEnabled || this.isActive || !C() || a()) { return } G.prefetch.fetchMovies(arguments); this.isActive = true; this.setFlashClass(); G.fragmentIdentifier.cache(); G.pageLoad.attachUnload(); if (!this.autoInitialize) { return } G.pageLoad.attach() }; this.setFlashClass = function() { if (this.hasFlashClassSet) { return } W.addClass(E.ACTIVE, W.getBody() || document.documentElement); this.hasFlashClassSet = true }; this.removeFlashClass = function() { if (!this.hasFlashClassSet) { return } W.removeClass(E.ACTIVE, W.getBody()); W.removeClass(E.ACTIVE, document.documentElement); this.hasFlashClassSet = false }; this.initialize = function(c) { if (!this.isActive || !this.isEnabled) { return } if (R) { if (!c) { J.replaceAll(false) } return } R = true; J.replaceAll(c); if (O.repaintOnResize) { if (window.addEventListener) { window.addEventListener("resize", Z, false) } else { window.attachEvent("onresize", Z) } } G.prefetch.clear() }; this.replace = function(x, u) { if (!T.supported) { return } if (u) { x = A.copyProperties(x, u) } if (!R) { return J.kwargs.push(x) } if (this.onReplacementStart) { this.onReplacementStart(x) } var AM = x.elements || W.querySelectorAll(x.selector); if (AM.length == 0) { return } var w = M(x.src); var AR = A.convertCssArg(x.css); var v = B(x.filters); var AN = x.forceSingleLine === true; var AS = x.preventWrap === true && !AN; var q = AN || (x.fitExactly == null ? this.fitExactly : x.fitExactly) === true; var AD = q || (x.forceWidth == null ? this.forceWidth : x.forceWidth) === true; var s = x.ratios || []; var AE = x.pixelFont === true; var r = parseInt(x.tuneHeight) || 0; var z = !!x.onRelease || !!x.onRollOver || !!x.onRollOut; if (q) { A.extractFromCss(AR, ".sIFR-root", "text-align", true) } var t = A.extractFromCss(AR, ".sIFR-root", "font-size", true) || "0"; var e = A.extractFromCss(AR, ".sIFR-root", "background-color", true) || "#FFFFFF"; var o = A.extractFromCss(AR, ".sIFR-root", "kerning", true) || ""; var AW = A.extractFromCss(AR, ".sIFR-root", "opacity", true) || "100"; var k = A.extractFromCss(AR, ".sIFR-root", "cursor", true) || "default"; var AP = parseInt(A.extractFromCss(AR, ".sIFR-root", "leading")) || 0; var AJ = x.gridFitType || (A.extractFromCss(AR, ".sIFR-root", "text-align") == "right") ? "subpixel" : "pixel"; var h = this.forceTextTransform === false ? "none" : A.extractFromCss(AR, ".sIFR-root", "text-transform", true) || "none"; t = /^\d+(px)?$/.test(t) ? parseInt(t) : 0; AW = parseFloat(AW) < 1 ? 100 * parseFloat(AW) : AW; var AC = x.modifyCss ? "" : A.cssToString(AR); var AG = x.wmode || ""; if (!AG) { if (x.transparent) { AG = "transparent" } else { if (x.opaque) { AG = "opaque" } } } if (AG == "transparent") { if (!T.transparencySupport) { AG = "opaque" } else { e = "transparent" } } else { if (e == "transparent") { e = "#FFFFFF" } } for (var AV = 0; AV < AM.length; AV++) { var AF = AM[AV]; if (W.hasOneOfClassses(E.IGNORE_CLASSES, AF) || W.ancestorHasClass(AF, E.ALTERNATE)) { continue } var AO = W.getDimensions(AF); var f = AO.height; var c = AO.width; var AA = W.getComputedStyle(AF, "display"); if (!f || !c || !AA || AA == "none") { continue } c = W.getWidthFromStyle(AF); var n, AH; if (!t) { var AL = I(AF); n = Math.min(this.MAX_FONT_SIZE, Math.max(this.MIN_FONT_SIZE, AL.fontSize)); if (AE) { n = Math.max(8, 8 * Math.round(n / 8)) } AH = AL.lines } else { n = t; AH = 1 } var d = W.create("span", E.ALTERNATE); var AX = AF.cloneNode(true); AF.parentNode.appendChild(AX); for (var AU = 0, AT = AX.childNodes.length; AU < AT; AU++) { var m = AX.childNodes[AU]; if (!/^(style|script)$/i.test(m.nodeName)) { d.appendChild(m.cloneNode(true)) } } if (x.modifyContent) { x.modifyContent(AX, x.selector) } if (x.modifyCss) { AC = x.modifyCss(AR, AX, x.selector) } var p = P(AX, h, x.uriEncode); AX.parentNode.removeChild(AX); if (x.modifyContentString) { p.text = x.modifyContentString(p.text, x.selector) } if (p.text == "") { continue } var AK = Math.round(AH * V(n, s) * n) + this.FLASH_PADDING_BOTTOM + r; if (AH > 1 && AP) { AK += Math.round((AH - 1) * AP) } var AB = AD ? c : "100%"; var AI = "sIFR_replacement_" + L++; var AQ = ["id=" + AI, "content=" + A.escape(p.text), "width=" + c, "renderheight=" + AK, "link=" + A.escape(p.primaryLink.href || ""), "target=" + A.escape(p.primaryLink.target || ""), "size=" + n, "css=" + A.escape(AC), "cursor=" + k, "tunewidth=" + (x.tuneWidth || 0), "tuneheight=" + r, "offsetleft=" + (x.offsetLeft || ""), "offsettop=" + (x.offsetTop || ""), "fitexactly=" + q, "preventwrap=" + AS, "forcesingleline=" + AN, "antialiastype=" + (x.antiAliasType || ""), "thickness=" + (x.thickness || ""), "sharpness=" + (x.sharpness || ""), "kerning=" + o, "gridfittype=" + AJ, "flashfilters=" + v, "opacity=" + AW, "blendmode=" + (x.blendMode || ""), "selectable=" + (x.selectable == null || AG != "" && !sIFR.ua.macintosh && sIFR.ua.gecko && sIFR.ua.geckoVersion >= sIFR.ua.parseVersion("1.9") ? "true" : x.selectable === true), "fixhover=" + (this.fixHover === true), "events=" + z, "delayrun=" + G.brokenFlashIE.fixFlash, "version=" + this.VERSION]; var y = A.encodeVars(AQ); var g = new K(O, AI, AQ, AD, { onReplacement: x.onReplacement, onRollOver: x.onRollOver, onRollOut: x.onRollOut, onRelease: x.onRelease }); g.movie = X.create(sIFR, G.brokenFlashIE, AF, T.fixFocus && x.fixFocus, AI, w, AB, AK, y, AG, e); this.replacements.push(g); this.replacements[AI] = g; if (x.selector) { if (!this.replacements[x.selector]) { this.replacements[x.selector] = [g] } else { this.replacements[x.selector].push(g) } } d.setAttribute("id", AI + "_alternate"); AF.appendChild(d); W.addClass(E.REPLACED, AF) } G.fragmentIdentifier.restore() }; this.getReplacementByFlashElement = function(d) { for (var c = 0; c < O.replacements.length; c++) { if (O.replacements[c].id == d.getAttribute("id")) { return O.replacements[c] } } }; this.redraw = function() { for (var c = 0; c < O.replacements.length; c++) { O.replacements[c].resetMovie() } }; this.prepareClearReferences = function() { G.brokenFlashIE.prepareClearReferences() }; this.clearReferences = function() { G.brokenFlashIE.clearReferences(); G = null; J = null; delete O.replacements }; function C() { if (O.domains.length == 0) { return true } var d = A.domain(); for (var c = 0; c < O.domains.length; c++) { if (A.domainMatches(d, O.domains[c])) { return true } } return false } function a() { if (document.location.protocol == "file:") { if (O.debug) { O.errors.fire("isFile") } return true } return false } function M(c) { if (T.ie && c.charAt(0) == "/") { c = window.location.toString().replace(/([^:]+)(:\/?\/?)([^\/]+).*/, "$1$2$3") + c } return c } function V(d, e) { for (var c = 0; c < e.length; c += 2) { if (d <= e[c]) { return e[c + 1] } } return e[e.length - 1] || 1 } function B(g) { var e = []; for (var d in g) { if (g[d] == Object.prototype[d]) { continue } var c = g[d]; d = [d.replace(/filter/i, "") + "Filter"]; for (var f in c) { if (c[f] == Object.prototype[f]) { continue } d.push(f + ":" + A.escape(A.toJson(c[f], A.toHexString))) } e.push(d.join(",")) } return A.escape(e.join(";")) } function Z(d) { var e = Z.viewport; var c = W.getViewport(); if (e && c.width == e.width && c.height == e.height) { return } Z.viewport = c; if (O.replacements.length == 0) { return } if (Z.timer) { clearTimeout(Z.timer) } Z.timer = setTimeout(function() { delete Z.timer; for (var f = 0; f < O.replacements.length; f++) { O.replacements[f].resize() } }, 200) } function I(f) { var g = W.getComputedStyle(f, "fontSize"); var d = g.indexOf("px") == -1; var e = f.innerHTML; if (d) { f.innerHTML = "X" } f.style.paddingTop = f.style.paddingBottom = f.style.borderTopWidth = f.style.borderBottomWidth = "0px"; f.style.lineHeight = "2em"; f.style.display = "block"; g = d ? f.offsetHeight / 2 : parseInt(g, 10); if (d) { f.innerHTML = e } var c = Math.round(f.offsetHeight / (2 * g)); f.style.paddingTop = f.style.paddingBottom = f.style.borderTopWidth = f.style.borderBottomWidth = f.style.lineHeight = f.style.display = ""; if (isNaN(c) || !isFinite(c) || c == 0) { c = 1 } return { fontSize: g, lines: c} } function P(c, g, s) { s = s || A.uriEncode; var q = [], m = []; var k = null; var e = c.childNodes; var o = false, p = false; var j = 0; while (j < e.length) { var f = e[j]; if (f.nodeType == 3) { var t = A.textTransform(g, A.normalize(f.nodeValue)).replace(/</g, "&lt;"); if (o && p) { t = t.replace(/^\s+/, "") } m.push(t); o = /\s$/.test(t); p = false } if (f.nodeType == 1 && !/^(style|script)$/i.test(f.nodeName)) { var h = []; var r = f.nodeName.toLowerCase(); var n = f.className || ""; if (/\s+/.test(n)) { if (n.indexOf(E.CLASS) > -1) { n = n.match("(\\s|^)" + E.CLASS + "-([^\\s$]*)(\\s|$)")[2] } else { n = n.match(/^([^\s]+)/)[1] } } if (n != "") { h.push('class="' + n + '"') } if (r == "a") { var d = s(f.getAttribute("href") || ""); var l = f.getAttribute("target") || ""; h.push('href="' + d + '"', 'target="' + l + '"'); if (!k) { k = { href: d, target: l} } } m.push("<" + r + (h.length > 0 ? " " : "") + h.join(" ") + ">"); p = true; if (f.hasChildNodes()) { q.push(j); j = 0; e = f.childNodes; continue } else { if (!/^(br|img)$/i.test(f.nodeName)) { m.push("</", f.nodeName.toLowerCase(), ">") } } } if (q.length > 0 && !f.nextSibling) { do { j = q.pop(); e = f.parentNode.parentNode.childNodes; f = e[j]; if (f) { m.push("</", f.nodeName.toLowerCase(), ">") } } while (j == e.length - 1 && q.length > 0) } j++ } return { text: m.join("").replace(/^\s+|\s+$|\s*(<br>)\s*/g, "$1"), primaryLink: k || {}} } };
var parseSelector=(function(){var B=/\s*,\s*/;var A=/\s*([\s>+~(),]|^|$)\s*/g;var L=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var F=/(^|\))[^\s>+~]/g;var M=/(\)|^)/;var K=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;function H(R,P){P=P||document.documentElement;var S=R.split(B),X=[];for(var U=0;U<S.length;U++){var N=[P],W=G(S[U]);for(var T=0;T<W.length;){var Q=W[T++],O=W[T++],V="";if(W[T]=="("){while(W[T++]!=")"&&T<W.length){V+=W[T]}V=V.slice(0,-1)}N=I(N,Q,O,V)}X=X.concat(N)}return X}function G(N){var O=N.replace(A,"$1").replace(L,"$1*$2").replace(F,D);return O.match(K)||[]}function D(N){return N.replace(M,"$1 ")}function I(N,P,Q,O){return(H.selectors[P])?H.selectors[P](N,Q,O):[]}var E={toArray:function(O){var N=[];for(var P=0;P<O.length;P++){N.push(O[P])}return N}};var C={isTag:function(O,N){return(N=="*")||(N.toLowerCase()==O.nodeName.toLowerCase())},previousSiblingElement:function(N){do{N=N.previousSibling}while(N&&N.nodeType!=1);return N},nextSiblingElement:function(N){do{N=N.nextSibling}while(N&&N.nodeType!=1);return N},hasClass:function(N,O){return(O.className||"").match("(^|\\s)"+N+"(\\s|$)")},getByTag:function(N,O){return O.getElementsByTagName(N)}};var J={"#":function(N,P){for(var O=0;O<N.length;O++){if(N[O].getAttribute("id")==P){return[N[O]]}}return[]}," ":function(O,Q){var N=[];for(var P=0;P<O.length;P++){N=N.concat(E.toArray(C.getByTag(Q,O[P])))}return N},">":function(O,R){var N=[];for(var Q=0,S;Q<O.length;Q++){S=O[Q];for(var P=0,T;P<S.childNodes.length;P++){T=S.childNodes[P];if(T.nodeType==1&&C.isTag(T,R)){N.push(T)}}}return N},".":function(O,Q){var N=[];for(var P=0,R;P<O.length;P++){R=O[P];if(C.hasClass([Q],R)){N.push(R)}}return N},":":function(N,P,O){return(H.pseudoClasses[P])?H.pseudoClasses[P](N,O):[]}};H.selectors=J;H.pseudoClasses={};H.util=E;H.dom=C;return H})();

// sIFR fonts
var eSifrEricsson = {
	src: 'swf/eSifrEricsson.swf',
	ratios: [6,1.24,7,1.21,8,1.18,10,1.16,11,1.13,12,1.12,13,1.11,15,1.1,17,1.09,19,1.08,22,1.07,26,1.06,32,1.05,41,1.04,58,1.03,97,1.02,1.01],
	wmode: 'transparent',
	css: [ 
	      '.sIFR-root {color: #333; text-transform:uppercase}', 
	      'a {color: #3C6296; text-decoration:none}', 
	      'a:hover {color: #3C6296;text-decoration:underline}' 
    ]
};

var eSifrEricssonMaster = {
	src: 'swf/eSifrEricssonMaster.swf',
	ratios:[6,1.24,7,1.21,8,1.18,10,1.16,11,1.13,12,1.12,13,1.11,15,1.1,17,1.09,19,1.08,22,1.07,26,1.06,32,1.05,41,1.04,58,1.03,97,1.02,1.01],
	wmode: 'transparent'
};

var eSifrEricssonBlueScarlet = {
	src: 'swf/eSifrEricssonBlueScarlet.swf',
	ratios: [6,1.24,7,1.21,8,1.18,10,1.16,11,1.13,12,1.12,13,1.11,15,1.1,17,1.09,19,1.08,22,1.07,26,1.06,32,1.05,41,1.04,58,1.03,97,1.02,1.01],
	wmode: 'transparent'
};

sIFR.activate(eSifrEricsson,eSifrEricssonMaster,eSifrEricssonBlueScarlet); 
sIFR.replace(eSifrEricssonMaster, {selector: 'h1.eH1Sifr, h5.eH5SifrCarousell'});
sIFR.replace(eSifrEricsson, {selector: 'h2.eH2Sifr, h3.eH3Sifr'});
sIFR.replace(eSifrEricssonBlueScarlet, { selector: 'h1.eH1SifrBlueScarlet'});

// YUI aliases
var Y = YAHOO;
var YU = Y.util;
var YUD = YU.Dom;
var YUE = YU.Event;
var YW = Y.widget;

// Carousel
YAHOO.namespace("Ericsson.carousel");

YAHOO.Ericsson.carousel = function (target, cfg, json) {
	
	//YAHOO.log("Carousel loaded", "info");
	
	this.params = {
		carousels: "",
		viewportWidth: "",
		views: "",
		animation: "",
		currentCarousel: "",		
		currentElem: 1,
		cfg: {
			numVisible: 1,
			strechToFit: false,
			positionTracker: false			
		},
		scope: "",
		jsonEnabled: false,
		posTrackerContainer: "", // Position tracker container element
		target: "", // The carousel container element
		learnMoreTxt: "Learn more about"
	}			
	
	// Confirm existence of target carousel
	if(document.getElementById(target)) {
		this.params.target = document.getElementById(target);		
	} else {		
		return false;
	}
	
	if(cfg.learnMoreTxt) {
		this.params.learnMoreTxt = cfg.learnMoreTxt;
	}
	
	this.params.cfg = cfg;
	
	this.setup = function (carousel_el, cfg) {
		
		this.next_button = YU.Dom.getElementsByClassName("eCarouselNext", "a", carousel_el);
		this.prev_button = YU.Dom.getElementsByClassName("eCarouselPrev", "a", carousel_el);			
		
		// Hide the "previous" button
		YUD.addClass(this.prev_button, "eHide");
		
		YUE.addListener(this.next_button, "click", this.next, this, true);
		YUE.addListener(this.prev_button, "click", this.previous, this, true);			
		
		var lis = carousel_el.getElementsByTagName("li");
		
		if (this.params.cfg.strechToFit) {			
			container = YAHOO.util.Dom.getElementBy(function(n) {
				return n.className == "eCarouselContent";
			}, "div", document.getElementById(target));
						
			for (i = 0, n = lis.length; i < n; i = i + 1) {				
				li = new YU.Element(lis[i]);
				li.setStyle("width", container.offsetWidth + "px");
			}			
		}
		
		if (this.params.cfg.positionTracker) {
			this.params.posTrackerContainer = YAHOO.util.Dom.getElementBy(function(n) {
				return n.className == "ePosTracker";
			}, "p", document.getElementById(target));		
			
			for(i = 0, n = lis.length; i < n; i = i + 1) {
				this.dot = new YAHOO.util.Element(document.createElement("span"));				
				if(i === 0) {					
					this.dot.set("className", "active");
				}
				this.dot.appendTo(this.params.posTrackerContainer);				
			}
		}
		 
		this.params.viewportWidth = lis[0].offsetWidth;
						
		this.params.views = lis.length;			
	};
	
	this.next = function (e) {
		var elem = "",
			obj = {},
			queueForHide = false;
		
		// Show the "previous" button
		YUD.removeClass(this.prev_button, "eHide");
		
		this.params.bounds = document.getElementById(this.params.target.id).offsetWidth;			
		
		elem = YU.Dom.getElementsByClassName("eCarouselElement", "ol", this.params.target)[0];
		
		carouselWidth = parseInt(elem.style.width, 10);
		carouselOffset = elem.offsetLeft;
		
		if(this.params.jsonEnabled) {			
			obj = { by: -this.params.viewportWidth };
			
			if(carouselWidth + (carouselOffset - this.params.viewportWidth) < this.params.bounds) {							
				obj = { by : this.params.bounds - (carouselWidth + (carouselOffset + 24))};
				// Hide the "next" button
				queueForHide = true;
			}
		} else {
			var max = ((this.params.views - (this.params.cfg.numVisible - 1)) * -this.params.viewportWidth);					
			
			elem.offsetLeft - this.params.viewportWidth > max ? obj = { by: -this.params.viewportWidth } : obj = { to: 0 };			
		}	
				
		YUE.preventDefault(e);
			
		if((!this.params.animation) || (this.params.animation && !this.params.animation.isAnimated())) {
			
			
			if(this.params.cfg.positionTracker) {
				this.dots = YUD.getChildren(this.params.posTrackerContainer);
				for (i = 0, n = this.dots.length; i < n; i = i + 1) {
					if(this.dots[i].className === "active") {
						this.dots[i].className = "";
						next = YUD.getNextSibling(this.dots[i]);
						next.className = "active";
						break;
					}
				}
			}
			
			this.move(elem, obj);
			
			// Update position
			this.params.currentElem++;
			
			// Queue Next-button for hiding if final element in carousel
			if(this.params.currentElem === this.params.views) {			
				queueForHide = true;
			}
			
			if(queueForHide) {
				YUD.addClass(this.next_button, "eHide");
				// Shift focus to Prev-button to aid keyboard navigation
				this.prev_button[0].focus();			}
		}				
	};
	
	this.previous = function (e) {
		var elem = "",
			obj = {},
			queueForHide = false;			
		
		elem = YU.Dom.getElementsByClassName("eCarouselElement", "ol", this.params.target)[0];		
		
		var max = 0;								
		
		elem.offsetLeft + this.params.viewportWidth < max ? obj = { by: +this.params.viewportWidth } : obj = { to: 0 };		
		
		// Hide the "previous" button
		if(elem.offsetLeft + this.params.viewportWidth >= max) {
			queueForHide = true;
		}
		
		// Show the "next" button
		YUD.removeClass(this.next_button, "eHide");
		
		YUE.preventDefault(e);
		
		if((!this.params.animation) || (this.params.animation && !this.params.animation.isAnimated())) {
			
			// Update position tracker
			if(this.params.cfg.positionTracker) {
				this.dots = YUD.getChildren(this.params.posTrackerContainer);
				for (i = 0, n = this.dots.length; i < n; i = i + 1) {
					if(this.dots[i].className === "active") {
						this.dots[i].className = "";
						next = YUD.getPreviousSibling(this.dots[i]);
						next.className = "active";
						break;
					}
				}
			}
			
			this.params.currentElem--;
			
			this.move(elem, obj);
			if(queueForHide) {
				YUD.addClass(this.prev_button, "eHide");
				// Shift focus to Next-button to aid keyboard navigation
				this.next_button[0].focus();
			}
		}
	};
	
	this.move = function (elem, obj) {
		this.params.animation = new YAHOO.util.Anim(elem, { 
			left: obj,
			duration: 0.2
		});
		
		this.params.animation.method = YAHOO.util.Easing.easeOut;
		this.params.animation.animate();
	}	
	
	if(json && json.length > 0) {						
		
		YAHOO.log("JSON enabled for carousel", "info");
		
		this.params.jsonEnabled = true;
		
		wrapper = YAHOO.util.Dom.getElementBy(function(n) {
			return n.className == "eCarouselContent";
		}, "div", document.getElementById(target));						 
		
		container = new YAHOO.util.Element(document.createElement("ol"));
		container.addClass("eCarouselElement");		
		container.appendTo(wrapper);
		
		var plaqueNr = 0; 
		
		for(i = 0, n = json.length; i < n; i++) {
			li = new YAHOO.util.Element(document.createElement("li"));
			
			imageBW = new YAHOO.util.Element(document.createElement("img"));												
			imageBW.set("src", json[i].imageBW);
			imageBW.addClass("bw");
			imageBW.appendTo(li);
			
			image = new YAHOO.util.Element(document.createElement("img"));												
			image.set("src", json[i].image);
			image.addClass("color");
			image.appendTo(li);
			
			plaque = new YU.Element(document.createElement("div"));				
			plaque.addClass("ePlaque");
			
			plaqueNr++;
			if (plaqueNr === 5) {
				plaqueNr = 1;
			}
			
			plaque.addClass("p" + plaqueNr);
			
			fullname = new YU.Element(document.createElement("h3"));
			nameText = document.createTextNode(json[i].first_name + " " + json[i].last_name);
			fullname.appendChild(nameText);
			fullname.addClass("eH3SifrRedOrange");
			fullname.addClass("eNm");
			fullname.appendTo(plaque);
			
			info = new YU.Element(document.createElement("p"));
			
			position = new YU.Element(document.createElement("span")); 
			positionText = document.createTextNode(json[i].position);
			position.appendChild(positionText);
			
			info.appendChild(position);
							
			locText = document.createTextNode(json[i].loc);
			info.appendChild(locText);				
			
			info.appendTo(plaque);
			
			link = new YU.Element(document.createElement("a"));
			link.set("href", json[i].href);
			link.addClass("eMt");
			linkStrong = new YU.Element(document.createElement("strong"));
			link.appendChild(linkStrong);
			linkText = document.createTextNode(this.params.learnMoreTxt + " " + json[i].first_name);
			linkStrong.appendChild(linkText);
			
			link.appendTo(plaque);
			
			plaque.appendTo(li);
			
			li.appendTo(container);
		}	
		
		container.setStyle("width", (YUD.get(li).offsetWidth * json.length) + "px");
	}
	
	this.params.bounds = document.getElementById(target).offsetWidth;	
	
	this.setup(document.getElementById(target), this.params.cfg);
};

// Generic hover component 
YAHOO.namespace("Ericsson.hover");

YAHOO.Ericsson.hover = function(target, tag) {
	this.over = function(e) {
		YU.Dom.addClass(this, "active");								
	}
	
	this.out = function(e) {
		YU.Dom.removeClass(this, "active");									
	}
	
	YUE.delegate(target, "mouseover", this.over, tag);
	
	YUE.delegate(target, "mouseout", this.out, tag);
}

/*
 * Style buttons
 * 
 * Wrapper
 * <span class="yui-button e[Type] e[Color]">
 *   <span class="first-child">
 *     <input type="[type]" value="[value/label]">
 */

YAHOO.namespace("Ericsson.buttons");

YAHOO.Ericsson.buttons = {
	init: function() {
	
		/*try {
			this.targetForm = YU.Selector.query("form");
		} catch (err) {
			return false;
		}*/
	
		var forms = document.getElementsByTagName("form");
		var buttonContainer = "";

		for (i = 0, n = forms.length; i < n; i = (i + 1)) {						
			
			buttonContainer = YU.Dom.getElementsByClassName("eSubmit", "span", forms[i]);						
						
			if(buttonContainer.length > 0) {
				buttonContainer[0].id = ("button_" + (i + 1));
				
				new YAHOO.widget.Button(
					"button_" + (i + 1),
					{
						type: "submit"
					}
				)
			}					
		}
	}
}

/*
 * Style select elements
 * 
 * Wrapper
 * <div class="eMenuContainer" id="foo">
 *   <select id="bar">
 *     <option>somevalue</option>
 */
YAHOO.namespace("Ericsson.selects");

YAHOO.Ericsson.selects = {
	init: function () {
		targets = YU.Dom.getElementsByClassName("eMenuContainer", "div");		
		
		for (i = 0, n = targets.length; i < n; i = i + 1) {
			// Set container
			containerId = targets[i].id;	
			
			// Skip Country select
			if (				
				containerId != 'eNavigationChildrenContainer' &&
				containerId != 'eNavigationProductsContainer'
			) {
				// Set ID from select
				select = YU.Dom.getFirstChildBy(targets[i], function (n) { 
					return n.tagName.toLowerCase() === "select";
				});
				menuId = select.id;
					
				// Set label from first option value
				firstOption = YU.Dom.getFirstChildBy(select, function (n) {
					return n.hasAttribute("selected")
				});
				menuLabel = firstOption.innerHTML;				
				
				this.setup(containerId, menuId, menuLabel);
			}			
		};
	},
	setup: function (containerId, menuId, menuLabel) {	
		
		Button = new YAHOO.widget.Button ({
			id: menuId,
			name: menuId,
			label: "<em class='yui-button-label'>" + menuLabel + "</em>",
			type: "menu",
			menu: menuId,
			container: containerId
		});
		
		if(YU.Dom.hasClass(containerId, "eQuickNav")) {			
			Button.on("selectedMenuItemChange", this.changeValue);
		} else {			
			Button.on("selectedMenuItemChange", this.onSelectedMenuItemChange);
		}
	},
	onSelectedMenuItemChange: function (e) {			
		
		var oMenuItem = e.newValue;		
		
		this.set("label", ("<em class='yui-button-label'>" + 
			oMenuItem.cfg.getProperty("text") + "</em>"));
	},
	changeValue: function (e) {
		
		var oMenuItem = e.newValue;							
	}
}

// Toolbar and tabs for Hero Area
YAHOO.namespace("Ericsson.heroTabs");
YAHOO.Ericsson.heroTabs = {
	init : function() {
		this.eToolBarLinks = YUD.getElementsByClassName("eToolBarLink", "a");
		for(var i=0; i<this.eToolBarLinks.length; i++) {
			  YUE.addListener(this.eToolBarLinks[i],"click",this.connectlinkandtabs,this);
		}
		
	},
	connectlinkandtabs : function(e,obj) {
		YUE.preventDefault(e);
		YUD.removeClass(YUD.getElementsByClassName("eToolBarLink", "a"),"eToolBarLinkActive");		
		if(YUD.hasClass(this,"eToolBarLinkActive")) {
			YUD.removeClass(this,"eToolBarLinkActive");
		} else {
			YUD.addClass(this,"eToolBarLinkActive");
		}
		var eTab = this.id + "Tab";
		YUD.removeClass(YUD.getElementsByClassName("eTab", "div"),"eShow");
		if(YUD.hasClass(eTab,"eShow")) {
			YUD.removeClass(eTab,"eShow");
		} else {
			YUD.addClass(eTab,"eShow");
		}
		//Hide flash object
		if(this.id == "eFlashShow"){
			YUD.setStyle('yuiswf0','display','block');
		}else{
			YUD.setStyle('yuiswf0','display','none');
		}
		// Take care of list toolbar bg
		if(YUD.get('eToolbarGroupContainer')){
			if(this.id == "eTextShow"){
				YUD.setStyle('eToolbarGroupContainer','background','#FFF');
				sIFR.replace(eSifrEricssonMaster, {selector: 'h2.eH2Sifr, h3.eH3Sifr'});
			}else{
				YUD.setStyle('eToolbarGroupContainer','background','#F8F8F8');		
			}
		}
	}		 
}	

// Pre-fill input values
YAHOO.namespace("Ericsson.prefill");
YAHOO.Ericsson.prefill = function () {	
	
	var cleanField = function(e, obj) {
		if(obj.value === "SEARCH") {
			obj.value = "";
		}
	}
	
	var refillField = function(e, obj) {
		if(obj.value === "") {
			obj.value = "SEARCH";
		}
	}
	
	var searchFields = YUD.getElementsByClassName("eSearchFormInput", "input");
	
	for (i = 0, n = searchFields.length; i < n; i++) {
		if (searchFields[i].value == "") {
			searchFields[i].value = "SEARCH";
		}
		YUE.addListener(searchFields[i], "click", cleanField, searchFields[i], false);
		YUE.addListener(searchFields[i], "blur", refillField, searchFields[i], false);
	}
}

// Add menu to eNavigationChildren
YAHOO.namespace("Ericsson.breadcrumbNavigation");
YAHOO.Ericsson.breadcrumbNavigation = function () {	
	
	// First find out if we should show the menu at all
	if (YUD.getElementsByClassName('eNavChild', 'option').length < 2){
		YUD.setStyle('eNavigationChildrenContainer', 'display', 'none');
		return;
	}
	
	var Button = YAHOO.widget.Button;
	var oneNCMenuRender = function (type, args, button) {
		button.set("selectedMenuItem", this.getItem(0));
	};
	var oeNCSelectedMenuItemChange = function (event) {
		var oMenuItem = event.newValue;
		this.set("label", ("<em class=\"yui-button-label\">" + 	oMenuItem.cfg.getProperty("text") + "</em>"));
		
		window.location.href = oMenuItem.value;
	};	
	
	// Render YUI drop-down menu for all browser except IE 6	
	if(YAHOO.env.ua.ie != 6) {
		var oeNCMenuButton = new Button({ 
			id: "eNCMenuButton", 
			name: "eNCMenuButton",
			label: "<em class=\"yui-button-label\">Learn more about this area</em>", 
			type: "menu",  
			menu: "eNavigationChildren", 
			container: "eNavigationChildrenContainer"
		});
	} else {
		// Add onchange handling for IE 6 fallback
		document.getElementById("eNavigationChildren").onchange = function() { 
			window.location.href = this.value; 
		};
	}
	
	oeNCMenuButton.on("selectedMenuItemChange", oeNCSelectedMenuItemChange);
}

//FlowPlayer
YUE.onContentReady("eFlvStory1", function () {
	$f('eFlvStory1', {
		src: 'swf/flowplayer.commercial-3.1.5.swf',
		wmode: 'opaque',
		allowfullscreen: true
	},
	{ 
		key: '#@d4acb3f5e7820c9715b',
		clip: { 
			autoPlay: false,
			autoBuffering: true,
			wmode: 'opaque'
		},
		/*
		logo: { 
		    url: 'swf/eSifrEricsson.swf'
		    ,top: '20' 
		    ,right: '20' 
		    ,opacity: '0.4' 
		    ,width: '20' 
		    ,height: '20'
		    ,fullscreenOnly: true 
		    ,displayTime: 0
		    ,fadeSpeed: 0
		    ,linkUrl: 'http://www.ericsson.com'
		},
		*/
		contextMenu: [ 
		    "Ericsson.com video player 1.1" 
		],
		play: { 
			url: 'images/eplaybutton.png',
			width: 72,
			height: 72,
			opacity: 0.9,
			label: null,
			replayLabel: 'Play again',
			fadeSpeed: 500,
			rotateSpeed: 50 
		},
		plugins: {
			controls: null
		}
	}).controls('eFlowPlayer', { 
		playHeadClass: 'playhead',
		trackClass: 'track',
		playClass: 'play',
		pauseClass: 'pause',
		bufferClass: 'buffer',
		progressClass: 'progress',
		timeClass: 'time',
		muteClass: 'mute', 
		unmuteClass: 'unmute', 
		duration: 0
	});
});

//Global menu
YAHOO.util.Event.onContentReady("eGlobalMenu", function () {
    var oMenuBar = new YAHOO.widget.MenuBar("eGlobalMenu", { 
        autosubmenudisplay: true,         
        lazyload: true,
        monitorresize: true,
        position: "static",
        hidedelay: 750
    });
    oMenuBar.render();   
});

// Country menu
YAHOO.util.Event.onContentReady("eHeaderToolMenu", function () {
    var oMenuBar = new YAHOO.widget.MenuBar("eHeaderToolMenu", { 
        autosubmenudisplay: true, 
        hidedelay: 750,
        lazyload: true,
        monitorresize: true,
        position: "static"
    });
    oMenuBar.render();
});

//On DOM ready init
var eOnDomReadyInit = function() {	
	YAHOO.Ericsson.selects.init();
	YU.Dom.addClass(document.getElementsByTagName("body"), "eJS");
	YAHOO.Ericsson.breadcrumbNavigation();
	YAHOO.Ericsson.prefill();
	//eFlowPlayerInit();
    
    var silverNav = document.getElementById("eNavigationChildrenContainer");        
    
    if(silverNav) {
    	var silverNavWrapper = new YAHOO.util.Element(YUD.getAncestorByTagName(YUD.getAncestorByTagName(silverNav, "div"), "div"));
    	
    	silverNavWrapper.setStyle("zIndex", "50");
    }
}

YUE.onDOMReady(eOnDomReadyInit); 

// On Window Load init
var eOnWindowLoadInit = function () {	
	YAHOO.Ericsson.heroTabs.init();
}

YUE.addListener(window, "load", eOnWindowLoadInit);	

