Event.observe(document,"dom:loaded",function(event){
   Cufon.now();
   var ie = false;
   if(Prototype.Browser.IE){
     var re = /MSIE (\d+\.\d+);/;
     re.test(navigator.userAgent);
     var version = new Number(RegExp.$1);
     if(version < 8)ie=true;
     if(version < 7){
         pngfix = true;
         initPngs();
     }
     if(version==9)ie9 = true;
   }
  
   if(ie){        
        initIEMenu();
   }else{       
        initMenu();
   }  
   Cufon('h1','h2','h3','h4','h5','h6');
   Cufon($('langmenu').select('a'));
   moveBg();   
   initHeaders();
   if(!ie)initHistory();
});

var ie = false;
var ie9 = false;
var ie9y = -43;
var pngfix = false;
var headerTimer;
var headers = [];
var currentHeader = -1;
var hash = "";
var historyTimer;
var historyFrame;
var lastLocation;
var showProject;
var contentHistory = {};
var moving = false;

function initHistory(){    
    var location = window.location.href.replace(rooturl,"");
    location = location.replace(/#.*$/,"");
    lastLocation = location;
    window.location.hash = location;
    historyTimer = setInterval(checkLocation,200);
    var url = rooturl + location;
    var data = [url,$('headercontent').innerHTML,$('content').innerHTML];
    contentHistory[location] = data;
}

function checkLocation(){
    var location = window.location.hash.replace("#","");
    if(location!=lastLocation && contentHistory[location]){
        var data = contentHistory[location];
        lastLocation = location;
        if(data.length > 3)showProject = data[3];
        showContent(data[0],data[1],data[2]);
    }
}

function initPngs(){
    $$('img.transparent').each(function(img){
        if (img.src.match(/\.png$/i) != null) {
            var src = img.src;
            var div = new Element('div');
            div.setStyle({filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')",width:img.offsetWidth + "px",height:img.offsetHeight + "px"});           
            $(img).replace(div);
        }
    });
}

function setLocation(location,data){
    lastLocation = location;
    window.location.hash = location;
    contentHistory[location] = data;
}

function moveBg(){
    var x = $('headerbg').offsetLeft;
    if(x > 0){
        new Effect.Move('headerbg',{x:0,y:0,mode:"absolute",duration:10,afterFinish:moveBg})
    }else{
        new Effect.Move('headerbg',{x:300,y:0,mode:"absolute",duration:10,afterFinish:moveBg})
    }
}

function initHeaders(){
    if(headerTimer)clearInterval(headerTimer);
    var num = 0;
    $$('.element-header').each(function(h){        
        headers = [];
        var shownum = 0;
        var rows = h.select('.header-row');
        num = rows.length;
        
        if(num){            
            if(h.hasClassName("projects")){
                if(showProject){
                    var pid = "project-" + showProject;
                    showProject = null;
                    if($(pid))shownum = $(pid).previousSiblings().length;
                }
                clearInterval(headerTimer);   
                if(num > 1)initProjectNavigation();
            }else if(num > 1){
                headerTimer = setInterval("changeHeader()",8000);
            }
            rows.each(function(r,index){
               headers.push(r);
               if(index==shownum){
                   var image = r.select('.header-image')[0];
                   var img = new Element('img');
                   $(img).observe("load",function(e){
                       if(moving){
                           $('showheader').update('');
                           currentHeader = -1;
                       }
                       if(currentHeader==-1){
                           currentHeader = shownum;                           
                           showHeader();
                       }else{
                           currentHeader = shownum;
                           hideHeader();
                       }
                   });
                   img.src = image.src;
               }
            });
        }    
         
    });
    if(num==0){
        if(currentHeader > -1){
            clearInterval(headerTimer);
            currentHeader = -1;
            hideHeader();
        }
    }
   
}

function initContent(){
   Cufon($('content').select('h1,h2,h3,h4,h5,h6'));
   $('content').select('a').each(initLink);
}

function initProjectNavigation(){
    if($('projectnavigation'))$('projectnavigation').remove();
    var hc = $('headercontent');    
    var projects = hc.select('.header-row');
    var nav = new Element('div',{id:"projectnavigation"});
    var list = new Element('ul');
    nav.insert(list);
    
    for(var i = 0;i<projects.length;i++){
        var li = new Element('li');
        var p = projects[i];
        var title = $(p).select('.header-title')[0];        
        li.id = p.id;        
        li.observe("click",function(event){
            var index = this.previousSiblings().length;
            changeHeader(index,true);   
        });
        list.insert(li);           
    }
    var next = new Element('div').addClassName("nextbtn");
    nav.insert({bottom:next});
    var prev = new Element('div').addClassName("prevbtn");
    nav.insert({top:prev});
    prev.observe("click",prevHeader);
    next.observe("click",nextHeader);
    $('headercontent').insert(nav);  

}

function changeHeader(num,history){    
    if(!num && num!==0){
        hideHeader();
        currentHeader++;
        if(currentHeader >= headers.length)currentHeader = 0;
    }else if(currentHeader!=num){
        $('content').update('');
        hideHeader();
        currentHeader = num;
    }
    if(history && !ie){
         var pid = headers[currentHeader].id;
         pid = pid.replace("project-","");
         var location = lastLocation;         
         location = location.replace(/[0-9]+$/,"");
         location = location + num;
         var url = rooturl + location;
         var data = [url,$('headercontent').innerHTML,"",pid];        
         setLocation(location,data);
    }
}

function nextHeader(){
    var newnum = currentHeader + 1;
    if(newnum>=headers.length)newnum = 0;
    changeHeader(newnum,true);
}

function prevHeader(){
    var newnum = currentHeader - 1;
    if(newnum<0)newnum = headers.length - 1;
    changeHeader(newnum,true);
}

function showHeader(event){
    moving = true;
    var header = headers[currentHeader];    
    var sheader = $('showheader');
    var p = $('headercontent').select('.projects');    
    if(p.length){
        if($('projectnavigation')){
            $('projectnavigation').select('li').each(function(li,index){
               if(index==currentHeader){
                   li.addClassName("active");
               } else{
                   li.removeClassName("active");
               }
            });
        }        
        var text = header.select('.header-text')[0];
        $('content').update(text.innerHTML);        
        initContent();
    }    
    var oldbar = sheader.select('.header-bar');
    if(oldbar.length){
        var oldbarY = oldbar[0].offsetTop;
    }else{
        var oldbarY = -50;
    }
    
    sheader.innerHTML = header.innerHTML;
    
    //init linkdiv if present
    var l = sheader.select('.projectlink');
    var link = (l.length)?l[0]:false;   
    if(link){
        initProjectLink(link);
        link.style.display = "none";
    }
    //show image
    var image = sheader.select('.header-image')[0];
    if(pngfix){
        var d = new Element('div');
        d.style.width = image.offsetWidth + "px";
        d.style.height = image.offsetHeight + "px";
        d.style.left  =image.offsetLeft + "px";
        d.style.top = image.offsetTop + "px";
        d.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + image.src + "', sizing='scale')";
        d.className = "header-image";
        $(image).replace(d);
        image = d;
    }
    var imgX = image.offsetLeft;
    var imgY = image.offsetTop;
    image.style.left = - image.offsetWidth + "px";
    
    //show title
    var title = sheader.select('.header-title')[0];
    var titleX = parseInt(title.getStyle('left'));
    
    var titleY = parseInt(title.getStyle('top'));
    
    var titleW = parseInt(title.getStyle('width'));
    var titleA = title.getStyle('textAlign');
    var w = document.body.offsetWidth;
    
    title.style.left = w + "px";
    
    Cufon(title);
    
    //show bar
    var details = sheader.select('.header-details')[0];
    details.style.display = "none";
    var bar = sheader.select('.header-bar')[0];
    var newbarY = bar.offsetTop;
    bar.style.top = oldbarY + "px";
    if(pngfix){
        var whiteurl = templateurl + "img/white.png";
        var back = new Element('div');
        back.className = "back";
        bar.style.background = "none";
        bar.insert({top:back});
    }  
    if(ie9){
        titleY += ie9y;
        title.style.top = titleY + "px";
    }
    //move items
    new Effect.Move(image,{x:imgX,y:imgY,mode:"absolute",duration:1});
    new Effect.Move(title,{x:titleX,y:titleY,mode:"absolute",duration:1,afterFinish:function(){
        moving = false;            
    }});
    new Effect.Move(bar,{x:0,y:newbarY,mode:"absolute",duration:0.5,afterFinish:function(){
            details.style.display = "block";            
            if(link)link.style.display = "block";

    }});
    
}

function initLink(a){
    var re = new RegExp(rooturl);
    if(a.href.match(re)){
        a.observe("click",loadPageContent);
    }
    if(a.hasClassName("prevlink"))a.observe("click",prevHeader);
    if(a.hasClassName("nextlink"))a.observe("click",nextHeader);
}

function initProjectLink(a){
    initLink(a);
    a.observe("click",function(event){
       showProject = a.id;       
    });
    
}

function hideHeader(){
    var header = $('showheader');
    moving = true;
    var image = header.select('.header-image')[0];
    var title = header.select('.header-title')[0];
    var details = header.select('.header-details')[0];
    var bar = header.select('.header-bar')[0];
    var l = header.select('.header-link');
    if(l.length){
        var link = l[0];
        link.style.display = "none";
    }
    details.update("");
    var w = document.body.offsetWidth;
    var imgX = image.offsetLeft;
    var imgY = image.offsetTop;
    new Effect.Move(image,{x:-image.offsetWidth,y:imgY,mode:"absolute",duration:1});
    var titleX = title.offsetLeft;
    var titleY = title.offsetTop;
   
    if(currentHeader==-1){
        var barY = -bar.offsetHeight;        
        new Effect.Move(bar,{x:0,y:barY,mode:"absolute",duration:0.5});
    }    
    new Effect.Move(title,{x:w,y:titleY,mode:"absolute",duration:1,afterFinish:function(){
         if(currentHeader>-1){
             showHeader();
         }else{
             moving = false;
         }
    }});
}

function initMenu(){
    $('menu').addClassName("init");
    var links = $('menu').select('a');
    links.each(function(a){
        var t = a.innerHTML;
        var d = new Element('div').update(t);
        var da = new Element('div').update(t);
        d.className = "text";
        da.className = "activetext";
        a.update('');
        a.insert(d);
        a.insert(da);
        Cufon(d);
        Cufon(da);
        var d2 = new Element('div');
        d2.className = "linkdiv";
        d2.style.width = d.offsetWidth + "px";
        d2.style.height = d.offsetHeight + "px";
        da.style.left = d.offsetLeft + d.offsetWidth - da.offsetWidth +  "px";
        d2.style.left = d.offsetLeft + "px";
        a.insert(d2);
        initLink(a);
    });
    $('menu').removeClassName("init");
    var url = window.location.href.replace(/#.*$/,"");
    updateMenu(url);
    
}

function initIEMenu(){
    $('menu').addClassName("init");
    $('menu').addClassName("ie");    
    var links = $('menu').select('a');
    links.each(function(a){
        Cufon(a);
        
    });
    $('menu').removeClassName("init");
    var url = window.location.href.replace(/#.*$/,"");
    updateMenu(url);
}

function updateMenu(url){    
    if($('indicator'))$('indicator').remove();
    $('menu').select('a').each(function(a){
       var l = a.up('li');
       a.removeClassName("active");
       l.removeClassName("activepath");       
       if(a.href==url){
           a.addClassName("active");
           var p = a.parentNode;
           while(p.id!="menu"){
               if(p.tagName=="LI")$(p).addClassName("activepath");
               p = p.parentNode;
           }
           var indicator = new Element('img',{id:"indicator",src: templateurl + "img/vink.gif"});
           if(!ie){
               var at = l.select('.activetext')[0];
               indicator.style.left = at.offsetLeft + "px";
           }
           a.insert({top:indicator});
       }
    });
    
    
}

function loadPageContent(event){   
    Event.stop(event);
    url = this.href;    
    var location = url.replace(rooturl,"");
    if(contentHistory[location]){
        window.location.hash = location;
    }else{
        new Ajax.Request(url,{method:"post",onSuccess:function(r){showPageContent(r.responseText,url,location);}});
    }    
}

function loadURLContent(url){    
    var location = url.replace(rooturl,"");
    new Ajax.Request(url,{method:"post",onSuccess:function(r){showPageContent(r.responseText,url,location);}});
}

function showPageContent(html,url,location){    
    var d = new Element('div').update(html);
    var hc = d.select('.headercontent')[0];
    var headerhtml = hc.innerHTML;
    var ph = $(hc).select('.element-header.projects');
    if(ph.length==0){        
        var c = d.select('.content')[0];
        var contenthtml = c.innerHTML;        
    }else{
        var contenthtml = "";        
    }

    var data = [url,headerhtml,contenthtml];
    setLocation(location,data);
    showContent(url,headerhtml,contenthtml);
}

function showContent(url,headerhtml,contenthtml){
    updateMenu(url);    
    $('headercontent').update(headerhtml);    
    $('content').update(contenthtml);    
    initContent();    
    initHeaders();    
}
