/* ----- Sinds1984.nl Javascript
	
	Revision 30 november 2011
	
	Requires Mootools 1.2.4 or higher.
	All code by Doménique van Gennip, domo@sinds1984.nl.
	This code is considered open source and free for all to use.
	It is not considered a kind of excellent example code (:
*/

var pageType=0;var pageParameters={rtype:0,object:0,sl:0,order:0,start:0,limit:0};window.addEvent('domready',function(){MooTools.lang.setLanguage("nl-NL");getPageQuery();if(pageType>=0){setPage(pageType);}});setPage=function(kindOfPage){initMenu();initSidebar();if(kindOfPage==2){initPhoto();}
initFeed();};getPageQuery=function(){var rtype_param=gup('t');var object_param=gup('obj');var sl_param=gup('sl');var order_param=gup('o');var start_param=gup('s');var limit_param=gup('l');if(rtype_param>2){rtype_param=0;}
if(sl_param>1){sl_param=0;}
if(order_param>3){order_param=0;}
if(rtype_param===0&&limit_param===0){limit_param=12;}
else if(rtype_param==1&&limit_param===0){limit_param=40;}
pageType=rtype_param;pageParameters.rtype=rtype_param;pageParameters.object=object_param;pageParameters.sl=sl_param;pageParameters.order=order_param;pageParameters.start=start_param;pageParameters.limit=limit_param;};gup=function(name){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(window.location.href);if(results===null||!results[1].match(/^\d+$/)||results[1]<0){return 0;}else{return results[1].toInt();}};initMenu=function(){if(pageParameters.object==3){$('menu-item-home').removeClass('selected');$('menu-item-photo').removeClass('selected');$('menu-item-archive').removeClass('selected');$('menu-item-tools').removeClass('selected');$('menu-item-about').addClass('selected');}
else if(pageParameters.object==2){$('menu-item-home').removeClass('selected');$('menu-item-photo').removeClass('selected');$('menu-item-archive').removeClass('selected');$('menu-item-tools').addClass('selected');$('menu-item-about').removeClass('selected');}
else if(pageType===0){$('menu-item-home').addClass('selected');$('menu-item-photo').removeClass('selected');$('menu-item-archive').removeClass('selected');$('menu-item-tools').removeClass('selected');$('menu-item-about').removeClass('selected');}
else if(pageType==1){$('menu-item-home').removeClass('selected');$('menu-item-photo').removeClass('selected');$('menu-item-archive').addClass('selected');$('menu-item-tools').removeClass('selected');$('menu-item-about').removeClass('selected');}
else if(pageType==2){$('menu-item-home').removeClass('selected');$('menu-item-photo').addClass('selected');$('menu-item-archive').removeClass('selected');$('menu-item-tools').removeClass('selected');$('menu-item-about').removeClass('selected');}};initSidebar=function(){if(pageType==2){hideSidebar();}else{showSidebar();}};showSidebar=function(){$('sidebar-wrapper').setStyle('display','block');};hideSidebar=function(){$('sidebar-wrapper').setStyle('display','none');};initFeed=function(){if(!$chk($('feed'))){var myFeed=new Element('div',{id:'feed'});myFeed.inject($('content'),'top');var feedHTML;if(pageType==2){feedHTML='\n<div id="feedbottom-filler"></div>\n';}
else{feedHTML='\n<div id="feedtop"></div>\n'+'\n<div id="feedbottom">\n<h6 id="feedbottomtext"><a id="feed-more-posts" href="#"><span class="firstword">Meer </span>posts</a> / <a href="#menu"><span class="firstword">Terug </span>naar boven</a></h6>\n</div>\n'+'<div id="feedbottom-filler"></div>\n';}
$('feed').innerHTML=feedHTML;}
if($chk($('feed-more-posts'))){$('feed-more-posts').addEvent('click',onEventMorePosts);}
feedNewObjects=false;if(pageType!=2){feedObject=getFeedObject(0);}
feedSpinner=new Spinner('feed',{'class':'spinner-dark',img:{'class':'spinner-dark-img'}});feedSpinner.show();Form.Validator.add('minLength',{errorMsg:function(element,props){return'Dit veld moet minimaal {minLength} teken bevatten'.substitute({minLength:props.minLength});},test:function(element,props){if(props.minLength!==null){return(element.get('value').length>=props.minLength);}else{return true;}}});};removeFeed=function(){if($chk($('feed'))){feedSpinner.destroy();if($chk($('feed-more-posts'))){$('feed-more-posts').removeEvents('click');}
$('feed').dispose();}};onFeedRequestSuccessHandler=function(freshObject){feedNewObjects=true;feedSpinner.show();feedObject=freshObject;for(i=0;i<=feedObject.length-1;i++){if(feedObject[i].oID){placeArticle(feedObject[i],'bottom');feedSpinner.position();}}
if($chk($('feed-more-posts'))){if(pageParameters.object===0){$('feed-more-posts').setStyle('display','inline');}else{$('feed-more-posts').setStyle('display','none');}}
feedSpinner.hide();};placeArticle=function(aObject,placement){var itemID='item'+aObject.oID;var myItem=new Element('div',{id:itemID});var itemPlacement=''+placement;var itemReplace=false;var itemIsThereAlready=false;if($chk($('item'+itemPlacement))||$chk($(itemID))){itemReplace=true;if($chk($(itemID))){itemIsThereAlready=true;}}
else if(itemPlacement.match(/^\d+$/)){itemPlacement='top';}
if(itemPlacement=='single'){itemPlacement='top';}
if(itemReplace){if(itemIsThereAlready){}else{detachArticleEventlisteners(itemPlacement);myItem.replaces($('item'+itemPlacement));}}
else if(itemPlacement=='top'){if($chk($('feedtop'))){myItem.inject($('feedtop'),'after');}else{myItem.inject($('feed'),'top');}}
else if(itemPlacement=='bottom'){if($chk($('feedbottom'))){myItem.inject($('feedbottom'),'before');}else{if($chk($('feedbottom-filler'))){myItem.inject($('feedbottom-filler'),'before');}}}
if($chk($(itemID))){if(itemIsThereAlready){}else{if(pageType==1){$(itemID).innerHTML=constructArchiveItem(aObject);}
else if(pageType===0&&aObject.ctype==2){$(itemID).innerHTML=constructPhotoFeedItem(aObject);}else{$(itemID).innerHTML=constructArticle(aObject);}}}
attachArticleEventlisteners(aObject.oID);};removeArticle=function(itemID){if($chk($('item'+itemID))){detachArticleEventlisteners(itemID);$('item'+itemID).dispose();}};constructArchiveItem=function(aObject){var linkType=0;var iconClass='icon-item-long';if(aObject.ctype==1){iconClass='icon-item-short';}
else if(aObject.ctype==2){linkType=2;iconClass='icon-item-photo';}
var articleHTML='\n<div class="feedaddeditem">\n<h4><span class="icon-image '+iconClass+'"></span><a id="item'+aObject.oID+'-title-link" href="/?t='+linkType+'&amp;obj='+aObject.oID+'">'+aObject.title+'</a></h4>\n<h5 class="item-title-time"><span class="icon-image icon-clock"></span>'+getFullDateFormatted(aObject.posttime)+' @ '+aObject.loc+'</h5><h5 class="item-title-reactcount">';if(aObject.fbID!==0){var fbURL='http://www.facebook.com/dvgennip/posts/'+aObject.fbID.match(/\d+$/);articleHTML=articleHTML+'<a href="'+fbURL+'" title="Reageer via Facebook"><span class="icon-image icon-facebook"></span></a>';}
if(aObject.tweetid!==0){var twitterURL='https://twitter.com/#!/dvangennip/status/'+aObject.tweetid;articleHTML=articleHTML+'<a href="'+twitterURL+'" title="Reageer via Twitter"><span class="icon-image icon-twitter"></span></a>';}
articleHTML=articleHTML+'<span class="icon-image icon-react"></span>'+getReadableCommentCountHTML(aObject.comments)+'</h5>\n</div>\n';return articleHTML;};constructArticle=function(aObject){articleHTML='\n<div class="feedtitle">\n';if(aObject.ctype===0){articleHTML=articleHTML+'<h1><a id="item'+aObject.oID+'-title-link" href="/?obj='+aObject.oID+'">'+aObject.title+'</a></h1>';}else if(aObject.ctype==1){articleHTML=articleHTML+'<h2 class="tweet-title">'+convertTitleToTweet(aObject.title)+'</h2>';}else{articleHTML=articleHTML+'<h1>'+aObject.title+'</h1>';}
articleHTML=articleHTML+'\n<h5 class="item-title-time"><span class="icon-image icon-clock"></span>'+getReadableTimeDiff(aObject.posttime)+' @ '+aObject.loc+'</h5><h5 class="item-title-reactcount">';if(aObject.fbID!==0){var fbURL='http://www.facebook.com/dvgennip/posts/'+aObject.fbID.match(/\d+$/);articleHTML=articleHTML+'<a href="'+fbURL+'" title="Reageer via Facebook"><span class="icon-image icon-facebook"></span></a>';}
if(aObject.tweetid!==0){var twitterURL='https://twitter.com/#!/dvangennip/status/'+aObject.tweetid;articleHTML=articleHTML+'<a href="'+twitterURL+'" title="Reageer via Twitter"><span class="icon-image icon-twitter"></span></a>';}
articleHTML=articleHTML+'<a id="item'+aObject.oID+'-react-top-link" href="#reacties'+aObject.oID+'"><span class="icon-image icon-react"></span>'+getReadableCommentCountHTML(aObject.comments)+'</a></h5>\n</div>\n';articleHTML=articleHTML+'<div class="feedtext">\n';if(aObject.ctype==2){articleHTML=articleHTML+'<p>'+aObject.desc+'</p>\n';}
else if(aObject.ctype===0){articleHTML=articleHTML+'<div id="item'+aObject.oID+'-text" ><div class="spinner-img"></div></div>\n';getFullArticleContent(aObject.oID);}
articleHTML=articleHTML+'<div id="reacties'+aObject.oID+'" class="react"></div>\n</div>\n';articleHTML=articleHTML+'<div class="feedtext-reactline">\n<h6><a id="item'+aObject.oID+'-react-bottom-link" href="#reacties'+aObject.oID+'"><span class="firstword">Toon </span>reacties</a> / <a id="item'+aObject.oID+'-myreact-link" href="#reacties'+aObject.oID+'"><span class="firstword">Geef jouw </span>reactie</a></h6>\n</div>\n';return articleHTML;};constructPhotoFeedItem=function(aObject){var articleHTML='\n<div class="feedaddeditem">\n<h5 class="inline"><span class="icon-image icon-addphoto"></span>Nieuwe foto: </h5><h4 class="inline"><a href="/?t=2&amp;obj='+aObject.oID+'">'+aObject.title+'</a></h4>\n<div class="image feedimage"><a href="/?t=2&amp;obj='+aObject.oID+'"><img src="/images/'+aObject.oID+'_small.'+aObject.ext+'" alt="'+aObject.desc+'" /></a></div>\n</div>\n';return articleHTML;};getFullArticleContent=function(itemID){var myArticleRequest=new Request.HTML({update:'item'+itemID+'-text'}).get('/articles/'+itemID+'.html');};convertTitleToTweet=function(ttext){var titleText=ttext;titleText=titleText.replace(/(\s*[^&])#(\w+)/g,'$1<a class="tweet-title" rel="nofollow" href="http://twitter.com/#!/search?q=%23$2">#$2</a>');titleText=titleText.replace(/@(\w+)/g,'<a class="tweet-title" rel="nofollow" href="http://twitter.com/#!/$1">@$1</a>');return titleText;};getReadableTimeDiff=function(otherDate){var timeThen=Date.parse(otherDate);if(timeThen){return timeThen.timeDiffInWords();}else{return"datum onbekend";}};getFullDateFormatted=function(aDate){return Date.parse(aDate).format('%d-%m-%Y (%H:%M)');};getNumberString=function(count){var nString;switch(parseInt(count,10)){case 0:nString='geen';break;case 1:nString='één';break;case 2:nString='twee';break;case 3:nString='drie';break;case 4:nString='vier';break;case 5:nString='vijf';break;case 6:nString='zes';break;case 7:nString='zeven';break;case 8:nString='acht';break;case 9:nString='negen';break;case 10:nString='tien';break;case 11:nString='elf';break;case 12:nString='twaalf';break;case 13:nString='dertien';break;case 14:nString='veertien';break;case 15:nString='vijftien';break;case 16:nString='zestien';break;case 17:nString='zeventien';break;case 18:nString='achttien';break;case 19:nString='negentien';break;case 20:nString='twintig';break;default:nString=''+count;break;}
return nString;};attachArticleEventlisteners=function(itemID){if($chk($('item'+itemID+'-react-top-link'))){$('item'+itemID+'-react-top-link').addEvent('click',onReactionFieldToggle);}
if($chk($('item'+itemID+'-react-bottom-link'))){$('item'+itemID+'-react-bottom-link').addEvent('click',onReactionFieldToggle);}
if($chk($('item'+itemID+'-myreact-link'))){$('item'+itemID+'-myreact-link').addEvent('click',onMyReactionAreaToggle);}};detachArticleEventlisteners=function(itemID){if($chk($('item'+itemID+'-react-top-link'))){$('item'+itemID+'-react-top-link').removeEvents('click');}
if($chk($('item'+itemID+'-react-bottom-link'))){$('item'+itemID+'-react-bottom-link').removeEvents('click');}
if($chk($('item'+itemID+'-myreact-link'))){$('item'+itemID+'-myreact-link').removeEvents('click');}};onEventInternalLink=function(e){var parent=e.target.getParent('div[id^=item]');var targetID=parent.getProperty('id').replace(/item/,"").toInt();console.log("event listener called: onEventInternalLink / for target: "+targetID);return false;};onEventMorePosts=function(e){pageParameters.start=pageParameters.start+pageParameters.limit;if(pageType===0){pageParameters.limit=12;}else{pageParameters.limit=40;}
getFeedObject(0);return false;};getReadableCommentCountHTML=function(cCount){var countString=getNumberString(cCount);var countHTML='';if(cCount!=1){countHTML='<span class="firstword">'+countString+' </span>reacties';}else{countHTML='<span class="firstword">'+countString+' </span>reactie';}
return countHTML;};onReactionFieldToggle=function(e){$(e.target);var parent=e.target.getParent('div[id^=item]');var targetID=parent.getProperty('id').replace(/item/,"").toInt();toggleReactionArea(targetID,false);return false;};onMyReactionAreaToggle=function(e){$(e.target);var parent=e.target.getParent('div[id^=item]');var targetID=parent.getProperty('id').replace(/item/,"").toInt();toggleReactionArea(targetID,true);return false;};toggleReactionArea=function(itemID,constructMyReactArea){var statusOpen=false;var statusLoaded=false;if($('reacties'+itemID).getStyle('display')=='none'){}else{var reactiesHeight=$('reacties'+itemID).getStyle('height').toInt();if(reactiesHeight!==0){statusOpen=true;}}
if($('reacties'+itemID).getChildren('div[class^=comment]').length!==0){statusLoaded=true;}
if(constructMyReactArea){statusOpen=true;if(!$chk($('comment-self-'+itemID))){var myReactArea=new Element('div',{'id':'comment-self-'+itemID,'class':'comment-self'});myReactArea.inject($('reacties'+itemID),'bottom');myReactArea.innerHTML='<div class="commenttop"></div><div class="commentheader"><h4 class="inline">Jouw reactie:</h4></div>\n<div id="commenttext-self-'+itemID+'" class="commenttext"><form action="/cgi-bin/commentAdd.cgi" method="post" id="form'+itemID+'"><fieldset><input type="hidden" id="object'+itemID+'" name="object" value="'+itemID+'" /><input type="text" id="n'+itemID+'" name="n" class="inputSingle minLength:1" alt="Naam" value="" /><input type="text" id="e'+itemID+'" name="e" class="inputSingle" alt="E-mailadres (wordt niet openbaar gemaakt)" value="" /><textarea name="c" id="c'+itemID+'" class="inputText minLength:1" cols="50" rows="4"></textarea><input type="submit" id="submit'+itemID+'" class="inputSubmit" value="Verstuur" /></fieldset></form></div>';new OverText('n'+itemID,{wrap:true});new OverText('e'+itemID,{wrap:true});new Form.Validator.Inline($('form'+itemID));new Form.Request($('form'+itemID),$('commenttext-self-'+itemID),{requestOptions:{spinnerOptions:{message:'Je reactie wordt verzonden…','class':'spinner-mycomment',img:{'class':'spinner-mycomment-img'}}}});}}else{statusOpen=!statusOpen;}
if(statusOpen){$('item'+itemID+'-react-bottom-link').innerHTML='<span class="firstword">Verberg </span>reacties';if(!statusLoaded){$('reacties'+itemID).setStyle('display','block');var myPlaceHolderSpinner=new Element('div',{'id':'react-spinner-'+itemID,'style':'text-align: center;','html':'<img src="/layout/spinner-default.gif">'});if($chk($('comment-self-'+itemID))){myPlaceHolderSpinner.inject($('comment-self-'+itemID),'before');}else{myPlaceHolderSpinner.inject($('reacties'+itemID),'bottom');}
getComments(itemID);}else{$('reacties'+itemID).setStyle('display','block');}}else{$('item'+itemID+'-react-bottom-link').innerHTML='<span class="firstword">Toon </span>reacties';$('reacties'+itemID).setStyle('display','none');}};getComments=function(itemID){var jsonRequest=new Request.JSON({url:"/cgi-bin/commentRequest.cgi",onSuccess:function(response,responseJSON){onSuccessfulCommentRequestHandler(responseJSON);}}).post({'object':itemID});};onSuccessfulCommentRequestHandler=function(responseJSON){var commentObject=JSON.decode(responseJSON);var placeholderSpinner=$('react-spinner-'+commentObject[0].oID);placeholderSpinner.dispose();if(commentObject[0].count=='0'){var noComment=new Element('div',{'id':'comment-empty-'+commentObject[0].oID,'class':'comment'});noComment.inject($('reacties'+commentObject[0].oID),'top');noComment.innerHTML='<div class="commenttop"></div><div class="commentheader"><h4 class="inline">Er zijn nog geen reacties gegeven.</h4></div>';}else{for(i=1;i<=commentObject.length-1;i++){if(commentObject[i].cID){var myComment=new Element('div',{'id':'comment-'+commentObject[i].cID,'class':'comment'});if($chk($('comment-self-'+commentObject[0].oID))){myComment.inject($('comment-self-'+commentObject[0].oID),'before');}else{myComment.inject($('reacties'+commentObject[0].oID),'bottom');}
myComment.innerHTML=constructComment(commentObject[i]);}}}};constructComment=function(aComment){var commentHTML='<div class="commenttop"></div>\n<div class="commentheader">\n<h4 class="inline">'+aComment.sender+'</h4><h5 class="inline">&nbsp;schreef '+getReadableTimeDiff(aComment.posttime)+':</h5></div>\n<div class="commenttext">'+aComment.content+'</div>\n';return commentHTML;};initPhoto=function(){pNewObjects=false;pCurrentIndex=0;pFolder="/images/";pSizeSuffix="";photoObject=getFeedObject(2);pCurrentPhotoID=0;if(!$chk($('photoframe'))){$('photo').innerHTML='<div id="photoframe"><div id="left-nav" class="photo-nav"></div><img id="photo-image" src="/redesign2010/layout/dark.png" alt="...een ogenblik geduld..." /><div id="right-nav" class="photo-nav"></div></div>';}
pSpinner=new Spinner('photo-image');changePhoto(pCurrentIndex);};removePhoto=function(){if($chk($('photoframe'))){pSpinner.destroy();setPreviousPhotoButton(false);setNextPhotoButton(false);$('photo').innerHTML='';}};changePhoto=function(pnumber){if(pnumber>=0&&pnumber<=photoObject.length){if(pCurrentIndex!=pnumber||pNewObjects){pNewObjects=false;placeArticle(photoObject[pnumber],photoObject[pCurrentIndex].oID);if(photoObject[pnumber].oID!=pCurrentPhotoID){setPhoto(pnumber);}
pCurrentIndex=pnumber;}
if(pnumber>0){setPreviousPhotoButton(true,photoObject[pCurrentIndex-1].oID);}else{setPreviousPhotoButton(false);}
if(pnumber<photoObject.length-1){setNextPhotoButton(true,photoObject[pCurrentIndex+1].oID);}else{setNextPhotoButton(false);}}};setPhoto=function(pIndex){pCurrentPhotoID=photoObject[pIndex].oID;var imgurl=pFolder+photoObject[pIndex].oID+pSizeSuffix+'.'+photoObject[pIndex].ext;pSpinner.show();pImage=$('photo-image');if(!$defined(myPhotoTransitionEffect)){var myPhotoTransitionEffect=new Fx.Morph(pImage,{duration:'normal',transition:Fx.Transitions.Sine.easeOut});}
pImage.onload=function(){pSpinner.hide(true);myPhotoTransitionEffect.start({'height':pImage.naturalHeight,'width':pImage.naturalWidth});};pImage.setProperty('alt',photoObject[pIndex].title);pImage.setProperty('src',imgurl);};setPreviousPhotoButton=function(activeState,objID){$('right-nav').removeEvents('click');if(activeState){$('right-nav').innerHTML='<h2><a href="/?t=2&amp;obj='+objID+'">&#187;</a></h2>';$('right-nav').addEvent('click',onPreviousPhotoClick);}else{$('right-nav').innerHTML='<h2>&#187;</h2>';}};setNextPhotoButton=function(activeState,objID){$('left-nav').removeEvents('click');if(activeState){$('left-nav').innerHTML='<h2><a href="/?t=2&amp;obj='+objID+'">&#171;</a></h2>';$('left-nav').addEvent('click',onNextPhotoClick);}else{$('left-nav').innerHTML='<h2>&#171;</h2>';}};onNextPhotoClick=function(e){changePhoto(pCurrentIndex+1);return false;};onPreviousPhotoClick=function(e){changePhoto(pCurrentIndex-1);return false;};onPhotoRequestSuccessHandler=function(freshObject){if(feedSpinner){feedSpinner.hide(true);}
pNewObjects=true;var currentPhotoID=0;if(photoObject.length!==0){currentPhotoID=photoObject[pCurrentIndex].oID;}
photoObject=freshObject;var currentPhotoIndex;photoObject.forEach(function(item,index){if(item.oID==currentPhotoID){currentPhotoIndex=index;return index;}});if(!$chk(currentPhotoIndex)){currentPhotoIndex=0;}
changePhoto(currentPhotoIndex);if(pageType==2&&photoObject.length<=1){pageParameters={rtype:2,object:0,sl:0,order:0,start:0,limit:0};getFeedObject(2);}};getFeedObject=function(requestGoal){var fObject=[];var jsonRequest=new Request.JSON({url:"/cgi-bin/objectRequest.cgi",onSuccess:function(response,responseJSON){var newObject=JSON.decode(responseJSON);for(i=0;i<=newObject.length-1;i++){if(newObject[i].oID){newObject[i].oID=newObject[i].oID.toInt();newObject[i].ctype=newObject[i].ctype.toInt();newObject[i].comments=newObject[i].comments.toInt();if(newObject[i].fbid.match(/^\d+\_?\d+$/)){newObject[i].fbID=newObject[i].fbid;}else{newObject[i].fbID=0;}
if(newObject[i].tweetid.match(/^\d+$/)){newObject[i].tweetid=parseInt(newObject[i].tweetid,10);}else{newObject[i].tweetid=0;}}}
if(requestGoal!=2){onFeedRequestSuccessHandler(newObject);}
else{onPhotoRequestSuccessHandler(newObject);}}}).post(pageParameters);return fObject;};
