var pp_category = '';
var pp_category_order = 0;
var isIE6 = /msie|MSIE 6/.test(navigator.userAgent);
var MF = {
    current_page: 0,
    previous_page: 0,
    current_category: false,
    current_project: false,
    on_animation: false,
    pages: [
            ['Start', 'aktuelles.htm'],
            ['Willkommen', 'philosophie.htm'],
            ['Arbeiten', 'arbeiten.htm'],
            ['Netzwerk', 'netzwerk.htm'],
            ['Kontakt', 'kontakt.htm'],
            ['Impressum', 'impressum.htm']
    ],
    init: function() {
        /*if (window.outerWidth) {
            window.outerWidth = 1000;
            window.outerHeight = 760;
        } else if (window.resizeTo) {
            window.resizeTo(1000, 760);
        }*/
        new Ajax.Request('data.php?r=' + Math.random(), {
            method: 'get',
            onSuccess: function(transport) {
                MF.xml = transport.responseXML;
                var categories = MF.xml.getElementsByTagName('category');
                for (var i = 0; i < categories.length; i++) {
                    if (categories[i].getAttribute('name') != 'Aktuelles') {
                        var cat_div = document.createElement('DIV');
                        cat_div.className = 'cat_div';
                        var cat_anc = document.createElement('A');
                        cat_anc.setAttribute('href', 'javascript:void(0);');
                        cat_anc.setAttribute('rel', categories[i].getAttribute('name'));
                        Event.observe(cat_anc, 'click', function() { MF.setCategory(this.rel); });
                        cat_anc.update(categories[i].getAttribute('name'));
                        cat_div.appendChild(cat_anc);
                        var projects = categories[i].getElementsByTagName('project');
                        var project_div = document.createElement('DIV');
                        project_div.setAttribute('id', 'projects_' + categories[i].getAttribute('name'))
                        for (var j = 0; j < projects.length; j++) {
                            var proj_anc = document.createElement('A');
                            proj_anc.setAttribute('href', 'javascript:void(0);');
                            proj_anc.setAttribute('id', 'project_item_' + categories[i].getAttribute('name') + '_' + projects[j].getAttribute('name'));
                            proj_anc.setAttribute('rel', projects[j].getAttribute('name'));
                            Event.observe(proj_anc, 'click', function() { MF.setProject(this.rel, true); });
                            proj_anc.update(projects[j].getAttribute('name'));
                            project_div.appendChild(proj_anc);
                        }
                        cat_div.appendChild(project_div);
                        project_div.style.display = 'none';
                        cat_div.style.display = 'none';
                        $('works').appendChild(cat_div);
                    }
                }
                MF.setCurrentPage(-1);
                if (MF.current_category) {
                    MF.setCategory(MF.current_category);
                }
            }
        });
    },
    setCurrentPage: function(page) {
        this.current_page = 0;
        var pp = (page == -1) ? History.get('page') : page;
        if (pp) {
            for (var i = 0; i < this.pages.length; i++) {
                if (this.pages[i][0] == pp) {
                    this.current_page = i;
                    break;
                }
            }
        }
        if (this.current_page == 2 && page != -1) {
            History.unset('category');
            History.unset('project');
        }
        this.previous_page = this.current_page;
        History.set('page', MF.pages[MF.current_page][0]);
        for (var j = 0; j < MF.pages.length; j++) {
            if (j == MF.current_page) {
                $('menu_' + j).addClassName('active');
            } else {
                $('menu_' + j).removeClassName('active');
            }
        }
        History.set('page', this.pages[this.current_page][0]);
        if (page != -1 && isIE6) {
          window.location.reload();
          return;
        }
        History.setTitle('Matthias Frei - Typografie & Grafik - ' + this.pages[this.current_page][0]);
        if (this.current_page == 2) {
            this.current_category = History.get('category'); 
            this.current_project = History.get('project');
        } else {
            History.unset('category');
            History.unset('project');
            this.current_category = false; 
            this.current_project = false;
            $('menu_' + this.current_page).addClassName('active');
        }
        this.toggleWorks();
        if (this.current_page == 0) {
            var categories = this.xml.getElementsByTagName('category');
            for (var i = 0; i < categories.length; i++) {
                if (categories[i].getAttribute('name') == 'Aktuelles') {
                  if (categories[i].getElementsByTagName('project').length) {
                    this.current_category = 'Aktuelles';
                    this.setProject(categories[i].getElementsByTagName('project')[0].getAttribute('name'));
                    this.current_category = false;
                  }
                }
            }
            return;
        } else if (this.current_page == 2 && !this.current_category) {
            var categories = this.xml.getElementsByTagName('category');
            for (var i = 0; i < categories.length; i++) {
                if (categories[i].getAttribute('name') != 'Aktuelles') {
                  if (categories[i].getElementsByTagName('project').length) {
                    this.setCategory(categories[i].getAttribute('name'));
                    break;
                  }
                }
            }
            return;
        } else if (this.current_page == 2) {
          return;
        }
        this.ajaxHistoryRequest(this.current_page);
    },
    toggleWorks: function() {
        if (MF.on_animation) return;
        MF.on_animation = true;
        var categories = MF.xml.getElementsByTagName('category');
        var j = 0;
        div_projects = new Array();
        var dp = $('works').getElementsByTagName('DIV');
        for (var i = 0; i < dp.length; i++) {
          if (dp[i].className == 'cat_div') {
              div_projects.push(dp[i]);
          }
        }
        var s_first = true;
        for (var i = 0; i < categories.length; i++) {
            if (categories[i].getAttribute('name') != 'Aktuelles') {
              if (MF.current_page == 2) {
                if ($('projects_' + categories[i].getAttribute('name')).visible()) {
                  Effect.BlindUp($('projects_' + categories[i].getAttribute('name')), {duration: 0.6});
                  s_first = false;
                }
                if (div_projects[j].style.display == 'none') {
                  if (s_first && (!MF.current_category || (categories[i].getAttribute('name') == MF.current_category))) {
                    pp_category = categories[i].getAttribute('name');
                    pp_category_order = j;
                    Effect.BlindDown(div_projects[j], {duration: 0.3, afterFinish: function() {
                      Effect.BlindDown('projects_' + pp_category, {duration: 0.3, afterFinish: function() {
                        var dp = $('works').getElementsByTagName('DIV');
                        pp_category_order++;
                        for (var i = pp_category_order; i < dp.length; i++) {
                          if (dp[i].className == 'cat_div') {
                              Effect.BlindDown(dp[i], {duration: 0.3});
                          }
                        }
                      }});
                    }});
                    s_first = false;
                  } else if (s_first) {
                    Effect.BlindDown(div_projects[j], {duration: 0.3});
                  }
                }
              } else {
                if ($('projects_' + categories[i].getAttribute('name')).visible()) {
                  Effect.BlindUp($('projects_' + categories[i].getAttribute('name')), {duration: 0.6});
                }
                if (div_projects[j].style.display != 'none') {
                  Effect.BlindUp(div_projects[j], {duration: 0.6});
                }
              }
              $('projects_' + categories[i].getAttribute('name')).parentNode.getElementsByTagName('A')[0].removeClassName('active');
              j++;
            }
        }
        if (MF.current_page == 2) {
          $('works').setStyle('padding-top:5px;padding-bottom:5px');
        } else {
          $('works').setStyle('padding-top:0px;padding-bottom:0px');
        }
        MF.on_animation = false;
    },

    setCategory: function(cat) {
        if (MF.on_animation) return;
        MF.on_animation = true;
        var prev = MF.current_category; 
        MF.current_category = cat;
        if (prev != cat) {
          History.unset('project');
          MF.current_project = false;
        }
        History.set('category', cat);
        var categories = MF.xml.getElementsByTagName('category');
        for (var i = 0; i < categories.length; i++) {
            if (categories[i].getAttribute('name') != 'Aktuelles') {
                if (categories[i].getAttribute('name') == MF.current_category) {
                    if (!$('projects_' + categories[i].getAttribute('name')).visible()) {
                      Effect.BlindDown('projects_' + categories[i].getAttribute('name'), {duration: 0.6});
                    }
                    if ($('projects_' + categories[i].getAttribute('name'))) {
                        $('projects_' + categories[i].getAttribute('name')).parentNode.getElementsByTagName('A')[0].addClassName('active');
                    }
                    if (!MF.current_project && categories[i].getElementsByTagName('project').length) {
                        MF.setProject(categories[i].getElementsByTagName('project')[0].getAttribute('name'), true);
                    } else if (MF.current_project) {
                        MF.setProject(MF.current_project);
                    }
                } else {
                  if ($('projects_' + categories[i].getAttribute('name'))) {
                      if ($('projects_' + categories[i].getAttribute('name')).visible()) {
                        Effect.BlindUp('projects_' + categories[i].getAttribute('name'), {duration: 0.6});
                      }
                      $('projects_' + categories[i].getAttribute('name')).parentNode.getElementsByTagName('A')[0].removeClassName('active');
                  }
                }
            }
        }
        MF.on_animation = false;
    },
    setProject: function(proj, from_link) {
        var categories = MF.xml.getElementsByTagName('category');
        var proj_actives = document.getElementsByClassName('project_item_active');
        for (var i = 0; i < proj_actives.length; i++) {
            proj_actives[i].removeClassName('project_item_active');
        }
        for (var i = 0; i < categories.length; i++) {
            if (categories[i].getAttribute('name') == MF.current_category) {
                var projects = categories[i].getElementsByTagName('project');
                for (var j = 0; j < projects.length; j++) {
                    if (projects[j].getAttribute('name') == proj) {
                        if ($('project_item_' + MF.current_category + '_' + proj)) {
                          $('project_item_' + MF.current_category + '_' + proj).addClassName('project_item_active');
                        }
                        var t = '<h1>' + proj + '</h1>';
                        if (MF.current_category != 'Aktuelles') {
                            MF.current_project = projects[j].getAttribute('name');
                            History.set('project', MF.current_project);
                        }
                        if (from_link && isIE6) {
                          window.location.reload();
                          return;
                        }
                        if (!projects[j].getAttribute('hideintro')) {
                            var bodies = projects[j].getElementsByTagName('textCont');
                            var b = bodies.item(0);
                            if (b.hasChildNodes()) {
                                t += b.firstChild.nodeValue;
                            } else if(b.nodeValue) {
                                t += b.nodeValue;
                            }
                        } else {
                            t = '&nbsp;';
                        }
                        var rbodies = projects[j].getElementsByTagName('rightCont');
                        if (rbodies.length) {
                            var rb = rbodies.item(0);
                            if (rb.hasChildNodes()) {
                                $('right_content').update('<h3>' + rb.getAttribute('title') + '</h3>' + rb.firstChild.nodeValue);
                            } else if(rb.nodeValue) {
                                $('right_content').update('<h3>' + rb.getAttribute('title') + '</h3>' + rb.nodeValue);
                            } else {
                                $('right_content').update('<h3>' + rb.getAttribute('title') + '</h3>');
                            }
                        }
                        if (projects[j].getAttribute('layout') == 2) {
                            var imgs = projects[j].getElementsByTagName('image');
                            for (var k = 0; k < imgs.length; k++ ){
                                var div_centered = '<div class="';
                                if (k % 3 == 0) {
                                    div_centered += 'centered">';
                                } else {
                                    div_centered += 'half_centered">';
                                }
                                var new_img = '<img src="http://www.matthiasfrei.com/' + imgs[k].getAttribute('path') + '" alt="" />';
                                div_centered += new_img;
                                if (imgs[k].hasChildNodes()) {
                                    div_centered += '<p>' + imgs[k].firstChild.nodeValue + '</p>';
                                } else if(imgs[k].nodeValue) {
                                    div_centered += '<p>' + imgs[k].nodeValue + '</p>';
                                } else {
                                    div_centered += '<p>&nbsp;</p>';
                                }
                                div_centered += '</div>';
                                t += div_centered;
                            }
                        } else {
                            var imgs = projects[j].getElementsByTagName('image');
                            for (var k = 0; k < imgs.length; k++ ){
                                var div_centered = '<div class="centered">';
                                var new_img = '<img src="http://www.matthiasfrei.com/' + imgs[k].getAttribute('path') + '" alt="" />';
                                div_centered += new_img;
                                if (imgs[k].hasChildNodes()) {
                                    div_centered += '<p>' + imgs[k].firstChild.nodeValue + '</p>';
                                } else if(imgs[k].nodeValue) {
                                    div_centered += '<p>' + imgs[k].nodeValue + '</p>';
                                } else {
                                    div_centered += '<p>&nbsp;</p>';
                                }
                                div_centered += '</div>';
                                t += div_centered;
                            }
                        }
                        $('content').update(t);
                        break;
                    }
                }
            }
        }
    },
    ajaxHistoryRequest: function(i) {
        if (MF.pages[i]) {
            new Ajax.Request('pages/' + MF.pages[i][1], {
                onSuccess: function(transport) {
                    $('content').update(transport.responseText);
                    $('right_content').update('&nbsp;');
                }
            });
        }
    }
};
Event.observe(window, 'load', MF.init); 
