﻿
function Can_Widget_Engine_Run(widgetType, widgetContainer, widgetIdentifier, specificParameters, timeOut, dominioEntidad) 
{
    Can_Widget_Engine_Init(widgetType, widgetContainer, widgetIdentifier, specificParameters, dominioEntidad);
}

function Can_Widget_Engine_Init(widgetType, widgetContainer, widgetIdentifier, specificParameters, dominioEntidad) 
{
    var urlBase = Can_Widget_Engine_Url_Base(widgetType, widgetContainer, widgetIdentifier, specificParameters, dominioEntidad);

    Can_Widget_Engine_Get_Style(widgetIdentifier, urlBase);
    Can_Widget_Engine_Get_Html(widgetIdentifier, urlBase);
    Can_Widget_Engine_Get_JavaScript(widgetIdentifier, urlBase);
    
}

function Can_Widget_Engine_Get_Style(widgetIdentifier, urlBase) 
{
    var urlSpecific = urlBase + "&ws=Style";
    
    if (document.createStyleSheet) 
    {
        if (!document.styleSheets.length > 0 || document.styleSheets(0).href.indexOf(urlSpecific) < 0) 
        {
            document.createStyleSheet(urlSpecific, 0);
        }
        else 
        {
            document.styleSheets(0).href = urlSpecific;
        }
    }
    else 
    {
        var styleContainerName = Can_Widget_Engine_Object_Name('Style', widgetIdentifier);
        var headContainer = document.getElementsByTagName("head")[0];
        var styleContainer = document.getElementById(styleContainerName);
        if (styleContainer) 
        {
            headContainer.removeChild(styleContainer);
        }
        styleContainer = document.createElement("link");
        styleContainer.id = styleContainerName;
        styleContainer.rel = "stylesheet";
        styleContainer.type = "text/css";
        headContainer.appendChild(styleContainer);
        styleContainer.href = urlSpecific;
    }
}

function Can_Widget_Engine_Get_Html(widgetIdentifier, urlBase)
{
    var urlSpecific = urlBase + "&ws=HtmlCallback&wl=" + escape(document.location);
    var scriptHtmlCallbackContainerName = Can_Widget_Engine_Object_Name('CallbackScript', widgetIdentifier);
    var scriptGenericContainerName = Can_Widget_Engine_Object_Name('GenericScript', widgetIdentifier);
    var scriptHtmlCallbackContainer = document.getElementById(scriptHtmlCallbackContainerName);
    var scriptGenericContainer = document.getElementById(scriptGenericContainerName);
    if(scriptHtmlCallbackContainer) 
    {
        scriptGenericContainer.removeChild(scriptHtmlCallbackContainer);
    }
    scriptHtmlCallbackContainer = document.createElement("script");
    scriptHtmlCallbackContainer.id = scriptHtmlCallbackContainerName;
    scriptGenericContainer = document.getElementById(scriptGenericContainerName);
    scriptGenericContainer.appendChild(scriptHtmlCallbackContainer);
    scriptHtmlCallbackContainer.src = urlSpecific;
}


function Can_Widget_Engine_Get_JavaScript(widgetIdentifier, urlBase) 
{
    var urlSpecific = urlBase + "&ws=JavaScript";
    var scriptContainerName = Can_Widget_Engine_Object_Name('SpecificScript', widgetIdentifier);    
    headContainer = document.getElementsByTagName("head")[0];
    scriptContainer = document.getElementById(scriptContainerName);
    if(scriptContainer) 
    {
        headContainer.removeChild(scriptContainer);
    }
    scriptContainer = document.createElement("script");
    scriptContainer.id = scriptContainerName;
    headContainer.appendChild(scriptContainer);
    scriptContainer.src = urlSpecific;
}

function Can_Widget_Engine_Object_Prefix() 
{
    return "WCAN";
}

function Can_Widget_Engine_Object_Name(objectContainerName, widgetIdentifier) 
{
    return Can_Widget_Engine_Object_Prefix() + '_' + objectContainerName + '_' + widgetIdentifier;
}

function Can_Widget_Engine_Callback_Html(html, widgetIdentifier) 
{
    var htmlContainerName = Can_Widget_Engine_Object_Name('Html', widgetIdentifier);
    var htmlContainer = document.getElementById(htmlContainerName);
    htmlContainer.innerHTML = html;
}

function Can_Widget_Engine_Protocol_And_Domain(domainEntity)
{
    return ('https:' == document.location.protocol ? 'https:' : 'http:') + "//" + domainEntity;
}

function Can_Widget_Engine_Url_Base(widgetType, widgetContainer, widgetIdentifier, specificParameters, dominioEntidad)
{
    var url = Can_Widget_Engine_Protocol_And_Domain(dominioEntidad) + "/Widgets/Handlers/WidgetHandler.ashx?wt=" + widgetType + "&wc=" + widgetContainer + "&wi=" + widgetIdentifier;
    if (specificParameters != null) 
    {
        if (specificParameters.replace(/\s/g, "") != "") 
        {
            url = url + "&wp=" + specificParameters;
        }
    }
    return url;
}

function Can_Widget_Engine_Is_Null_Or_Empty_String(string) 
{
    var isNullOrEmptyString = true;
    if (string != null) 
    {
        if (string.replace(/\s/g, "") != "") 
        {
            isNullOrEmptyString = false;
        }
    }
    return isNullOrEmptyString;
}

function CWE_EncodedCharacter(htmlCode, charCode) 
{
    this.HtmlCode = htmlCode;
    this.CharCode = charCode;
}

function Can_Widget_Engine_Get_Array_Of_Html_Encoded_Character() 
{
    var arrayOfEncodedCharacters = new Array();
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('quot', 0x0022));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('amp', 0x0026));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lt', 0x003c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('gt', 0x003e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('nbsp', 0x00a0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('iexcl', 0x00a1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('cent', 0x00a2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('pound', 0x00a3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('curren', 0x00a4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('yen', 0x00a5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('brvbar', 0x00a6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sect', 0x00a7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('uml', 0x00a8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('copy', 0x00a9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ordf', 0x00aa));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('laquo', 0x00ab));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('not', 0x00ac));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('shy', 0x00ad));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('reg', 0x00ae));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('macr', 0x00af));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('deg', 0x00b0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('plusmn', 0x00b1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sup2', 0x00b2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sup3', 0x00b3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('acute', 0x00b4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('micro', 0x00b5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('para', 0x00b6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('middot', 0x00b7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('cedil', 0x00b8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sup1', 0x00b9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ordm', 0x00ba));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('raquo', 0x00bb));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('frac14', 0x00bc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('frac12', 0x00bd));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('frac34', 0x00be));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('iquest', 0x00bf));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Agrave', 0x00c0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Aacute', 0x00c1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Acirc', 0x00c2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Atilde', 0x00c3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Auml', 0x00c4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Aring', 0x00c5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('AElig', 0x00c6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ccedil', 0x00c7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Egrave', 0x00c8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Eacute', 0x00c9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ecirc', 0x00ca));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Euml', 0x00cb));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Igrave', 0x00cc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Iacute', 0x00cd));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Icirc', 0x00ce));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Iuml', 0x00cf));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ETH', 0x00d0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ntilde', 0x00d1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ograve', 0x00d2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Oacute', 0x00d3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ocirc', 0x00d4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Otilde', 0x00d5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ouml', 0x00d6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('times', 0x00d7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Oslash', 0x00d8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ugrave', 0x00d9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Uacute', 0x00da));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Ucirc', 0x00db));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Uuml', 0x00dc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Yacute', 0x00dd));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('THORN', 0x00de));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('szlig', 0x00df));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('agrave', 0x00e0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('aacute', 0x00e1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('acirc', 0x00e2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('atilde', 0x00e3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('auml', 0x00e4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('aring', 0x00e5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('aelig', 0x00e6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ccedil', 0x00e7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('egrave', 0x00e8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('eacute', 0x00e9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ecirc', 0x00ea));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('euml', 0x00eb));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('igrave', 0x00ec));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('iacute', 0x00ed));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('icirc', 0x00ee));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('iuml', 0x00ef));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('eth', 0x00f0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ntilde', 0x00f1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ograve', 0x00f2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('oacute', 0x00f3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ocirc', 0x00f4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('otilde', 0x00f5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ouml', 0x00f6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('divide', 0x00f7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('oslash', 0x00f8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ugrave', 0x00f9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('uacute', 0x00fa));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ucirc', 0x00fb));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('uuml', 0x00fc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('yacute', 0x00fd));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('thorn', 0x00fe));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('yuml', 0x00ff));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('OElig', 0x0152));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('oelig', 0x0153));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Scaron', 0x0160));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('scaron', 0x0161));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Yuml', 0x0178));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('fnof', 0x0192));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('circ', 0x02c6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('tilde', 0x02dc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Alpha', 0x0391));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Beta', 0x0392));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Gamma', 0x0393));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Delta', 0x0394));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Epsilon', 0x0395));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Zeta', 0x0396));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Eta', 0x0397));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Theta', 0x0398));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Iota', 0x0399));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Kappa', 0x039a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Lambda', 0x039b));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Mu', 0x039c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Nu', 0x039d));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Xi', 0x039e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Omicron', 0x039f));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Pi', 0x03a0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter(' Rho ', 0x03a1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Sigma', 0x03a3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Tau', 0x03a4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Upsilon', 0x03a5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Phi', 0x03a6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Chi', 0x03a7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Psi', 0x03a8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Omega', 0x03a9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('alpha', 0x03b1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('beta', 0x03b2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('gamma', 0x03b3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('delta', 0x03b4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('epsilon', 0x03b5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('zeta', 0x03b6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('eta', 0x03b7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('theta', 0x03b8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('iota', 0x03b9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('kappa', 0x03ba));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lambda', 0x03bb));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('mu', 0x03bc));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('nu', 0x03bd));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('xi', 0x03be));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('omicron', 0x03bf));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('pi', 0x03c0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rho', 0x03c1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sigmaf', 0x03c2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sigma', 0x03c3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('tau', 0x03c4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('upsilon', 0x03c5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('phi', 0x03c6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('chi', 0x03c7));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('psi', 0x03c8));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('omega', 0x03c9));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('thetasym', 0x03d1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('upsih', 0x03d2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('piv', 0x03d6));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ensp', 0x2002));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('emsp', 0x2003));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('thinsp', 0x2009));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('zwnj', 0x200c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('zwj', 0x200d));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lrm', 0x200e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rlm', 0x200f));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ndash', 0x2013));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('mdash', 0x2014));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lsquo', 0x2018));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rsquo', 0x2019));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sbquo', 0x201a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ldquo', 0x201c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rdquo', 0x201d));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('bdquo', 0x201e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('dagger', 0x2020));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Dagger', 0x2021));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('bull', 0x2022));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('hellip', 0x2026));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('permil', 0x2030));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('prime', 0x2032));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('Prime', 0x2033));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lsaquo', 0x2039));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rsaquo', 0x203a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('oline', 0x203e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('frasl', 0x2044));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('euro', 0x20ac));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('image', 0x2111));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('weierp', 0x2118));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('real', 0x211c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('trade', 0x2122));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('alefsym', 0x2135));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('larr', 0x2190));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('uarr', 0x2191));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rarr', 0x2192));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('darr', 0x2193));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('harr', 0x2194));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('crarr', 0x21b5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lArr', 0x21d0));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('uArr', 0x21d1));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rArr', 0x21d2));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('dArr', 0x21d3));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('hArr', 0x21d4));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('forall', 0x2200));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('part', 0x2202));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('exist', 0x2203));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('empty', 0x2205));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('nabla', 0x2207));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('isin', 0x2208));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('notin', 0x2209));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ni', 0x220b));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('prod', 0x220f));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sum', 0x2211));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('minus', 0x2212));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lowast', 0x2217));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('radic', 0x221a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('prop', 0x221d));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('infin', 0x221e));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ang', 0x2220));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('and', 0x2227));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('or', 0x2228));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('cap', 0x2229));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('cup', 0x222a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('int', 0x222b));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('there4', 0x2234));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sim', 0x223c));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('cong', 0x2245));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('asymp', 0x2248));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ne', 0x2260));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('equiv', 0x2261));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('le', 0x2264));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('ge', 0x2265));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sub', 0x2282));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sup', 0x2283));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('nsub', 0x2284));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sube', 0x2286));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('supe', 0x2287));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('oplus', 0x2295));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('otimes', 0x2297));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('perp', 0x22a5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('sdot', 0x22c5));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lceil', 0x2308));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rceil', 0x2309));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lfloor', 0x230a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rfloor', 0x230b));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('lang', 0x2329));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('rang', 0x232a));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('loz', 0x25ca));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('spades', 0x2660));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('clubs', 0x2663));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('hearts', 0x2665));
    arrayOfEncodedCharacters.push(new CWE_EncodedCharacter('diams', 0x2666));
    return arrayOfEncodedCharacters;
}

function Can_Widget_Engine_Get_Decoded_Character(arrayOfEncodedCharacters, htmlCode) 
{
    var decodedCharacter = '';

    if (htmlCode.length > 1 && htmlCode.charAt(0) == '#') 
    {
        decodedCharacter = htmlCode.substring(1);
        if (htmlCode.charAt(1).toLowerCase() == 'x') 
        {
            decodedCharacter = '0' + decodedCharacter;
        }
        decodedCharacter = String.fromCharCode(eval(decodedCharacter));
    }
    else 
    {
        if (arrayOfEncodedCharacters != null) 
        {
            if (Can_Widget_Engine_Is_Null_Or_Empty_String(htmlCode) == false) 
            {
                for (var i = 0; i < arrayOfEncodedCharacters.length; i++) 
                {
                    if (arrayOfEncodedCharacters[i].HtmlCode == htmlCode) 
                    {
                        decodedCharacter = String.fromCharCode(arrayOfEncodedCharacters[i].CharCode);
                        i = arrayOfEncodedCharacters.length;
                    }
                }
            }
        }
    }
    
    return decodedCharacter;
}

function Can_Widget_Engine_Html_Decode(codedHtml) 
{
    var decodedHtml = "";

    if (codedHtml != null) 
    {
        var arrayOfEncodedCharacters = Can_Widget_Engine_Get_Array_Of_Html_Encoded_Character();
        for(var i = 0; i < codedHtml.length; i++)
        {
            var decodedCharacter = codedHtml.charAt(i);
            if(decodedCharacter == '&')
            {
                var semicolonIndex = codedHtml.indexOf(';', i + 1);
                if (semicolonIndex > 0) 
                {
                    var htmlCode = codedHtml.substring(i + 1, semicolonIndex);
                    decodedCharacter = Can_Widget_Engine_Get_Decoded_Character(arrayOfEncodedCharacters, htmlCode);               
                    i = semicolonIndex;
                }
            }
            decodedHtml += decodedCharacter;
        }
    }
    
    return decodedHtml;
}
