String.prototype.endsWith = function(str)
{return (this.match(str+"$")==str)}

String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}

/*
String.prototype.trim = function(){return
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))}
*/

// external popup links
$(document).ready(function() {
	
	//player links in een popup
	$("a[href^='http://player.omroep.nl']").attr('class','playerpopup');
	
	//rel=external link in een nieuw venster openen
	$("a[rel=external]").each(function(i){this.target="_blank";});
	$(".menu_external a").each(function(i){this.target="_blank";});
	
	//definitie popupwindow
	$('.popupwindow').popupWindow({ 
		height:500, 
		width:800, 
		top:50, 
		left:50 
	}); 
	
	//definitie popup Uitzending Gemist player
	$('.playerpopup').popupWindow({ 
		height:690, 
		width:960, 
		top:50, 
		left:50 
	}); 

}); 

/* Attaches click events to a 'faq' */
function initFAQ() {
    var faqs = getElementsByClassName('faq', 'dl');
    if (faqs.length < 0) return;
    for (var i = 0; i < faqs.length; i++) {
        var dts = faqs[i].getElementsByTagName('dt');
        var dds = faqs[i].getElementsByTagName('dd');
        for (var j = 0; j < dts.length; j++) {
            dts[j].className += " closed";
            if (dts[j].addEventListener) {
                dts[j].addEventListener('click', function(event){toggleFAQ(event);}, false);
            } else if (dts[j].attachEvent) {
                dts[j].attachEvent('onclick', function(event){toggleFAQ(event);});
            }
        }
        for (var j = 0; j < dds.length; j++) {
            dds[j].className = "closed";
        }
    }
}

/*
 * More or less like getElementsById but for classes
 * @param classN    name of class to look for
 * @param el        element in which classes appear
*/
function getElementsByClassName(classN, el) {
    var childs, elements = [];
    var childs = el ? document.getElementsByTagName(el) : document.getElementsByTagName('*');
    var pattern = new RegExp("(^|\\s)" + classN + "(\\s|$)");
    for (var i = 0; i < childs.length; i++) {
        if (pattern.test(childs[i].className)) elements.push(childs[i]);
    }
    return elements;
}

function goBack() {
	history.go(-1);
}

/* Finds the crossbrowser HTMLElement that recieves an event */
function findElement(ev) {
    return ev.srcElement || ev.target;
}

/* The cursor position based on an event */
function cursorPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } else {    // MSIE
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

/* The absolute position of an element */
function elPosition(obj) {
    var elpos = {x:0, y:0};
    if (obj.offsetParent) {
        elpos.x = obj.offsetLeft;
        elpos.y = obj.offsetTop;
        while (obj = obj.offsetParent) {
            elpos.x += obj.offsetLeft;
            elpos.y += obj.offsetTop;
        }
    }
    return elpos;
}

/* Toggle a div's visibility */
function hide(targetId){
  if (document.getElementById){
    target = document.getElementById(targetId);
    target.style.display = "none";
  }
}

/* Toggle a div's visibility */
function setClass(targetId,className){
  if (document.getElementById){
    target = document.getElementById(targetId);
    target.className = className;
  }
}

/* Toggle a div's visibility */
function show(targetId){
  if (document.getElementById){
    target = document.getElementById(targetId);
    target.style.display = "block";
  }
}

/* Toggle a div's visibility */
function toggle(targetId){
  if (document.getElementById){
    target = document.getElementById(targetId);
    if (target.style.display == "none"){
      target.style.display = "";
    } else {
      target.style.display = "none";
    }
  }
}

/*
 * Displays or hides the 'dd' based on a click event on its upper 'dt'.
 * The classname of the 'dt' corresponds with the id of the 'dd' to open.
 * @param ev onclick event on the 'dt' with a certain class
 */
function toggleFAQ(ev) {
    var dtEl = findElement(ev);
    var classname = dtEl.className;
    var vrg = classname.substring(classname.indexOf('vrg'), classname.indexOf(" "));
    if (!vrg) classname.substring(classname.indexOf('vrg'), classname.length);
    var dlEl = document.getElementById(vrg);    // the dl element to open or close

    if (classname) {
        if (dlEl.className.indexOf('closed') > -1) {
            classname = classname.replace('closed', 'open');
            dtEl.className = classname;
            dlEl.className = "open";
        } else {
            classname = classname.replace('open', 'closed');
            dtEl.className = classname;
            dlEl.className = "closed";
        }
    }
    return false;
}



