$(document).ready(
function(){
//////////////////////////////////////////////////////////////////////
// setup
//////////////////////////////////////////////////////////////////////
dbPath='ostblk/database';
var articleMax=4;
var currentTag="Show all";
currentPage=1;
lastUrl='null';
lastPram='null';
templates='null';
cacheCounter=0;
cache=new Array();
cachedData=new Array();
overlay=false;



//////////////////////////////////////////////////////////////////////
// layout / UI
//////////////////////////////////////////////////////////////////////	
// png fix for ie
$(".logo").pngfix();

//reload on logo click
$(".logo").click(function(){
	window.location = '/';
})
$('.logo').hover(
	function(){ 
		var newSource=$(this).attr('src').replace('.png','_o.png'); 
		$(this).attr('src',newSource);
		},
	function(){ 
		var newSource=$(this).attr('src').replace('_o.png','.png'); 
		$(this).attr('src',newSource);		
		}
);

//top lift button
$('.topLink').click(
  function(){

 // $.scrollTo( '#target-examples', 800, {easing:'elasout'} );
 
		$('#topbody').scrollTo( '#wrap', 700, "easeOutQuint" );
		//$.scrollToElement( '#wrap' );

  }
);
//fullscreen image
// You need to specify the size of your background image here (could be done automatically by some PHP code)
var FullscreenrOptions = {  width: 1280, height: 951, bgID: '#bgimg' };
// This will activate the full screen background!
//jQuery.fn.fullscreenr(FullscreenrOptions);
	$(function(){
			$.fn.supersized.options = {  
				startwidth: 1280,  
				startheight: 951,
				vertical_center: 1,
				slideshow: 1,
				navigation: 0,
				transition: 1, //0-None, 1-Fade, 2-slide top, 3-slide right, 4-slide bottom, 5-slide left
				pause_hover: 0,
				slide_counter: 1,
				slide_captions: 0,
				slide_interval: 30000  
			};
	 });
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits);
 	var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number	 alert('ich bin alt: '+navigator.userAgent)
}else{
var ffversion=3;
}
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
	$('#supersize').remove();

 			$('body').css('overflow','visible')
 			$('body').css('background-color','#000000')
 			$('#topbody').css('min-height','1500px')
 			$('body').css('min-height','1500px')
 			$('#topbody').css('background','none')

 	}else if(ffversion<3){


 		$('#topbody').css('display','block')
		$('body').css('background-color','#000000');

 	}else{
		$('#supersize').supersized(); 

	}

//////////////////////////////////////////////////////////////////////
// functions
//////////////////////////////////////////////////////////////////////
// jquery.adress setup
//////////////////////////////////////////////////////////////////////
initAddress=function(){

	var title = document.title;
	
	// Default tracker mock
	var pageTracker = {
	    _trackPageview: function() {
	        gaPageTracker._trackPageview(arguments[0]);

	    }
	}
	// Serialization utility
    var serialize = function(obj, re) {
        var result = [];
        $.each(obj, function(i, val) {
            if ((re && re.test(i)) || !re)
                result.push(i + ': ' + (typeof val == 'object' ? val.join 
                    ? '\'' + val.join(', ') + '\'' : serialize(val) : '\'' + val + '\''));
        });
        return '{' + result.join(', ') + '}';
    }
            
	// Init and change handlers
	$.address.init(function(event) {
		initVal=0;
		pageTitle= $.address.title();
		var names = $.map(event.pathNames, function(n) {
			return n.substr(0, 1).toLowerCase() + n.substr(1);
         }).concat(event.parameters.id ? event.parameters.id.split('.') : []);
		
		currentURL = names[0];
		currentParam = names[1];

 		if(currentURL==undefined){
			currentURL='portfolio';
 			currentTag='Show all';
 		}else if(currentURL=='view'){
 			articleUrl=currentParam;
		}
		
		navigateTo(currentURL, currentParam)
		currentTag=currentURL;
        
        
        if(currentParam==undefined){
    	    currentParam=1;
        }else{
			currentPage=currentParam;
		}
		
     }).change(function(event) {
     initVal++;
		var names = $.map(event.pathNames, function(n) {
			return n.substr(0, 1).toLowerCase() + n.substr(1);
        }).concat(event.parameters.id ? event.parameters.id.split('.') : []);
                
        currentURL = names[0];
        currentParam = names[1];

		if(currentURL==undefined){
			currentURL='portfolio';
			currentTag='Show all';
		}else if(currentURL=='view'){
 			articleUrl=currentParam;
		}
		if(overlay==true){
		//alert($('.fullview div').size())
		       	closeArticle();
}
		navigateTo(currentURL, currentParam,names[2])
		
		});
	}
	
	
initAddress();
getWPheadlines('#newsbox');


 
 

setHighlite=function(){
    $('#mainnav a').each(function() {
                    $(this).toggleClass('selected', $(this).attr('id') == 'btn_'+currentURL);
                });
                 
 $('#tagcloud a').each(function() {
                    $(this).toggleClass('active', $(this).text().toLowerCase() ==  currentURL);
                });
if(currentURL=="all" || currentURL=="show all" || currentURL=="portfolio"){
 $('#showall').toggleClass('active');
}

}


navigateTo=function(url, pram,pram2){
if(pram==undefined){
pram=1; 
}
	if(url!=lastUrl || pram!=lastPram){
	
		lastUrl=url;
		lastPram=pram;
		// ADD: pages array from config.xml

		if(url=='about' || url=='impressum')	{

			$.address.value(url+'/');
			$.address.title(pageTitle+' » '+url.substr(0, 1).toUpperCase() + url.substr(1));
 			currentTag='';
			loadXML("ostblk/database/pages/"+url+".xml","page");

			$('#page').attr('class',url);
			setHighlite();


		}else if(url=='view'){
		
			loadXML("ostblk/database/pages/portfolio.xml","fullview");
		}else{

			currentTag=url.toLowerCase();

			if(pram != undefined){
							currentPage=pram;

				pOffset=(currentPage*articleMax)-articleMax;
			}	
			if(url != "all"){
			$.address.title(pageTitle+' » '+url.substr(0, 1).toUpperCase() + url.substr(1));

			}else{
						$.address.title(pageTitle);


			}
			loadXML("ostblk/database/pages/portfolio.xml","articles");
	     


		}

	}

}
	
//////////////////////////////////////////////////////////////////////
// load and parse rss feed
//////////////////////////////////////////////////////////////////////	
function getWPheadlines(mc){
	$.ajax({
 		 url: 'http://actualcolorsmayvary.com/blog/?feed=rss2',
 		 //url: '/assets/php/proxy.php',
 		 cache: false,
 		 success: function(blogXML){
		
		 $(mc).html('');
	
				for (b=0;b<10;b++)
				
				{
				
				$(mc).append('<div id="newsItem'+b+'" class="newsitem"></div>');
				$('#newsItem'+b).click(function () { 
                var blogurl = $(this).find('.nUrl').text() 
                window.open(blogurl);
     		   	}); 
     		   		

				$('#newsItem'+b).append('<div class="nTitle">'+$(blogXML).find('item:eq('+b+') > title').text()+'</div>');

				var dateString = $(blogXML).find('item:eq('+b+') > pubDate').text();
				var myDate = new Date(dateString);
				var pubDate= myDate.getDate()+'/'+myDate.getMonth()+'/'+myDate.getFullYear();
				$('#newsItem'+b).append('<div class="nDate">'+pubDate+'</div>');
				$('#newsItem'+b).append('<div class="nLink">read on...</div>');
				$('#newsItem'+b).append('<div class="nUrl">'+$(blogXML).find('item:eq('+b+') > link').text()+'</div>');
					$('#newsItem'+b).hover(
		function(){ 
			$(this).find('.nLink').addClass("externalHover");

		},
		function(){ 
			$(this).find('.nLink').removeClass("externalHover");
 
		}
	);
				}
				
				
				
				
				$("#newsbox > div:odd").addClass("alternate");
				$('#newsbox').jScrollPane();
  		 }
		});
	}
//////////////////////////////////////////////////////////////////////
// load portfolio xml
//////////////////////////////////////////////////////////////////////
// load XML
function loadXML(file,kind){


if(templates=='loaded'){
	$('#loader').html('');
	 target=kind;
 	var rndom = Math.floor(Math.random()*10000)*Math.floor(Math.random()*10000);
 	
 	if(kind=="page"){

 		$('#articles').hide();
  		$('#page').html('');
  		$('#template').find('.stageLoader').clone().appendTo('#loader');
	$('.stageLoader').corners();
	}else if(kind=='articles' || kind=='fullview'){
	//alert('jau')
   		$('#articles').html('');
 		$('#page').hide();
 		$('#template').find('.stageLoader').clone().appendTo('#loader');
	$('.stageLoader').corners();
 	}
 

	




	if($.inArray(file, cache)<0){

	$.ajax({
		type: "GET",
   		url: file+'?ticket='+rndom,
   		dataType: "xml", 
   		
   		success: function(data){
			 

			cache[cacheCounter]=file;
			cachedData[cacheCounter]=data;
			if(target=="articles"){

		 		originalXML=data;
				activeXML=data;
				getTags(data);
				
		 	}else if(target=="page"){
		 		pageXML=data;
				parseData(pageXML,0);
				loadXML("ostblk/database/pages/portfolio.xml","tags");

			}else if(target=="tags"){
				originalXML=data;
				activeXML=data;
				getTags(data, true);
			
			
			}else if(target=="fullview"){

				originalXML=data;
				activeXML=data;
				//close('articleUrl: '+articleUrl)

				getTags(data,'fullview');

			}
   		}
 	});
 		cacheCounter++;

 	}else{
	
				data=cachedData[$.inArray(file, cache)];
					if(target=="articles"){

				getTags(data);
				
		 	}else if(target=="page"){
				parseData(data,0);
			}else if(target=="fullview"){
						//	alert('articleUrl: '+articleUrl)

				showArticle(articleUrl);
				getTags(data, true);
 	}
 	}
}else{

getHTMLTemplates(file,kind);
}
}
//////////////////////////////////////////////////////////////////////
// loadTemplates
//////////////////////////////////////////////////////////////////////
function getHTMLTemplates(file,kind){
	$.ajax({
	url: 'ostblk/core/templates/contentblocks.php',
  	cache: false,
  	dataType: "html", 
  	success: function(html){
	templates='loaded';
	    templateDOM=html;

$('#wrap').append('<div id="template"></div>');
$('#template').append(templateDOM);
$('#template').css('display','none');

loadXML(file,kind)
  	}
	});


}
//////////////////////////////////////////////////////////////////////
// add pagination
//////////////////////////////////////////////////////////////////////
addPager = function(pagerNum){
$('#main-content').find('.pagination').remove();

	$('#template').find('.pagination').clone().prependTo('#pagerContainer');

	for (i=1;i<=pagerNum;i++){
		$('#pagerContainer').find('.pagination').append('<div class="pager">'+i+'</div>');
	}

	setPagerButtons=function(){
	$('#pagerContainer .pagination').find('.pager').each(function(){
	$(this).hover(function(){
		$(this).css('background-color','#666');
	},function(){
		$(this).css('background-color','#333');
	})
	$(this).click(function(){
				currentPage=$(this).html();

		parseData(tagXML,(currentPage*articleMax)-articleMax);
			$('#pagerContainer .pagination').find('.current').addClass('pager')
			$('#pagerContainer .pagination').find('.current').removeClass('current')
			$(this).addClass('current');
			$(this).removeClass('pager');
			$.address.value(currentURL+'/'+$(this).html()+'/');
			setPagerButtons();

	});
		$('#pagerContainer .pagination > div:eq('+currentPage+')').addClass('current');

})
$('#pagerContainer .pagination').find('.current').each(function(){
$(this).unbind('mouseenter mouseleave');
$(this).css('background-color','#333');
	$(this).unbind('click');


})

}
setPagerButtons();
}
//////////////////////////////////////////////////////////////////////
// get Tags 
//////////////////////////////////////////////////////////////////////
tagsDone=0;
getTags=function(xmlObj,noParse){
	if(tagsDone!=1){
		tagsDone=1;

		globalTags=new Array();
		$(xmlObj).find('aTags').each(function(){
			var tags= removeSpaces($(this).text());
			var thisTagArray = tags.split(",")
			globalTags = globalTags.concat(thisTagArray);
		})

	uniqueTags = globalTags.unique();
	uniqueTags.sort();
	
	for (g=0;g<uniqueTags.length;g++){
		var tagURL=uniqueTags[g].toLowerCase()
		$('#tagcloud').append('<a href="#/'+tagURL+'/" class="tag" id="btn_tag'+g+'" rel="address:/'+tagURL+'/ nofollow">'+uniqueTags[g]+'</a>');
//							
		$('#btn_tag'+g).address();

	}
	setTagCloudButtons();								//console.log('parsing: '+ currentTag); 


	


	}
	
if(noParse=='fullview'){
		parseTag(currentTag,'fullview');

}else if(noParse!=true){
		parseTag(currentTag);
		}
setHighlite();

}
setTagCloudButtons=function(){
             
	$('#tagcloud').find('.tag').each(function(){
		$(this).unbind('click');

		$(this).removeClass('active');
		
		if($(this).html()!=currentTag){
			$(this).click(function(){

				currentTag=$(this).html();
				
				//parseTag(currentTag);
				
			})
		}else{
			$(this).addClass('active');
		}
	})
	}



 
//////////////////////////////////////////////////////////////////////
// filter by tag
//////////////////////////////////////////////////////////////////////
parseTag =function(theTag, arg){

$('#main-content').find('.pagination').remove();
$('.topLink').hide();

//IE
if (window.ActiveXObject){
	var myXML = activeXML.xml;

}
// code for Mozilla, Firefox, Opera, etc.
else{
var myXML = (new XMLSerializer()).serializeToString(activeXML);
}

target="articles";

tagXML = parseXML(myXML);

myTag=theTag;

$('#tagcloud a').filter(function(){

		if(myTag==$(this).html().toLowerCase()){
		myTag=$(this).html();
		}
		
});

	theTag=theTag.toLowerCase();
	
	if(theTag=="show all" || theTag=="all" || theTag ==""){
		parseData(activeXML,pOffset);

	}else{

				//	try{ this['meta']=null; }catch(e){ return; } // Detect and trap error

		$(tagXML).find( 'aTags:not(:contains("'+myTag+'"))' ).parent().remove();
		
		if($(tagXML).find('article').size()>0){
			parseData(tagXML,pOffset)
			
		}else{
			if(arg!='fullview'){
	$.address.value('all/');
}else{

//		parseData(originalXML,pOffset);
tagXML = activeXML;
				showArticle(articleUrl);

}

		}
	}


}
//////////////////////////////////////////////////////////////////////
// parse xml to html
//////////////////////////////////////////////////////////////////////
function parseData(XMLobj, offset){

		parsedXML=$(XMLobj).clone();
			 articleNum= $(XMLobj).find('article').size();
	if (articleNum > articleMax){

		var pagerNum=Math.ceil(articleNum/articleMax);
		addPager(pagerNum);
	}
		 $('#loader').html('');
	switch(target)
	{
	case "articles":
		//setHighlite();//$('.nav').removeClass('selected');

				 $('#page').html('');

			 $('#articles').html('');
			 $('#articles').show();
	
	for (i=0;i<articleMax;i++){


		var title= $(XMLobj).find( 'article:eq('+(i+offset)+') aTitle').text();
		var client= $(XMLobj).find( 'article:eq('+(i+offset)+') aClient').text();
		var year= $(XMLobj).find( 'article:eq('+(i+offset)+') aYear').text();
		var work= $(XMLobj).find( 'article:eq('+(i+offset)+') aWork').text();
		var description= $(XMLobj).find( 'article:eq('+(i+offset)+') aDescription').text();
		var image= $(XMLobj).find( 'article:eq('+(i+offset)+') aImage').text();
		var	temptags = $(XMLobj).find( 'article:eq('+(i+offset)+') aTags').text();
		var tags= removeSpaces(temptags);

		var tagArray = tags.split(",")		
		if(title!=""){
		$('#template').find('.article').clone().appendTo('#'+target);
		
		$('#'+target).find('.article:eq('+i+')').attr('id','article'+i);
		$('#article'+i).hide();
		$('#article'+i).find('.aTitle').html(title);
		$('#article'+i).find('.aClient').html(client);
		$('#article'+i).find('.aYear').html(year);
		$('#article'+i).find('.aWork').html(work);
		$('#article'+i).find('.aDescription').html(description);
		$('#article'+i).find('.aImage').attr('src', 'ostblk/core/functions/thumb.php?file='+dbPath+'/images/'+image+'&size=293"/>');
		for (t=0;t<tagArray.length;t++){
				$('#article'+i).find('.aTags').append('<a href="#/'+tagArray[t].toLowerCase()+'/" class="tag" rel="address:/'+tagArray[t].toLowerCase()+'/ nofollow">'+tagArray[t]+'</a>');
		} 
				$('#article'+i).find('.aTitle').click(function(){
							articleUrl=$(this).html().makeSlug();
							
							$.address.value('/view/'+articleUrl+'/');
				//showArticle($(this).html())
				})
				$('#article'+i).find('.articleLink').click(function(){
											articleUrl=$(this).parent().parent().parent().find('.aTitle').html().makeSlug();

							$.address.value('/view/'+articleUrl+'/');
				//showArticle($(this).parent().parent().parent().find('.aTitle').html())
				})
		$('#article'+i).find('.tag').each(function(){
		$(this).click(function(){

		currentTag=$(this).html();
			

		})
		
		})
		$('#article'+i).fadeTo(0,0).delay(250*(i)).fadeTo(250,1);

		}
	}
	 	 break;
	case "page":
		
		$('#pagerContainer').find('.pagination').remove();
		currentTag="__page";
		 $('#page').show();
			var pageTitle= $(XMLobj).find('ostblk').attr('pageTitle');
					 $('#page').html('<h1>'+pageTitle+'</h3>');


		for (i=0;i<$(XMLobj).find( 'article').size();i++){
		
			var description= $(XMLobj).find( 'article:eq('+i+') aDescription').text();
			var cssClass = $(XMLobj).find( 'article:eq('+i+')').attr('class');
			$('#template').find('.pArticle').clone().appendTo('#'+target);
			$('#'+target).find('.pArticle:eq('+i+')').attr('id','pArticle'+i);
			$('#pArticle'+i).hide();

			if(title!=""){
				if(cssClass!=undefined){
								$('#pArticle'+i).addClass(cssClass);				

				}
				$('#pArticle'+i).find('.aDescription').html(description);				
			}
	
					$('#pArticle'+i).fadeTo(0,0).delay(250*(i)).fadeTo(250,1);

		}
	
	 break;

	}	
	if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
			$('.topLink').hide();
 	}else{
		$('.topLink').delay(3000).fadeIn(800);
	}
	

	}

});
//////////////////////////////////////////////////////////////////////
// show full article
//////////////////////////////////////////////////////////////////////
closeArticle=function(){

overlay=false;

$('#overlay').html('');
$('#overlay').remove();
$('#topbody').css('background-image','url(assets/images/raster.png)');

$('#wrap').fadeIn();
$('#supersize').fadeIn();
}
showArticle=function(str){


$(tagXML).find('article').each(function(){

	if($(this).find('aTitle').text().makeSlug()==str){

		var title= $(this).find( 'aTitle').text();
		var eHead= $(this).find( 'eTitle').text();
		var description = $(this).find( 'eDescription').text();


		$('#wrap').fadeOut();
		$('#supersize').fadeOut();
		$('#topbody').css('background-image','none');


		$('#template').find('#overlay').clone().prependTo('#topbody');
		$('#overlay .eTitle').html(title);
 		$('#overlay .eBody').html(description);
		var api = $("#overlay").scrollable({  size: 4,api: true});

		$(this).find( 'eImage').each(function(){
			var image = $(this).text();
			var path = '<img src="ostblk/core/functions/thumb.php?file='+dbPath+'/images/'+image+'&size=164"/>';

  		  api.getItemWrap().append( 
 		       path 
 		   ); 

		})

    	//reload the scroller 
        var scrollers = $("#overlay").scrollable({size: 5,api:true}); 
        scrollers.reload();  
		$('#topbody').scrollTop(0);
		$('#overlay').show();

		var columns = $('.eBody').columnize({ columns: 2 });  
		$('.topLink2').click(
  function(){

 // $.scrollTo( '#target-examples', 800, {easing:'elasout'} );
 
		$('#topbody').scrollTo( '0px', 700, "easeOutQuint" );
		//$.scrollToElement( '#wrap' );

  }
);
		$(".fClose").click(function() { 
		//alert(initVal)
		if(initVal<2){
			$.address.value('all/');
		//closeArticle();
		}else{
history.back();

}


})
//setuo for the gallery

$(".items img").click(function() { 
 
    // calclulate large image's URL based on the thumbnail URL (flickr specific) 
    var tempurl = $(this).attr("src").replace('ostblk/core/functions/thumb.php?file=', ""); 
    var url = tempurl.replace('&size=164', ""); 
    // get handle to element that wraps the image and make it semitransparent 
    var wrap = $("#image_wrap").fadeTo("medium", 0.5); 
 
    // the large image from flickr 
    var img = new Image(); 
 
    // call this function after it's loaded 
    img.onload = function() { 
 
        // make wrapper fully visible 
        wrap.fadeTo("fast", 1); 
 
        // change the image 
        wrap.find("img").attr("src", url); 
 
    }; 
 
    // begin loading the image from flickr 
    img.src = url; 
 
// when page loads simulate a "click" on the first image 
}).filter(":first").click();
overlay=true;

}
})
}
//////////////////////////////////////////////////////////////////////
// prototypes
//////////////////////////////////////////////////////////////////////
Array.prototype.unique = function () {
	var r = new Array();
	o:for(var i = 0, n = this.length; i < n; i++)
	{
		for(var x = 0, y = r.length; x < y; x++)
		{
			if(r[x]==this[i])
			{
				continue o;
			}
		}
		r[r.length] = this[i];
	}
	return r;
}
function removeSpaces(string) {
 return string.split(' ').join('');
}
  function parseXML( xml ) { 
        if( window.ActiveXObject && window.GetObject ) { 
            var dom = new ActiveXObject( 'Microsoft.XMLDOM' ); 
            dom.loadXML( xml ); 
            return dom; 
        } 
        if( window.DOMParser ) 
            return new DOMParser().parseFromString( xml, 'text/xml' ); 
        throw new Error( 'No XML parser available' ); 
    } 
    
    
String.prototype.makeSlug = function () {
	return this.toLowerCase().replace(/&/g,'+').replace(/!/g,'').replace(/,/g,'').replace(/</g,'').replace(/>/g,'').replace(/ /g,'-');
};

