var skiptrip_namespace = function(name, separator, container){
  var ns = name.split(separator || '.'),
    o = container || window,
    i,
    len;
  for(i = 0, len = ns.length; i < len; i++){
    o = o[ns[i]] = o[ns[i]] || {};
  }
  return o;
};

skiptrip_namespace("skiptrip.core");
skiptrip.core = {
    _cid: "",
    onLoadTasks: [],
    
    cid: function() {
        return skiptrip.core._cid;
    },

    addOnLoad: function(f) {
        this.onLoadTasks[this.onLoadTasks.length] = f;
    },
    
    onLoad: function() {
        for (var i=0; i < this.onLoadTasks.length; i++) {
            this.onLoadTasks[i]();
        }
    },
    
    focusOnLoad: function(id) {
        this.addOnLoad(function() {
            skiptrip.util.focus(id);
        });
    }
};

skiptrip_namespace("skiptrip.util");
skiptrip.util = {

    setInput: function(id, value) {
        if (id) {
            id = id.replace(":", "\\:");
            $("#" +id).attr("value", value);
        }
    },
    
    get: function(id) {
        id = id.replace(":", "\\:");
        return $("#" +id);
    },
    
    entityDecode: function(str) {
        return str !== null ? $("<div>" +str+ "</div>").html() : "";
    },
    
    focus: function(id) {
        id = id.replace(":", "\\:");
        $("#" +id).focus();
    },
    
    isNumeric: function(v) {
        if (v === null) {
            return false;
        }
        v = v.replace(",", ".");
        return (v - 0) == v && v.length > 0;    
    },
    
    parseInt: function(v) {
        return parseInt(v, 10);
    },
    
    endsWidth: function(str, suffix) {
        if (str === null || suffix === null) {
            return false;
        }
        return str.indexOf(suffix, str.length - suffix.length) !== -1;
    },
    
    trim: function(str) {
        return str.replace(/^\s+|\s+$/g, '');
    },
    
    buttonClick: function(button) {
        $("#" +button).trigger("click");
    },
    
    cid: function() {
        return skiptrip.util.gup("cid");
    },
    
    gup: function(name) {
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        return results === null ? "" : results[1];
    },
    
    textCache: [],
    text: function(tag) {
        if (!skiptrip.util.textCache[tag]) {
            var value = $.ajax({url: "http://www.skiptrip.se/js/api/text.jsf", data: ({tag: tag}), async: false}).responseText;
            skiptrip.util.textCache[tag] = value;
        }
        return skiptrip.util.textCache[tag];
    },
    
    loadScript: function(script) {
        var fileref=document.createElement("script");
        fileref.setAttribute("type", "text/javascript");
        fileref.setAttribute("src", script);
        document.getElementsByTagName("head")[0].appendChild(fileref);
    },
    
    timeData: ["07:00","07:30","08:00","08:30","09:00","09:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00"]
};
