
jQuery.extend({
historyCurrentHash: undefined,
historyCallback: undefined,
historyInit: function(callback)
{
jQuery.historyCallback = callback;
var current_hash = location.hash;
jQuery.historyCurrentHash = current_hash;
if(jQuery.browser.msie) 
{
if(jQuery.historyCurrentHash == '') 
{
jQuery.historyCurrentHash = '#';
}
$("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');
var ihistory = $("#jQuery_history")[0];
var iframe = ihistory.contentWindow.document;
iframe.open();
iframe.close();
iframe.location.hash = current_hash;
}
else if($.browser.safari) 
{
jQuery.historyBackStack = [];
jQuery.historyBackStack.length = history.length;
jQuery.historyForwardStack = [];
jQuery.isFirst = true;
}
jQuery.historyCallback(current_hash.replace(/^#/, ''));
setInterval(jQuery.historyCheck, 100);
},
historyAddHistory: function(hash) 
{
jQuery.historyBackStack.push(hash);
jQuery.historyForwardStack.length = 0; 
this.isFirst = true;
},
historyCheck: function()
{
if(jQuery.browser.msie) 
{
var ihistory = $("#jQuery_history")[0];
var iframe = ihistory.contentDocument || ihistory.contentWindow.document;
var current_hash = iframe.location.hash;
if(current_hash != jQuery.historyCurrentHash) 
{
location.hash = current_hash;
jQuery.historyCurrentHash = current_hash;
jQuery.historyCallback(current_hash.replace(/^#/, ''));
}
} 
else if(jQuery.browser.safari) 
{
if(!jQuery.dontCheck) 
{
var historyDelta = history.length - jQuery.historyBackStack.length;
if(historyDelta) 
{ 
jQuery.isFirst = false;
if(historyDelta < 0) 
{ 
for (var i = 0; i < Math.abs(historyDelta); i++) 
{
jQuery.historyForwardStack.unshift(jQuery.historyBackStack.pop());
}
} 
else 
{ 
for (var i = 0; i < historyDelta; i++)
{
jQuery.historyBackStack.push(jQuery.historyForwardStack.shift());
}
}
var cachedHash = jQuery.historyBackStack[jQuery.historyBackStack.length - 1];
if(cachedHash != undefined) 
{
jQuery.historyCurrentHash = location.hash;
jQuery.historyCallback(cachedHash);
}
} 
else if(jQuery.historyBackStack[jQuery.historyBackStack.length - 1] == undefined && !jQuery.isFirst) 
{
if(document.URL.indexOf('#') >= 0) 
{
jQuery.historyCallback(document.URL.split('#')[1]);
} 
else
{
var current_hash = location.hash;
jQuery.historyCallback('');
}
jQuery.isFirst = true;
}
}
} 
else 
{
var current_hash = location.hash;
if(current_hash != jQuery.historyCurrentHash) 
{
jQuery.historyCurrentHash = current_hash;
jQuery.historyCallback(current_hash.replace(/^#/, ''));
}
}
},
historyLoad: function(hash)
{
var newhash;
if(jQuery.browser.safari) 
{
newhash = hash;
}
else 
{
newhash = '#' + hash;
location.hash = newhash;
}
jQuery.historyCurrentHash = newhash;
if(jQuery.browser.msie) 
{
var ihistory = $("#jQuery_history")[0];
var iframe = ihistory.contentWindow.document;
iframe.open();
iframe.close();
iframe.location.hash = newhash;
jQuery.historyCallback(hash);
}
else if(jQuery.browser.safari) 
{
jQuery.dontCheck = true;
this.historyAddHistory(hash);
var fn = function() 
{
jQuery.dontCheck = false;
};
window.setTimeout(fn, 200);
jQuery.historyCallback(hash);
location.hash = newhash;
}
else 
{
jQuery.historyCallback(hash);
}
}
});
function pageLoad(hash) 
{
if(hash) 
{
doXhr('data', '#content', hash);
} 
else 
{
doXhr('data', '#content', 'home');
}
}
function doXhr(file, location, data)
{
location = location || '#content';
data = data || '';
if(data == 'home')
{
return;
}
else
{
$.ajax({
beforeSend: function()
{
pageTracker._trackPageview(file + '.php?page=' + data);
$(location).fadeOut(100, function()
{
if(data != 'home')
{
$('#loader').show(); 
}
});
$("a[href='#"+data+"']")
.removeClass('not-active')
.addClass('active')
.parent()
.siblings('li')
.each(function()
{
$('a', this)
.addClass('not-active')
.removeClass('active');
});
},
complete: function(xhr, textStatus)
{
$(location)
.html(xhr.responseText)
.fadeIn(100, function(){
$(document.body).css({height: 'auto'}); 
$('#loader').hide();
});
$(document.body)
.removeAttr('class')
.addClass(data);
$('html, body').animate({scrollTop: $("#navigation li:first").offset().top}, 300);
},
type: 'POST',
url: file + '.php',
data: 'page='+data
});
}
}
$(document).ready(function()
{
$('.list li#nav-work .padding')
.wrap($('<a></a>')
.attr({
rel: 'ajaxLink', 
href: '#' + $('.list li#nav-work .padding h2 span.title').text().toLowerCase(), 
title: $('.list li#nav-work .padding h2 span.title').text()
}))
$('.list li#nav-company .padding')
.wrap($('<a></a>')
.attr({
rel: 'ajaxLink', 
href: '#' + $('.list li#nav-company .padding h2 span.title').text().toLowerCase(), 
title: $('.list li#nav-company .padding h2 span.title').text()
}))
$('.list li#nav-contact .padding')
.wrap($('<a></a>')
.attr({
rel: 'ajaxLink', 
href: '#' + $('.list li#nav-contact .padding h2 span.title').text().toLowerCase(), 
title: $('.list li#nav-contact .padding h2 span.title').text()
}))
$('.list li#nav-blog .padding')
.wrap($('<a></a>')
.attr({
rel: 'ajaxLink', 
href: '#' + $('.list li#nav-blog .padding h2 span.title').text().toLowerCase(), 
title: $('.list li#nav-blog .padding h2 span.title').text()
}))
$('.top-link').click(function()
{
$('html, body').animate({scrollTop: $("#navigation li:first").offset().top}, 300);
});
$.historyInit(pageLoad);
$("a[rel='ajaxLink']").click(function()
{
$(document.body).css({height: $(document).height()});
var hash = this.href;
hash = hash.replace(/^.*#/, '');
$.historyLoad(hash);
return false;
});
});
