var mitsulib = {
    init : function(disable){
        diable = (disable) ? false : disable;
        // this check ensures multiple shades are not created
        var exist = document.getElementById("shade");
        if(!exist){
            mitsulib.shadeBuild(disable);
        }
    },
    shadeBuild : function(disable){
        diable = (disable) ? false : disable;
        // this check ensures multiple shades are not created
        var exist = document.getElementById("shade");
        if(!exist){
            var shade = "<div id='shade' style='"
            shade += (IE == true) ? "filter:alpha(opacity=70);" : "opacity:0.7;";
            shade += " background:#000000; z-index: 9001; display:none; position:absolute; top:0px; left:0px; width:100%; height:" + $(document).height() + "px'></div>"
            $("body").append(shade);
            if(!disable){
                $("#shade").click(function(){
                    mitsulib.shadeHide();
                });
            }
        }
    },
    // utlities that can be called to hide and show the shade
    shadeShow : function(disable){
        diable = (disable) ? false : disable;
        var exist = document.getElementById("shade");
        if(!exist){
            mitsulib.shadeBuild(disable);
        }
        $("#shade").fadeIn();
    },
    // utlities that can be called to hide and show the shade
    shadeHide : function(){
        $("#shade").fadeOut();
    },
    // used to make the page scroll to a certain point
    scrollTo : function(id){
        $('html, body').animate({ scrollTop : $(id).offset().top + "px" }, 750);
    },
    // used to scroll to top before changing page 
    // no real reason this can't be applied to all links
    // but it will HAVE to be activated AFTER everything else, since some links are disabled
    scrollPageLoad : function(url){
        $('html, body').animate({ scrollTop : $("body").offset().top + "px" }, 500, function(){
            location.href = url;
        });
    },
    buildOverlay : function(id){
        var elm = document.getElementById(id);
        var build = "<" + elm.tagName.toLowerCase() + " style='z-index:9002;position:absolute;' id='" + id + "'>" + elm.innerHTML + "</" + elm.tagName.toLowerCase() + ">";
        $("#"+id).remove();
        $("body").append(build);
    },
    replacer : function(str, check, replace){
        var thing = str.split(check);
        var msg = str;
        var len = thing.length;
        if(len > 1){
            msg = thing[0];
            for(var i = 1; i < len; i++){
                msg += replace + thing[i];
            }
        }
        return msg;
    },
    contains : function(str, check){
        var contains = false;
        if(str.split(check).length > 1){
            contains = true;
        }
        return contains;
    },
    positionCentre : function(width, height, offset){
        var top = $(window).scrollTop() + offset;
        top = ((top + height + offset) >= $(document).height()) ? top - (((top + height) - $(document).height()) + offset) : top;
        top = (top <= offset) ? offset : top;
        var left = $(window).width()/2 - width/2;
        var ret = { "left" : left, "top" : top };
        return ret;
    },
    replaceImage : function(img, src){
        img.src = src;
    },
    callRestService : function(request){
        var script = document.createElement("script");
        script.setAttribute("type", "text/javascript");
        script.setAttribute("src", request);
        document.body.appendChild(script);
    },
    getTaxData : function(emissions){
        var taxBand, yearPrice, halfYearPrice;
        if      (emissions > 255) { taxBand = "M"; yearPrice = "460"; halfYearPrice = "253.00"; }
        else if (emissions > 225) { taxBand = "L"; yearPrice = "445"; halfYearPrice = "244.75"; }
        else if (emissions > 200) { taxBand = "K"; yearPrice = "260"; halfYearPrice = "143.00"; }
        else if (emissions > 185) { taxBand = "J"; yearPrice = "245"; halfYearPrice = "134.75"; }
        else if (emissions > 175) { taxBand = "I"; yearPrice = "210"; halfYearPrice = "115.50"; }
        else if (emissions > 165) { taxBand = "H"; yearPrice = "190"; halfYearPrice = "104.50"; }
        else if (emissions > 150) { taxBand = "G"; yearPrice = "165"; halfYearPrice =  "90.75"; }
        else if (emissions > 140) { taxBand = "F"; yearPrice = "130"; halfYearPrice =  "71.50"; }
        else if (emissions > 130) { taxBand = "E"; yearPrice = "115"; halfYearPrice =  "63.25"; }
        else if (emissions > 120) { taxBand = "D"; yearPrice =  "95"; halfYearPrice =  "52.25"; }
        else if (emissions > 110) { taxBand = "C"; yearPrice =  "30"; halfYearPrice =    "n/a"; }
        else if (emissions > 100) { taxBand = "B"; yearPrice =  "20"; halfYearPrice =    "n/a"; }
        else                      { taxBand = "A"; yearPrice =   "0"; halfYearPrice =    "n/a"; }
        var ret = { "band" : taxBand, "year" : yearPrice, "half" : halfYearPrice };
        return ret;
    },
    orderArray : function(data, order){
        var i, j;
        var len = data.length;
        var ordered = [];
        for(i = 0; i < len; i++){
            if(ordered.length > 0){
                var entered = false;
                for(j = 0; j < ordered.length; j++){
                    if(order === "low"){
                        if(data[i].toLowerCase() < ordered[j].toLowerCase()){
                            ordered.splice(j, 0, data[i]);
                            entered = true;
                            break;
                        }
                    }
                    else if(order === "high"){
                        if(data[i].toLowerCase() > ordered[j].toLowerCase()){
                            ordered.splice(j, 0, data[i]);
                            entered = true;
                            break;
                        }
                    }
                    else{
                        if(data[i].toLowerCase() < ordered[j].toLowerCase()){
                            ordered.splice(j, 0, data[i]);
                            entered = true;
                            break;
                        }
                    }
                }
                if(!entered){
                    ordered.push(data[i])
                }
            }
            else{
                ordered.push(data[i]);
            }
        }
        data = ordered;
        return data;
    },
    renderPrice : function(price){
        var newprice = mitsulib.itsOverOneThousand(price);
        return newprice;
    },
    // specific to only handle one set of thousands
    itsOverOneThousand : function(number){
        var newnum = "";
        number = number + "";
        var len = number.length;
        if(len > 3){
            newnum = number.substring(0, len-3) + "," + number.substring(len-3, len);
        }
        else{
            newnum = number;
        }
        return newnum;
    }
};

