(function(){
    var 
        // MODIFY THIS VARIABLE TO POINT TO THE CORRECT PROXY FILE
        proxy = "/proxy.aspx?Location=",
        // END MODIFICATIONS

        // OPERATIONS TO PERFORM (header property not used in this version)
        computations = {
            "GB0001320778":{
                header:"JPMorgan Asian Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"C10",
                computate:{
                    // "C14":"C10-C13",
                    "C18":"C10-C17",
                    "C22":"C10-C21",
                    "C26":"C10-C25",
                    "C30":"C10-C29"
                }
            },
            "GB0003435012":{
                header:"JPMorgan Chinese Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"E10",
                computate:{
                  //  "E14":"E10-E13",
                   // "E18":"E10-E17",
                    "E22":"E10-E21",
                    "E26":"E10-E25",
                    "E30":"E10-E29"
                }
            },
            "GB0003418950":{
                header:"JPMorgan Emerging Mkts Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"G10",
                computate:{
                    // "G14":"G10-G13",
                    "G18":"G10-G17",
                    "G22":"G10-G21",
                    "G26":"G10-G25",
                    "G30":"G10-G29"
                }
            },
            "GB0003450359":{
                header:"JPMorgan Indian Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"I10",
                computate:{
                    // "I14":"I10-I13",
                    "I18":"I10-I17",
                    "I22":"I10-I21",
                    "I26":"I10-I25",
                    "I30":"I10-I29"
                }
            },
            "GB0003165817":{
                header:"JPMorgan Fleming Japanese Smaller Co's Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"K10",
                computate:{
                    // "K14":"K10-K13",
                    "K18":"K10-K17",
                    "K22":"K10-K21",
                    "K26":"K10-K25",
                    "K30":"K10-K29"
                }
            },
			"GB00B602HS43":{
                header:"JPMorgan Brazil Investment Trust",
                nodeName:"CURRENT_PRICE",
                cell:"M10",
                computate:{
                    "M14":"M10-M13",
                    "M18":"M10-M17",
                    "M22":"M10-M21"
                    // "M26":"M10-M25",
                    // "M30":"M10-M29"
                }
            }
        },

        // CREATE XML FROM XMLHttpRequest.responseText
        textToXML = window.DOMParser ?
            function textToXML(data){
                return new DOMParser().parseFromString(data, "text/xml").firstChild;
            }:
            function textToXML(data){
                var xml = new ActiveXObject("Microsoft.XMLDOM");
                xml.async = false;
                xml.loadXML(data);
                return xml.childNodes[1];
            }
        ;

    // CALL THE PROXY
    $.ajax({
        type: "GET",
        url: proxy + "http://jpmf.screenfinance.com/create-xml.asp",
        cache: false,
        complete: function(xhr){
            // TRY TO PARSE DATA
            var $xml    = textToXML(xhr.responseText),
                $isin, script, o
            ;
            if($xml){
                // CACHE jQuery root AND ALL ALT_CODE_ISIN childNodes
                $isin = ($xml = $($xml)).find("ALT_CODE_ISIN");
                // OUTPUT BUFFER
                script = [];
                for(var key in computations){
                    // AVOID OBTRUSIVE LIBRARIES CONFLICTS (Object.prototype.whatever ... )
                    if(computations.hasOwnProperty(key)){
                        o = computations[key];
                        // FOR EACH ALT_CODE_ISIN node
                        $isin.each(function(i, childNode){
                            // VERIFY THAT THE ISIN CODE IS THE ONE LOOKED FOR
                            if($.trim($(childNode).text()) === key){
                                // SET FIRST CELL VALUE
                                $("table.jpm-sub-shares td." + o.cell).text($(childNode.parentNode).find(o.nodeName).text());
                                // FOR EACH COMPUTATION
                                for(key in o.computate){
                                    // same stuff done before ...
                                    if(o.computate.hasOwnProperty(key))
                                        // TRANSFORM COMPUTATIONS INTO jQuery SEARCHES/OPERATIONS
                                        script.push('(function(value){$("table.jpm-sub-shares td.' + key + '").html("<span class=\\""+(value<0?"negative":"positive")+"\\">"+value+"</span>")})((' + o.computate[key].replace(/([A-Z0-9]+)/g, 'parseFloat($("table.jpm-sub-shares td.$1").text())') + ').toFixed(2));')
                                    ;
                                };
                                // BREAK THIS LOOP
                                return false;
                            };
                        });
                    }
                };
                // PERFORM jQuery OPERATIONS
                $.globalEval(script.join("\n"));
            };
        }
    });
})();
