/*==============================================================================
AJAX and global generic functions
(c) 2007 Allard Rogier van Ravestijn
www.nmld.nl
==============================================================================*/

 

var thisPage = false ;
var accelNmmd = false ;



/*============================================================================*/
/* layout JS and centralizer */


function resize_view() {  
   var nmmdHeight = window.document.documentElement.clientHeight  ;  
   if ( nmmdHeight == 0) nmmdHeight= window.innerHeight  ;  
   /*For opera, clientheight seems to be set at the size of the first body-child..*/
   if ( nmmdHeight < window.innerHeight) nmmdHeight= window.innerHeight  ; 
   window.document.getElementById("menu").style.height =   (nmmdHeight-80) +'px' ;
   window.document.getElementById("content").style.height =   (nmmdHeight-80) +'px'; 
   window.document.getElementById("nmmd").style.height =   (nmmdHeight-20) +'px'; 
   document.getElementById('prepage').style.visibility='hidden';
}  



/*============================================================================*/
/* image preloader and functions */

var imgPlus = new Image ;
imgPlus.src = "sitepix/plus.gif" ;
var imgMin = new Image ;
imgMin.src = "sitepix/min.gif" ; 

function closeAllMenuBut(exept) {
   var number= exept.replace("menu","") ;
   for(var i=0;i<6;i++) {
      if ( i != number ) {
         document.getElementById("min"+ i).src = "sitepix/plus.gif" ;
         document.getElementById("menu"+ i).style.display = "none" ;
         document.getElementById("mh" + i).style.fontSize = "12px";
      } else {
         document.getElementById("min"+ i).src = "sitepix/min.gif" ;
         document.getElementById("menu"+ i).style.display = "" ;
         document.getElementById("mh" + i).style.fontSize = "10px";

      }
   } 
}

/*============================================================================*/
/* link dresser */


function reWorkLinx() {
   var linxs = document.getElementsByTagName('a') ;
   var compText= '' ;
   var thisHost = location.href.replace('http://','').split('/')[0] ;
   for (var q=0; q<linxs.length; q++ ) {
      /* Main logic: if the name of the host is in 
      the link, link can be considered internal */
      if ( linxs[q].href.indexOf('http://'+ thisHost) == 0  ) {
         linxs[q].marker  = 'intLink' ;
         /* Although some exceptions occur to this rule....internal links //can// do more.. */
         if ( linxs[q].href.indexOf('index.php?page=') == -1  ) linxs[q].marker  = 'otherLink' ;      
         if ( linxs[q].href.indexOf('#') > -1  ) linxs[q].marker = 'skipLink' ;
         if ( linxs[q].href.indexOf('print.php?page=') > -1  ) linxs[q].marker = 'modeLink' ; 
      } else {
         linxs[q].marker  = 'extLink' ; 
         if ( linxs[q].href.indexOf('javascript:') > -1  ) linxs[q].marker = 'jsLink' ;
      }         
      if ( !linxs[q].href ) linxs[q].marker = 'noLink' ;
      if ( linxs[q].className == 'nodress' ) linxs[q].marker = 'modeLink' ;
      if ( (linxs[q].marker == 'extLink') && !(linxs[q].done == true) ) {
         linxs[q].done = true  ;
         /* External link dressing*/
         if ( linxs[q].title.length > 2 ) {
            compText = "Externe link: " + linxs[q].title + ", opent in nieuw venster." ;
         } else {
            compText = "Externe link, opent in nieuw venster." ;
         }
         var linkText = document.createElement('span') ;
         linkText.innerHTML= linxs[q].innerHTML + "<img src=\"sitepix/extlink.gif\" title=\"" + compText + "\">&#160;" ;
         linxs[q].innerHTML= '' ;
         linxs[q].appendChild(linkText) ;
         linxs[q].title = compText ;
      }
   } 
}




/*============================================================================*/
/* menu controls */

function toggleMenu(e) {
   if (!e) {
      e=window.event ;
      var caller=e.srcElement.id ;
   } else {
      var caller=e.target.id
   }
   var i= caller.replace("mh","") ;
   if ( document.getElementById("menu"+ i).style.display == "" ) {
      document.getElementById("min"+ i).src = "sitepix/plus.gif" ; 
      document.getElementById("menu"+ i).style.display = "none" ;
      document.getElementById("mh" + i).style.fontSize = "12px";
   } else {
      document.getElementById("min"+ i).src = "sitepix/min.gif" ;
      document.getElementById("menu"+ i).style.display = "" ;
      document.getElementById("mh" + i).style.fontSize = "10px";
   }
}

function initMenu() {
   for(var i=0;i<6;i++) {
     document.getElementById('mh'+i).onclick = toggleMenu ;
   } 

}

/*============================================================================*/
/* Linkcatcher function */


function refresh(e) {
   var link ;
   var args ;
   var caller ;
   if (!e) { 
      /*check parentnode first (clickable images)*/ 
      if (window.event.srcElement.parentNode.href) {
         caller = window.event.srcElement.parentNode ;
      } else {
         /*Check calling node (normal situation)*/ 
         if (window.event.srcElement.href) {
            caller = window.event.srcElement
         } else {
          if (window.event.srcElement.type == 'submit') {
                /*we just catched the searchfunction.....*/
                caller = window.event.srcElement
              } else {
                /*we clicked something else, probably not a link.*/
                return true ;
             }
         }
      } 
   } else { 
      /*check parentnode first (clickable images) */ 
      if (e.target.parentNode.href) {
         caller = e.target.parentNode ;
      } else {    
          /*Check calling node (normal situation) */ 
          if (e.target.href) {
             caller = e.target
          } else {
             if (e.target.type == 'submit') {
                /*we just catched the searchfunction.....*/
                caller = e.target
             } else {
                /*we clicked something else, probably not a link.*/
                return true ;
             }
          } 
       }
   } 
   if ( caller.type=='submit') {
      /* recreate link from formvariables */
      link  = 'index.php?page=results' ;
      link += '&st1='+caller.form.st1.options[caller.form.st1.selectedIndex].text ;
      link += '&st2='+caller.form.st2.value ;
      link += '&st3='+caller.form.st3.value ;
      link += '&st4='+caller.form.st4.value ;
      link += '&st14='+caller.form.st14.value ;
      link += '&st5='+caller.form.st5.value ;
      link += '&st6a='+caller.form.st6a.value ;
      link += '&st6b='+caller.form.st6b.value ;
      link += '&st7='+caller.form.st7.value ;
      link += '&st8='+caller.form.st8.value ;
      link += '&st13='+caller.form.st13.value ;
      link += '&st9a='+caller.form.st9a.value ;
      link += '&st9b='+caller.form.st9b.value ;
      link += '&st10='+caller.form.st10.value ;
      link += '&st12='+caller.form.st12.value ;
      caller.marker = 'intLink';
   } else {
      link = caller.href ;
   }
   /* Open external links in new Window, linkdresser has taken care of warning */ 
   if ( (caller.marker == 'extLink') || (caller.marker == 'modeLink') ) {
       var dstr = new Date() ;
       var newWin = window.open(link,'nmmdwin'+dstr.getSeconds(),'')  ;
       return false ;
   }

   /*if AJAX not wished, byebye ! */
   if (! accelNmmd ) return true ;

   /* for some stupid reason JS doent know jack-shit difference between SRC an HREF  
   So we must detect images by tagname*/
   if ( (caller.tagName == 'IMG') ) return true ;

   /* Check for non AJAXABLE internal link (might be JS or skiplink or empty link) */
   if ( caller.marker != 'intLink' ) {
      return true ;
   } else {
      args = link.split('?');
   } 

   if (!args[1]) return true;
   thisPage = args[1] ;

   if ( caller.className == 'restoreFav' ) {
      /*We only update favlist*/
      var req3= new HtmlAsyncReq('GET') ;
      req3.setData('dfeed.php?'+ args[1]) ;
      req3.setOnReady('setFavsListToFavs') ;
      req3.runReq() ;
   } else {
      /* Do the request, update content */
      document.getElementById('prepage').style.visibility='' ;
      var req1= new HtmlAsyncReq('GET') ;
      req1.setData('afeed.php?'+ args[1]) ;
      req1.setOnReady('setContent') ;
      req1.runReq() ;
      /*update icons*/
      var req2= new HtmlAsyncReq('GET') ;
      req2.setData('bfeed.php?'+ args[1]) ;
      req2.setOnReady('setIcons') ;
      req2.runReq() ;
   }
   return false ;
}

/*============================================================================*/
/* Ajax answer handlers */



function setIcons(cleantext) {
   cleantext = cleantext.replace('<div class="icons" id="icons">','');
   cleantext = cleantext.replace('<\/div    >','');
   window.document.getElementById("icons").innerHTML=cleantext;
   reWorkLinx() ;
   if (favorites.myself ) favorites.myself.makePermaLink() ;
}

function setContent(cleantext) {
   cleantext = cleantext.replace('<div class="content" id="content">','');
   cleantext = cleantext.replace('<\/div    >','');
   window.document.getElementById("content").innerHTML=cleantext ;
   if ( extDataObj.myself ) extDataObj.myself.init() ;
   document.getElementById('prepage').style.visibility='hidden' ;
   reWorkLinx() ;
   if (favorites.myself ) favorites.myself.makePermaLink() ;
} 

/*============================================================================*/
/* Event abstraction */



/*============================================================================*/
/* Ajax core object */

function HtmlAsyncReq(typ) {
   var cleantext = null ;
   var type = typ ;
   var xmlHttpObj = null ;
   var remoteScript = '' ;
   try {  
      /*Firefox, Opera 8.0+, Safari*/
      xmlHttpObj=new XMLHttpRequest();  
   }  
   catch (e) {  
      /*Internet Explorer */
      try {  
         xmlHttpObj=new ActiveXObject("Msxml2.XMLHTTP");  
      }  
      catch (e) {  
         try  { 
      xmlHttpObj=new ActiveXObject("Microsoft.XMLHTTP");  
         }  
         catch (e) {  
               return false;
         }  
      }  
   }
   this.setData = function(rs) {
      remoteScript = rs ;
   } ;
   this.setOnReady = function(funct) {
      xmlHttpObj.onreadystatechange=function() {
         if(xmlHttpObj.readyState==4){
           eval(funct +'(xmlHttpObj.responseText);') ;
         }
      } ; 
   } ;
   this.runReq = function() {
      if ( ! remoteScript ) return false ; 
      if ( ! xmlHttpObj ) return false ;
      xmlHttpObj.open(type,remoteScript,true);
      xmlHttpObj.send(null);
   } ;
}
 

 
/*============================================================================*/
/* Generic functions */

function createCookie(name,value,days) {
   if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = "; expires="+date.toGMTString();
   }
   else var expires = "";
   document.cookie = name+"="+value+expires+"; path=/";
}


function readCookie(name) {
   var nameEQ = name + "=";
   var ca = document.cookie.split(';');
   for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
   }
   return null;
}


function eraseCookie(name) {
   createCookie(name,"",-1);
}




 
/*============================================================================*/
/* event linker */


document.onclick = refresh ; 
window.onresize=resize_view ; 
window.onload=resize_view ;


