// JavaScript Document

//alle scripts voor de website

///////////////////////////////////////////////////////
////                                               ////
////           doorverwijzen vanuit form           ////
////                                               ////
///////////////////////////////////////////////////////

function verwijzen( object )
{
	window.location = object.options[object.selectedIndex].value;
}

///////////////////////////////////////////////////////
////                                               ////
////        tekens tellen in textarea              ////
////                                               ////
///////////////////////////////////////////////////////


function textarea_tellen( veldnaam, telveld, limiet )
{
	var tekstveld = document.getElementById( veldnaam );
	var aantalTekens = document.getElementById( telveld );

	// indien de element niet bestaan, verlaat de functie
	if ( tekstveld == null || aantalTekens == null )
	{	
		return;
	}
	if ( tekstveld.value.length > limiet )
	{
		tekstveld.value = tekstveld.value.substring( 0, limiet );
	}
	
	// aangezien deze functie sowieso moet uitgevoerd worden mag deze buiten de if staan
	aantalTekens.value = ( parseInt(limiet) - parseInt(tekstveld.value.length) );
}

///////////////////////////////////////////////////////
////                                               ////
////           alle checkboxes selecteren          ////
////                                               ////
///////////////////////////////////////////////////////

function check_alle_checkbox( element ) 
{
	var formulier = element.form;
	 
	for( i = 0; i < formulier.length; i++ )
	{
		if( formulier[i].type == 'checkbox' && formulier[i].name != 'hoofdbox' )
		{
			formulier[i].checked = element.checked;
		}
	}
}

///////////////////////////////////////////////////////
////                                               ////
////        smilie toevoegen aan textarea          ////
////                                               ////
///////////////////////////////////////////////////////

function smilie( veld, smile )
{
	if( document.selection )
  	{
		veld.focus();
		var selection = document.selection.createRange();
		selection.text = smile;
  	}
  	else if( veld.selectionStart || veld.selectionStart == '0' )
  	{
		var startPos = veld.selectionStart;
		var endPos = veld.selectionEnd;
 
		veld.value = veld.value.substring( 0, startPos )
		+ smile + veld.value.substring( endPos, veld.value.length );
  	}
  	else
  	{
		veld.value += smile;
  	}
}

///////////////////////////////////////////////////////
////                                               ////
////        BB-code toevoegen aan textarea         ////
////                                               ////
///////////////////////////////////////////////////////
 
function tag( veld, tag1, tag2 )
{
	//als tag2 niet opgegeven is wil dit zeggen dat ze dezelfde naam hebben
	//bijvoorbeeld [b] en [/b], [url=] en [/url] hebben dan weer niet dezelfde naam
	if( !tag2 )
	{
		tag2 = tag1;
	}
 
	if( document.selection )
	{
		veld.focus();
		var selection = document.selection.createRange();
 
		if( selection.text )
		{	
			selection.text = "["+tag1+"]"+selection.text+"[/"+tag2+"]";
		}
		else
		{
			veld.value += "["+tag1+"][/"+tag2+"]";
		}
	}
	else if( veld.selectionStart || veld.selectionStart == '0' )
	{
		var startPos = veld.selectionStart;
		var endPos = veld.selectionEnd;
 
		if( startPos != endPos )
		{
			veld.value = veld.value.substring( 0, startPos )
			+ "["+tag1+"]"
      			+ veld.value.substring( startPos, endPos )
			+ "[/"+tag2+"]"
			+ veld.value.substring( endPos, veld.value.length );
		}
		else
		{
			veld.value = veld.value.substring( 0, startPos )
			+ "["+tag1+"][/"+tag2+"]"
			+ veld.value.substring( endPos, veld.value.length );
		}
	}
}

///////////////////////////////////////////////////////
////                                               ////
////        Openen en sluiten van berichten        ////
////		in het nieuwsoverzicht				   ////
////                                               ////
///////////////////////////////////////////////////////

function open_bericht( nieuws_ID, nieuws_titel, cat_naam, nieuws_datum, lid_gebruikersnaam, _ROOT_URL_ ) 
{
	document.getElementById( 'nieuwsbericht_' + nieuws_ID ).style.display = "block";
	
	document.getElementById( 'nieuwstitel_' + nieuws_ID ).
	innerHTML = "<table cellspacing=\"0\"><tr><td rowspan=\"2\"><img src=\"" + _ROOT_URL_ + "afbeeldingen/icoon/" + cat_naam + "_logo.png\" alt=\"" + cat_naam + "\" /></td><td><a href=\"javascript:sluit_bericht('" + nieuws_ID + "', '" + nieuws_titel + "', '" + cat_naam + "', '" + nieuws_datum + "', '" + lid_gebruikersnaam + "', '" + _ROOT_URL_ + "');\">" + nieuws_titel + "</a></td></tr><tr><td><span class=\"nieuwsdatum\">ingestuurd door <a href=\"" + _ROOT_URL_ + "leden/profiel.php?naam=" + lid_gebruikersnaam + "\">"  + lid_gebruikersnaam + "</a> op " + nieuws_datum + "</span></td></tr></table>";
	
}

function sluit_bericht( nieuws_ID, nieuws_titel, cat_naam, nieuws_datum, lid_gebruikersnaam, _ROOT_URL_ ) 
{
	document.getElementById( 'nieuwsbericht_' + nieuws_ID ).style.display = "none";
	
	document.getElementById( 'nieuwstitel_' + nieuws_ID ).
	innerHTML = "<table cellspacing=\"0\"><tr><td rowspan=\"2\"><img src=\"" + _ROOT_URL_ + "afbeeldingen/icoon/" + cat_naam + "_logo.png\" alt=\"" + cat_naam + "\" /></td><td><a href=\"javascript:open_bericht('" + nieuws_ID + "', '" + nieuws_titel + "', '" + cat_naam + "', '" + nieuws_datum + "', '" + lid_gebruikersnaam + "', '" + _ROOT_URL_ + "');\">" + nieuws_titel + "</a></td></tr><tr><td><span class=\"nieuwsdatum\">ingestuurd door <a href=\"" + _ROOT_URL_ + "leden/profiel.php?naam=" + lid_gebruikersnaam + "\">"  + lid_gebruikersnaam + "</a> op " + nieuws_datum + "</span></td></tr></table>";
	
}

///////////////////////////////////////////////////////
////                                               ////
////                Het ratesysteem                ////
////                                               ////
///////////////////////////////////////////////////////

function overStar( ster_ID )
{
	var ster_positie = ster_ID.charAt(4);
	for( var i = 1; i <= 10 ; i++ )
	{
		if( i <= ster_positie ) document.getElementById('rate'+i).src='../afbeeldingen/icoon/ster.png';
		if( i > ster_positie ) document.getElementById('rate'+i).src='../afbeeldingen/icoon/ster_wit.png';
	}
}

/******************************
//***						***
//***  TITEL WEERGEVEN      ***
//***						***
//****************************/

addEvent(window, "load", makeNiceTitles);

var XHTMLNS = "http://www.w3.org/1999/xhtml";
var CURRENT_NICE_TITLE;
var browser = new Browser();

function makeNiceTitles() {
    if (!document.createElement || !document.getElementsByTagName) return;
    // add namespace methods to HTML DOM; this makes the script work in both
    // HTML and XML contexts.
    if(!document.createElementNS)
    {
        document.createElementNS = function(ns,elt) {
            return document.createElement(elt);
        }
    }

    if( !document.links )
    {
        document.links = document.getElementsByTagName("a");
    }
    for (var ti=0;ti<document.links.length;ti++) {
        var lnk = document.links[ti];
        if (lnk.title) {
            lnk.setAttribute("nicetitle",lnk.title);
            lnk.removeAttribute("title");
            addEvent(lnk,"mouseover",showNiceTitle);
            addEvent(lnk,"mouseout",hideNiceTitle);
            addEvent(lnk,"focus",showNiceTitle);
            addEvent(lnk,"blur",hideNiceTitle);
        }
    }
    var instags = document.getElementsByTagName("ins");
    if (instags) {
    for (var ti=0;ti<instags.length;ti++) {
        var instag = instags[ti];
        if (instag.dateTime) {
            var strDate = instag.dateTime;
            var dtIns = new Date(strDate.substring(0,4),parseInt(strDate.substring(4,6)-1),strDate.substring(6,8),strDate.substring(9,11),strDate.substring(11,13),strDate.substring(13,15));
            instag.setAttribute("nicetitle","Added on "+dtIns.toString());
            addEvent(instag,"mouseover",showNiceTitle);
            addEvent(instag,"mouseout",hideNiceTitle);
            addEvent(instag,"focus",showNiceTitle);
            addEvent(instag,"blur",hideNiceTitle);
        }
    }
    }
}

function findPosition( oLink ) {
  if( oLink.offsetParent ) {
    for( var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent ) {
      posX += oLink.offsetLeft;
      posY += oLink.offsetTop;
    }
    return [ posX, posY ];
  } else {
    return [ oLink.x, oLink.y ];
  }
}

function showNiceTitle(e) {
    if (CURRENT_NICE_TITLE) hideNiceTitle(CURRENT_NICE_TITLE);
    if (!document.getElementsByTagName) return;
    if (window.event && window.event.srcElement) {
        lnk = window.event.srcElement
    } else if (e && e.target) {
        lnk = e.target
    }
    if (!lnk) return;
    if (lnk.nodeName.toUpperCase() != 'A') {
        // lnk is not actually the link -- ascend parents until we hit a link
        lnk = getParent(lnk,"A");
    }
    if (!lnk) return;
    nicetitle = lnk.getAttribute("nicetitle");
    
    var d = document.createElementNS(XHTMLNS,"div");
    d.className = "nicetitle";
    tnt = document.createTextNode(nicetitle);
    pat = document.createElementNS(XHTMLNS,"p");
    pat.className = "titletext";
    pat.appendChild(tnt);
    d.appendChild(pat);
    if (lnk.href) {
        //tnd = document.createTextNode(lnk.href);
        pad = document.createElementNS(XHTMLNS,"p");
        pad.className = "destination";
        //pad.appendChild(tnd);
        d.appendChild(pad);
    }
    
    STD_WIDTH = 100;
    if (lnk.href) {
        h = lnk.href.length;
    } else { h = nicetitle.length; }
    if (nicetitle.length) {
      t = nicetitle.length;
    }
    h_pixels = 2; t_pixels = 2;
    
    if (h_pixels > STD_WIDTH) {
        w = h_pixels;
    } else if ((STD_WIDTH>t_pixels) && (t_pixels>h_pixels)) {
        w = t_pixels;
    } else if ((STD_WIDTH>t_pixels) && (h_pixels>t_pixels)) {
        w = h_pixels;
    } else {
        w = STD_WIDTH;
    }
        
    d.style.width = w + 'px';    

    /*
    mx = lnk.offsetLeft;
    my = lnk.offsetTop;
    */
    mpos = findPosition(lnk);
    mx = mpos[0];
    my = mpos[1];
    //xy = getMousePosition(e);
    //mx = xy[0]; my = xy[1];
    
    d.style.left = (mx+15) + 'px';
    d.style.top = (my+35) + 'px';
    if (window.innerWidth && ((mx+w) > window.innerWidth)) {
        d.style.left = (window.innerWidth - w - 25) + "px";
    }
    if (document.body.scrollWidth && ((mx+w) > document.body.scrollWidth)) {
        d.style.left = (document.body.scrollWidth - w - 25) + "px";
    }
    
    document.getElementsByTagName("body")[0].appendChild(d);
    
    CURRENT_NICE_TITLE = d;
}

function hideNiceTitle(e) {
    if (!document.getElementsByTagName) return;
    if (CURRENT_NICE_TITLE) {
        document.getElementsByTagName("body")[0].removeChild(CURRENT_NICE_TITLE);
        CURRENT_NICE_TITLE = null;
    }
}

// Add an eventListener to browsers that can do it somehow.
// Originally by the amazing Scott Andrew.
function addEvent(obj, evType, fn){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
  } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
	return false;
  }
}

function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return getParent(el.parentNode, pTagName);
}

function getMousePosition(event) {
  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }
  return [x,y];
}

// Determine browser and version.

function Browser() {
// blah, browser detect, but mouse-position stuff doesn't work any other way
  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}



