function doCarrousel()
{
	var hook = document.getElementById('CarrouselHook');
	hook.appendChild(hook.getElementsByTagName('DT')[0]);
}
function startCarrousel()
{
	setInterval('doCarrousel()',3000);
}

function isEmail(elID)
{
    var val = document.getElementById(elID).value;
    var emailregex = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/; /* Email adres */
    return emailregex.test(val);
}

function checkVoorinschrijving(elID)
{
    if(!isEmail(elID))
    {
        alert('Vul alstublieft een geldig emailadres in.');
        document.getElementById(elID).select();
        return false;
    }
    return true;
}

function isDefaultOption(elID)
{
    // used for checking OPTION values
    // 1st option value is usually explanatory text with a value of 'null'
    var el = document.getElementById(elID);
    return ('null' == el.options[el.selectedIndex].value) ? true : false;
}

function isMD5(elID)
{
	var val = document.getElementById(elID).value;
	var md5regex	=	/^[a-z0-9]+$/;
	return md5regex.test(val);
}

function checkConfirm()
{
	var email	=	document.getElementById('email').value;
	var code	=	document.getElementById('code').value;
	if(!isEmail('email'))
	{
		alert('Vul alstublieft een geldig email adres in.');
		return false;
	}

	if(!isMD5('code'))
	{
		alert('Vul alstublieft de bevestigingscode in.');
		return true;
	}
	return true;
}

function checkParticipantForm()
{
    var code    = document.getElementById('code').value;
    var re      = /^[0-9a-z]{8}$/;
    if(!code.match(re))
    {
        alert('Vul de juiste code in.');
        return false;
    }
    return true;
}

/* links to new window */
function replacelinks()
{
    var hostname    = 'http://' + location.hostname + '/';
    var links       = document.getElementsByTagName('a');

    for(i=0;i<links.length;i++)
    {
        if(links[i].href.substr(0,(hostname.length)) != hostname && links[i].href.substr(0,1) != '#')
        {
            links[i].target = '_blank';
        }
    }
}

function checkVote(f)
{
    // test if any of the radio buttons in the form are checked
    var radios      =   f.getElementsByTagName('input');
    var isChecked   =   false;
    for(var i =0, j = radios.length ; i < j; i++)
    {
        var r = radios[i];
        if(r.checked)
        {
            isChecked   =   true;
            break;
        }
    }

    if(!isChecked)
    {
        alert('Kies tenminste een van de kandidaten waarop u uw stem wilt uitbrengen\nDank u voor uw medewerking.');
        return false;
    }
    // check for valid email address
    var email   =   document.getElementById('email');
    if(!isEmail('email'))
    {
        alert('Vul alstublieft een geldig emailadres in.\nDank u voor uw medewerking.');
        email.focus();
        return false;
    }

    return true;
}

function highlight(element,cssClass)
{
    var className = cssClass || 'hover';
    addClass(element,className);
    return true;
}
function lowlight(element,cssClass)
{
    var className = cssClass || 'hover';
    removeClass(element,className);
    return true;
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
	if (!hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
    	var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}


function AwardGroup(award_id)
{
    this.award_id   =   award_id;
    this.fieldset   =   document.getElementById('awardgroup_' + this.award_id);
    this.elements   =   this.fieldset.getElementsByTagName('label');
    this.candidate_id = null;
    this.current    =   null;
    this.cssSelectedClass   =   'selected';
    this.setup();
    return this;
}
AwardGroup.prototype = {
    setup:function()
    {
        //set up event handlers
        var me = this;
        for(var i = 0, j = this.elements.length ; i < j ; i++) {
            var specs   = this.analyze(this.elements[i]);
            var award_id        = specs[1];
            var candidate_id    = specs[2];
            var clicker = function() {
                var my_award_id     =   award_id;
                var my_candidate_id =   candidate_id;
                me.update(this, award_id,candidate_id);
            }
            this.elements[i].onclick    =   clicker;
        }
    },
    update : function(el, award_id,candidate_id)
    {
        var specs = this.analyze(el);
        this.award_id       = specs[1];
        this.candidate_id   = specs[2];
        this.current        = el;
        this.radioHighlight();
        this.updateChoice();
    },
    analyze : function(el)
    {
         return el.getAttribute('id').match(/^candidate([0-9]+)_([0-9]+)_label$/);
    },
    radioHighlight : function()
    {
        for(var i = 0, j = this.elements.length ; i < j ; i++) {
            removeClass(this.elements[i], this.cssSelectedClass);
        }
        addClass(this.current, this.cssSelectedClass);
    },
    updateChoice : function()
    {
        var choiceElement = document.getElementById('choice_' + this.award_id);
        var awardNameId =   'candidate' + this.award_id + '_' + this.candidate_id + '_name';
        var name = document.getElementById(awardNameId);
        choiceElement.innerHTML = name.innerHTML;
    }
}