/*==============================================================================
MyNMMD functions
(c) 2007 Allard Rogier van Ravestijn
www.nmld.nl
==============================================================================*/

var serList ='';


/*============================================================================*/
/* Controlling "meer gegevens" settings */

function extDataObj() {
   extDataObj.myself = this ;
   var dataNmmd = false ;
   this.toggle = function() { 
      /* toggles extra data view in MyNMMD */
      if (dataNmmd) { 
         dataNmmd = false  ;
         createCookie('data','false',40);
      } else { 
         dataNmmd = true  ;
         createCookie('data','true',40) ;
      }
      applyDataSetting() ;
   }
   this.init = function () {  
      /*reads cookie for setting */
      if ( readCookie('data') ) {
         if ( readCookie('data') == 'true' ) dataNmmd = true ;
      }
      applyDataSetting() ;
   }
   function applyDataSetting() {
      /*private function for setting extra data view in NMMD */
      if ( document.getElementById('moredata') )  {
         if ( dataNmmd ) {
            document.getElementById('moredata').style.display = 'block';
            document.getElementById('clickplus').style.display = 'none';
         } else {
            document.getElementById('moredata').style.display = 'none';
            document.getElementById('clickplus').style.display = 'block';
         }
      }
      /* update MyNMMD checkbox */
      if ( dataNmmd ) {
            document.getElementById('data').checked = true ;
      } else {
            document.getElementById('data').checked = false ;
      }
   }
}



/*============================================================================*/
/* Controlling AJAX acceleration settings */


function accelObj() {
   /* global accelNmmd */
   this.toggle = function() {
      if (accelNmmd) { 
         accelNmmd = false  ;
         createCookie('accel','false',40);
      } else { 
         accelNmmd = true  ;
         createCookie('accel','true',40) ;
      }
   }
   this.init = function() {
      if (readCookie('accel')) {
         if (readCookie('accel') == 'true') {
            accelNmmd = true ;
            document.getElementById('accel').checked = true ;
         }
      }
   } 
}


/*============================================================================*/
/* Controlling favorites handling and settings */

function favorites() {
   /* controlling favorite settings and methods */
   favorites.myself = this ;
   favUrl = new Array() ;
   favDesc = new Array();
   var maxSet = 0 ;
   this.init = function() {
      /* page start or reload */
      /* step 1, load favs from cookie */
      getFavFromCookie() ;
      /* step 2, load from server (if needed.. serList var must be filled) */
      this.getFavFromServer() ;
      /* step 3, load saved list from cookie */
      this.drawFavSavedList() ;
      /* step 4, draw favlist */ 
      drawFav() ;
      /* Insert Permalink */
      this.makePermaLink() ;

   }

   this.makePermaLink= function(){
      var hText = '' ;
      var plink = '' ;
      var thisHost = 'http://'+location.href.replace('http://','').split('/')[0] ;
      if ( thisPage ) {
         /* this is an accelerated page, so do not use url */
         plink = thisHost + '/index.php?' + thisPage ;
      } else {
         plink = location.href ;
      }
      if ( plink.length > 70 ) plink = plink.substring(0,70) + '...' ;
      hText += '<h3 class=\"topCollapse\">Permalink naar deze pagina</h3>';
      hText += '<div class=\"ridgeBorder\">&#160;&#160;' ;
      hText += '<a href=\"' + plink + '\" id=\"plink\">&gt;&#160;' ;
      hText += plink +'</div>';
      var insertPlink = document.createElement('span') ;
      insertPlink.innerHTML= hText ;
      document.getElementById('permalink').innerHTML= '' ;
      document.getElementById('permalink').appendChild(insertPlink) ;
      document.getElementById('plink').marker  = 'extLink'
   }

   this.setFav = function() {
      /* adding favorite to the list */
      var ref = location.href ;
      arg  = new Array() ;
      if ( thisPage ) {
         /* this is an accelerated page, so do not use url */
         arg[1] = thisPage ;
      } else {
         if ( !(ref.indexOf('page') == -1) ) {
            arg  = ref.split('?');
         } else {
            arg [1]='page=start' ;
         }
      }
      maxSet++ ;
      favUrl[maxSet] = arg [1]  ;
      if (document.getElementById('jTitle')) {
         favDesc[maxSet] = document.getElementById('jTitle').innerHTML ;
      } else {
         favDesc[maxSet] = 'No title';
      }
      drawFav() ;
      saveFavToCookie() ;
   }

   this.delFav = function() {
      /* deletes all favorites*/
      maxSet = 0 ;
      favUrl = new Array() ;
      favDesc = new Array();
      deleteFavFromCookie() ;
      drawFav() ;
   }

   this.saveFavToServer = function() {
      /*get your favs on the server, so you can share !!*/
      sendArg = new Array ;
      var asynConn = new HtmlAsyncReq('POST') ;   
      /*If its first page viewed, thisPage has no value..*/
      if ( thisPage ) {
         /* this is an accelerated page, so do not use url */
         sendArg[1] = thisPage ;
      } else {
         if ( !(location.href.indexOf('page') == -1) ) {
           sendArg  = location.href.split('?');
         } else {
            sendArg[1]='page=start' ;
         }
      }
      asynConn.setData('cfeed.php?' + 'save=true') ;
      asynConn.setOnReady('setPubFav') ;
      asynConn.runReq() ;  
   }

   this.getFavFromServer = function() {
      /*uses a global variable -serList- which must be filled with serialized fav data */

      if ( serList.length > 2  ) {
         var serArray = serList.split("//") ;

         var i = 0 ;
         var y = (serArray.length-1)/2 ;
         maxSet= y ;
         for(i=0;i<(serArray.length-1);i=i+2) {
           favUrl[y]=serArray[i].replace("_","=") ;
           favDesc[y]=serArray[i+1] ;
           y=y-1 ;
         }
         saveFavToCookie() ;
         document.getElementById('myNmmd').style.visibility='visible';
         drawFav() ;
         this.drawFavSavedList() ;
      }
   }


   this.drawFavSavedList= function() {
      if ( readCookie('favslist') ) {
         var hText = '' ;
         hText += '<h3 class=\"topCollapse\">Opgeslagen Favorietenlijst</h3>';
         hText += '<div class=\"ridgeBorder\">&#160;&#160;' ;
         hText += '<a href=\"index.php?page=start&lst=' + readCookie('favslist') + '\" class=\"restoreFav\">' ;
         hText += '&gt;&#160;http://www.nmld.nl/index.php?page=start&lst='+ readCookie('favslist') +'</div>' ;

         var insertSavList = document.createElement('span') ;
         insertSavList.innerHTML= hText ;
         document.getElementById('favsres').innerHTML= '' ;
         document.getElementById('favsres').appendChild(insertSavList) ;
         reWorkLinx() ;
       }
   }


   /*private functions */
   function drawFav() {
      var i = favUrl.length  ;
      var text="" ;
      window.document.getElementById("jHistory").innerHTML = "" ;
      while (i>0 ) {
         if (favUrl[i]) {
            text += "&#160;&#160;<a href='index.php?" + favUrl[i] + "' >&gt; " + favDesc[i]+"<\/a><br/>" ; 
         }
         i = i - 1 ;
      }
      text += '<br/>\n' ;
      var insertFavList = document.createElement('span') ;
      insertFavList.innerHTML= text ;
      document.getElementById("jHistory").appendChild(insertFavList) ;
      reWorkLinx() ;
   }



   function saveFavToCookie() {
      var serData = "" ;
      var i = maxSet ;
      var date = new Date();
      var expires = "" ;
      while ( i>(maxSet-25) ) {
         if (favUrl[i]) {
            serData = serData + favUrl[i].replace("=","_")  + "//" + favDesc[i] + "//"  ; 
         }
         i = i - 1 ;
      }
      createCookie("fav",serData,31) ;
   }

   function getFavFromCookie() {
      var serData = readCookie('fav') ;
      if ( serData ) {
         var serArray = serData.split("//") ;
         var i = 0 ;
         var y = (serArray.length-1)/2 ;
         maxSet= y ;
         for(i=0;i<(serArray.length-1);i=i+2) {
           favUrl[y]=serArray[i].replace("_","=") ;
           favDesc[y]=serArray[i+1] ;
           y=y-1 ;
         }
      }
   }
   function deleteFavFromCookie() {
      eraseCookie('fav') ;
   }

   function getFavsFromCookie() {
      var listNummer = readCookie('favslist') ; 
      setPubFav(listNummer) ;   
   }


}

function showMyNmmd() {
   document.getElementById("myNmmd").style.visibility = 'visible';
}


/*============================================================================*/
/* AJAX answer handlers */


function setPubFav(cleantext) {
   createCookie('favslist',cleantext,40) ;
   favorites.myself.drawFavSavedList() ; 
}


function setFavsListToFavs(cleantext) {
   serList = cleantext ;
   favorites.myself.getFavFromServer() ;
}




