(function() {
    /******* Load CSS *******/
    var donationPieChartAdded = false, donationDoughnutChartAdded = false, progressBarAdded = false, chartLoaded = false;
    // Host should be changed for every dev environment
    var host = "https://www.lls.org/";

    widgetPostExecute = function () {
        if (progressBarAdded && donationPieChartAdded && donationDoughnutChartAdded && chartLoaded) {
            lls_progress_bar_init();
            piechartInit();
            doughtnutChartInit();
        }
    };

    llsProgressBarWidgetInit = function ()
    {
        var js = jQuery.noConflict();
        if ( js( "#current_url_host" ).length ) {   		 
    	    host = js( "#current_url_host" ).val();
    	}
        var css_link = js("<link>", {
            rel: "stylesheet",
            type: "text/css",
            href: host+"sites/all/themes/lls/css/lls_chart.css"
        });
        css_link.appendTo('head');

        loadExternalJavaScript(host+'sites/all/themes/lls/js/vendor/Chart.js', 'chart');
        if(((typeof lls_module_progress_bar_js_included) == 'undefined') || lls_module_progress_bar_js_included == null || lls_module_progress_bar_js_included == 'undefined')
            loadExternalJavaScript(host+'sites/all/themes/lls/js/modules/module-progress-bar.js', 'progress-bar');
        else
            progressBarAdded = true;
        if(((typeof lls_module_donation_pie_chart_js_included) == 'undefined') || lls_module_donation_pie_chart_js_included == null || lls_module_donation_pie_chart_js_included == 'undefined')
            loadExternalJavaScript(host+'sites/all/themes/lls/js/modules/module-donation-pie-chart.js', 'pie-chart');
        else
            donationPieChartAdded = true;
        if(((typeof lls_module_donation_doughnut_chart_js_included) == 'undefined') || lls_module_donation_doughnut_chart_js_included == null || lls_module_donation_doughnut_chart_js_included == 'undefined')
            loadExternalJavaScript(host+'sites/all/themes/lls/js/modules/module-donation-doughnut-chart.js', 'doughnut');
        else
            donationDoughnutChartAdded = true;

        //lls_progress_bar_init();
        /******* Load HTML *******/
        var jsonp_url;
        var element =  document.getElementById('progress-bar-id');
        if (typeof(element) != 'undefined' && element != null)
        {
            if(js("#progress-bar-id").attr("service-input") != ""){
                var serviceInput = js("#progress-bar-id").attr("service-input");
                jsonp_url = host+"lls-services/get_progress_bar_widget/retrieve?"+serviceInput;
            }
            else
                jsonp_url = host+"lls-services/get_progress_bar_widget/retrieve?marketing_code=0";
            //callProgressAjax(jsonp_url, progressProcessData, progressErrorCallback);
            js.support.cors = true;
            js.get(jsonp_url, 'jsonp', function(data) {
                js('#progress-bar-id').html(data.html);
                widgetPostExecute();
            });
        }
    }

    var scriptLoadingComplete = function(variableToSet)
    {
        if(variableToSet == "progress-bar")
            progressBarAdded = true;
        else if(variableToSet == "pie-chart")
            donationPieChartAdded = true;
        else if(variableToSet == "chart")
            chartLoaded = true;
        else
            donationDoughnutChartAdded = true;
        widgetPostExecute();
    }


    var loadExternalJavaScript = function(scriptFile, variableToSet)
    {
        var newScript;
        newScript = document.createElement('script');
        newScript.setAttribute('type','text/javascript');
        newScript.setAttribute('src',scriptFile);
        //IE triggers this event when the file is loaded
        if (newScript.attachEvent)
        {
            newScript.attachEvent('onreadystatechange',function()
            {
                if (newScript.readyState == 'complete' || newScript.readyState == 'loaded')
                    scriptLoadingComplete(variableToSet);
            });
        }

        //Other browsers trigger this one
        if (newScript.addEventListener)
        {
            newScript.addEventListener('load', function() {
                scriptLoadingComplete(variableToSet);
            }, false);
        }
        document.getElementsByTagName('head')[0].appendChild(newScript);
    };

    loadJQuery = function(scriptFile)
    {
        var newScript;
        newScript = document.createElement('script');
        newScript.setAttribute('type','text/javascript');
        newScript.setAttribute('src',scriptFile);
        //IE triggers this event when the file is loaded
        if (newScript.attachEvent)
        {
            newScript.attachEvent('onreadystatechange',function()
            {
                if (newScript.readyState == 'complete' || newScript.readyState == 'loaded')
                    llsProgressBarWidgetInit();
            });
        }

        //Other browsers trigger this one
        if (newScript.addEventListener)
        {
            newScript.addEventListener('load', function() {
                llsProgressBarWidgetInit();
            }, false);
        }
        document.getElementsByTagName('head')[0].appendChild(newScript);
    }

    progressBarWidgetLoad = function() {
        if(!window.jQuery)
        {
            var jQueryPath = host+"sites/all/themes/lls/js/vendor/jquery.min.js";
            loadJQuery(jQueryPath);
        }
        else
        {
            llsProgressBarWidgetInit();
        }
    }
    
    try
    {
    	progressBarWidgetLoad();
    }
    catch(err)
    {
    	console.log(err.message);
    }
})(); // We call our anonymous function immediately