window.onload = init;

var cats = ["","food","communication","information","job","side job","motion automatical","motion physical","spare time","personal hygiene, sports","spiritual things","life planing","essentials, household","shopping","sleeping"];
var symbols = ["","sleeping","snuggle","dreaming","have a shower","sports","play soccer","joga","personal hygiene","to meditate","pray","to relax","to have sex","to have sex b","to have sex c","to eat","to eat with sticks","eating fruits","drinking","drinking alcohol","talking","talk to many","to phone","to think","making concepts","to draw","to photograph","shooting a movie","pc work","to view","to watch a cinema movie","watch tv","to listen","to read","calculating, accounting, ...","administrative stuff","to wait","to do one's own housework","sewing","shopping","driving with car, train, bike, ...","to walk"];

function init() {
    $("inv").onclick = Content.hideAll;
    $("inv").onmouseover = Content.hideAll;
    (document.all) ? $("inv").style.height = document.documentElement.clientHeight+"px" : null;

    //load data
    if (data) {
        for (var i=0;i<data.fragments.length;i++) {
            Fragment.render(data.fragments[i]);
        }
    }

    //load media content
    if (content) {
        for (var i=0;i<content.content.length;i++) {
            Content.render(content.content[i]);
        }
    }
}

var Fragment = {
    _: [],
    render: function(obj) {
        var newObj = document.createElement("div");
        var parent = $("d-"+obj.day);
        newObj.id = "f-"+obj.id;
        newObj.className = "fragment color-"+obj.color;
        newObj.title = cats[obj.color];
        newObj.alt = cats[obj.color];
            
        if (obj.symbols) {
            var symbolArray = obj.symbols.split(",");
            for(var i=0;i<symbolArray.length;i++) {
                Symbol.render(symbolArray[i],newObj);
            }
        }
    
        parent.appendChild(newObj);
    
        newObj.style.left = (obj.start * 36)+"px";
        newObj.style.width = (obj.end * 36)+"px";
        
        return(newObj);
    }
}

var Symbol = {
    render: function(symbol,parent) {
        if (symbol) {
            var img = document.createElement("img");
            img.src = "/static/img/icons/"+symbol+".gif";
            img.className = "symbol";
            img.title = symbols[symbol];
            img.alt = symbols[symbol];
            parent.appendChild(img);
        }
    }
}

var Content = {
    show: function() {
        Content.hideAll();
        $("inv").style.display = "block";
        var parent = $(this.parentNode.id);
        var mc = $(this.parentNode.id.replace("m-","mc-"));
        if (mc) {
            var winWidth = document.body.scrollWidth;
            var winHeight = 659;
            var posX = parseInt(parent.style.left);
            var posY = parseInt(parent.style.top) + 40;
            var menuRightPos = posX + 250;
            var menuTopPos = posY + mc.getHeight();
            if (winWidth < menuRightPos) {
                posX = posX - (menuRightPos - winWidth + 15);
            }
            if (winHeight < menuTopPos) {
                posY = posY - (menuTopPos - winHeight);
            }
            mc.style.top = posY + "px";
            mc.style.left = posX + "px";
            mc.style.display = "block";
        }
    },
    hideAll: function() {
        Fragment._.mediaObj = false;
        var el = document.getElementsByTagName("div");
        for (var i=0;i<el.length;i++) {
            if (el[i].className && el[i].className.match("media")) {
                el[i].style.display = "none";
            }
        }
        $("inv").style.display = "none";
    },
    render: function(obj) {
        var parent = $("m-"+obj.day);
        var newObj = Helper._render("div", document.body, {"id": "m-"+obj.id, "className": "content"});
        newObj.style.left = (Helper.getLeft(parent)+(obj.start * 36))+"px";
        newObj.style.top = Helper.getTopPos(parent)+"px";
        
        switch (obj.kind) {
            case "TEXT":
                Helper._render("img", newObj, {"className": "icon", "onmouseover": Content.show, "src": "/static/img/read.gif"});
                break;
            case "IMAGE":
                Helper._render("img", newObj, {"className": "icon", "onmouseover": Content.show, "src": "/static/img/view.gif"});
                if (obj.preview) {
                    var previewContainer = Helper._render("div", newObj, {"className": "previewContainer", "onmouseover": Content.show});
                    Helper._render("img", previewContainer, {"className": "preview", "onmouseover": Content.show, "src": "/static/media/"+obj.preview});
                }
                break;
        }
        Fragment._.mediaObj = obj;
        return(newObj);
    }
}

var Helper = {
    index: 100,
    _render: function(tag, parent, param) {
        if(!tag)
            return;
        var obj = document.createElement(tag);
        if (param) {
            for (var i in param) {
                obj[i] = param[i];
            }
        }
        parent.appendChild(obj);
        return (obj);
    },    
    getTopPos: function(obj,pos) {
        pos = pos ? pos : 0;
        while (obj.parentNode) {
            pos += obj.offsetTop;
            return(Helper.getTopPos(obj.parentNode,pos));
        }
        return(pos ? pos : obj.offsetTop);
    },
    getLeft: function(obj,pos) {
        pos = pos ? pos : 0;
        while (obj.parentNode) {
            pos += obj.offsetLeft;
            return(Helper.getLeft(obj.parentNode,pos));
        }
        return(pos ? pos : obj.offsetLeft);
    }
}

log = function(msg) {
   return;
}

