Array.prototype.in_array = function( what ) {
  for (var i=0; i < this.length; i++) {
    if( this[i] == what ) {
      return i;
    } else {
      if( this[i] instanceof Array )
        return this[i].in_array( what );
    }
  }
  return -1;
}

Array.prototype.unique = function( ) {
  var arr = new Array();
  for (var i=0; i < this.length; i++) {
    if (arr.in_array(this[i]) == -1)
      arr.push(this[i]);
  }
  return arr;
}

function filterChars(str) {
  fromchars = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ;, ';

  tochars   = 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn___'; // do translation

  result  = '';
  achar    = '';

  while( str.length > 0 ) {
    achar = str.substr(0,1);
    str  = str.substr(1);

    if( fromchars.indexOf( achar ) != -1 ) {
      achar = tochars.substr( fromchars.indexOf( achar ), 1 );
    }
    result += achar;
  }
  return result;
}

function getCurrentProjectnumber() {
  var url = location.href;
  var filename = unescape(url.substr(url.lastIndexOf('/')+1, url.lastIndexOf('.') - url.lastIndexOf('/') -1));
  return filename;
}

function trim(str) {
  return str.replace(/^\s*|\s*$/g,"");
}

function getCurrentProject() {
  var projectnumber = getCurrentProjectnumber();
  for (var i=0; i < projects.length; i++) {
    if (trim(projects[i].projectnumber) == projectnumber)
      return projects[i];
  }
  return -1;
}

function getCurrentDirectory() {
  var url = location.href;
  var path = '';

  for (var i=0; i < url.length; i++) {
    if (-1 != url.indexOf('/')) {
      path = url.substr(0, url.indexOf('/'));
      url = url.substr(url.indexOf('/')+1, url.length);
      dir = path;
    }
  }
  return dir;
}

function getProjectsByTheme() {
  var curProject = getCurrentProject();
  if (-1 == curProject)
    return -1;

  var newList = new Array();
  for (var i=0; i < projects.length; i++) {
    if (getLargestTheme(projects[i].theme).toLowerCase() == getLargestTheme(curProject.theme).toLowerCase() && projects[i].projectnumber != curProject.projectnumber)
      newList.push(projects[i]);
  }
  return newList;
}

function getProjectsByCountry() {
  var curProject = getCurrentProject();
  if (-1 == curProject)
    return -1;

  var newList = new Array();
  for (var i=0; i < projects.length; i++) {
    if (projects[i].country.toLowerCase() == curProject.country.toLowerCase() && projects[i].projectnumber != curProject.projectnumber)
      newList.push(projects[i]);
  }
  return newList;
}

function getCurrentProjectType() {
  var dir = getCurrentDirectory();

  if (-1 != dir.indexOf('continenten'))
    return 'country';
  if (-1 != dir.indexOf('themas'))
    return 'theme';
}

function getPartnerorg(id) {
  for (var i=0; i < projects.length; i++) {
    if (projects[i].projectnumber == id)
      return projects[i].partner;
  }
  return '';
}

function getPartnerURL(partner) {
  switch(partner.toLowerCase()) {
    case 'edukans': return 'www.edukans.nl'; break;
    case 'ics': return 'www.icsfonds.nl'; break;
    case 'kerkinactie': return 'www.kerkinactie.nl'; break;
    case 'prisma': return 'www.prismaweb.org'; break;
    case 'wilde ganzen': return 'www.wildeganzen.nl'; break;
    case 'zzg': return 'www.zzg.nl'; break;
  }
  return '';
}

function getLargestTheme(themes) {
  var arrThemes = themes.split('|');
  if ('' != arrThemes[0])
    return arrThemes[0];
  else
    return arrThemes[1];
}

function showLinkedContent() {
  var curElement = document.getElementById('rightbar_top');

  var currentProject = getCurrentProject();
  if ( -1 != currentProject) {
    var projectType = getCurrentProjectType();

    if ('theme' == projectType)
      projectList = getProjectsByTheme();
    else
      projectList = getProjectsByCountry();

    if (projectList != -1 && projectList.length > 0) {
      var ref = document.createElement('H3');
      curElement.appendChild(ref);
  
      var list = document.createElement("ul");
  
      if ('theme' == projectType)
        ref.innerHTML = 'Projecten met thema ' + getLargestTheme(currentProject.theme);
      else
        ref.innerHTML = 'Projecten in ' + currentProject.country;

      var selectedProjects = new Array();

      if (projectList.length > 5) {
        while (selectedProjects.length < 5) {
          //select 5 random projects
          var rnd = Math.floor(projectList.length * Math.random())

          if (-1 == selectedProjects.in_array(rnd))
            selectedProjects.push(rnd);
        }
      } else {
        for (var i=0; i < projectList.length; i++)
          selectedProjects.push(i);
      }

      if (projectList.length > 5 && projectList.length < 7)
        numProjects = projectList.length - 1; //count - this project
      else
        numProjects = projectList.length > 5 ? 5 : projectList.length;

      for (var i=0; i < numProjects; i++) {
        var ref = document.createElement('A');
        ref.innerHTML = projectList[selectedProjects[i]].name;
        ref.title = projectList[selectedProjects[i]].description;
        ref.href = projectList[selectedProjects[i]].projectnumber + '.html';
    
      	var newNode = document.createElement("li");
      	newNode.appendChild(ref);
      	list.appendChild(newNode);
      }
      if (projectList.length > 7) {
        var ref = document.createElement('A');
        ref.innerHTML = 'Meer projecten ('+(projectList.length)+')';
        if ('theme' == projectType) {
          ref.href = '../themas/';

          switch(getLargestTheme(currentProject.theme)) {
            case 'Economische Ontwikkeling' : ref.href += 'Duurzame_Rechtvaardige_en_Economische_Ontwikkeling.html'; break;
            case 'Democratisering & Vredesopbouw' : ref.href += 'Democratisering__Vredesopbouw.html'; break;
            case 'Toegang tot basisvoorzieningen' : ref.href += 'Toegang_tot_basisvoorzieningen.html'; break;
            default: ref.href += '../algemeen/themas.html';
          }
        } else
          ref.href = '../continenten_landen/' + filterChars(currentProject.continent) + '_' + filterChars(currentProject.country + '.html');
    
      	var newNode = document.createElement("li");
      	newNode.appendChild(ref);
      	list.appendChild(newNode);
      }
      curElement.appendChild(list);
    }
  }

  var ref = document.createElement('H3');
  ref.innerHTML = 'Online';
  curElement.appendChild(ref);

  var list = document.createElement("ul");
  list.className = "online";

  if (-1 != currentProject && 'partner in nl' == currentProject.initiative.toLowerCase()) {
    var partner = getPartnerorg(currentProject.projectnumber);
    var partnerURL = getPartnerURL(partner);
    if ('' != partnerURL) {
      var ref = document.createElement('A');
      ref.href = 'http://www.icco.nl/redir/pb2005/url/'+partnerURL+'/web';
      ref.target = '_blank';
      ref.innerHTML = partner;
      ref.title = partnerURL;
  
    	var newNode = document.createElement("li");
    	newNode.appendChild(ref);
    	list.appendChild(newNode);
    }
  }

  var ref = document.createElement('A');
  ref.href = 'http://www.icco.nl/redir/pb2005/projecten/web';
  ref.innerHTML = 'Projecten in beeld';
  ref.target = '_blank';
	var newNode = document.createElement("li");
	newNode.appendChild(ref);
	list.appendChild(newNode);
  curElement.appendChild(list);

  var ref = document.createElement('A');
  ref.href = 'http://www.icco.nl/redir/pb2005/icco/web';
  ref.innerHTML = 'www.icco.nl';
  ref.target = '_blank';
 	var newNode = document.createElement("li");
 	newNode.appendChild(ref);
 	list.appendChild(newNode);
  curElement.appendChild(list);

  document.getElementById('rightbar').style.display = 'block';
}

addEvent(window, 'load', showLinkedContent);

