/*
Description			:	validate an edit field
Input parameters	:
	szfield		: javascript form field, field to be checked
	fieldname	: string, field name
	emptyallowed: boolean, true indicates empty value allowed.
Return value		:
	true : ok
	false : failed
*/
function validateEditfield(szfield, message, emptyallowed)
{
	
	if (szfield.value == "" && !emptyallowed)
	{
		alert(message);
		szfield.focus();
		szfield.style.borderColor="#FF0000";
		return false;
	}
	else
	{
	    var error = false;
        var illegal = " ";
        //if(szfield.value.indexOf(",")!=-1) error = true;
        //if(szfield.value.indexOf(":")!=-1) error = true;
        //if(szfield.value.indexOf("!")!=-1) error = true;
        if(szfield.value.indexOf("#")!=-1) illegal += "#" , error = true;
        if(szfield.value.indexOf("$")!=-1) illegal += "$" , error = true;
        //if(szfield.value.indexOf("%")!=-1) illegal += "%" , error = true;
        if(szfield.value.indexOf("^")!=-1) illegal += "^" , error = true;
        if(szfield.value.indexOf("&")!=-1) illegal += "&" , error = true;
        //if(szfield.value.indexOf("*")!=-1) error = true;
        //if(szfield.value.indexOf("(")!=-1) error = true;
        //if(szfield.value.indexOf(")")!=-1) error = true;
        if(szfield.value.indexOf("<")!=-1) illegal += "<" , error = true;
        if(szfield.value.indexOf(">")!=-1) illegal += ">" , error = true;
        if(szfield.value.indexOf("/")!=-1) illegal += "/" , error = true;
        //if(szfield.value.indexOf("'")!=-1) error = true;
        if(szfield.value.indexOf("\\")!=-1) error = true;
        //if(szfield.value.indexOf(";")!=-1) error = true;
        //if(szfield.value.indexOf("+")!=-1) error = true;
        //if(szfield.value.indexOf("=")!=-1) error = true;
        if(szfield.value.indexOf("{")!=-1) illegal += "{" , error = true;
        if(szfield.value.indexOf("}")!=-1) illegal += "}" , error = true;
        if(szfield.value.indexOf("[")!=-1) illegal += "[" , error = true;
        if(szfield.value.indexOf("]")!=-1) illegal += "]" , error = true;
      
        if(error)
		{
            var chars = "";
            chars = chars + illegal;
            message = "Ongeldig(e) teken(s) gevonden: \n" + chars + "\n Gelieve deze niet te gebruiken.";
            alert(message);
			szfield.style.borderColor="#FF0000";
            szfield.focus();
            return false;
        }
	}

	return true;
}

function textCounter(field, countfield, maxlimit) {
    if (field.value.length > maxlimit) {
        field.value = field.value.substring(0, maxlimit);
    } else { 
        countfield.value = maxlimit - field.value.length;
    }
}

function unmask_email(name,domain,subject) {
    document.location.href = "mailto:"+name+"@"+domain+"?subject="+subject;
}

/* inclusive length check */
function checkLength(element, minLen, maxLen) {
	if(element.length <= maxLen && element.length >= minLen) {
		return true;
	} else {
		return false;
	}
}


/* 
* compares the pwds inserted at the settings page
*/
function checkFieldsEqual(form){
	if(!checkLength(form.password.value,6,16)) {
		alert("Wachtwoord heeft een onjuiste lengte. Een wachtwoord moet uit minimaal 6 en maximaal 16 cijfers en/of letters bestaan");
		return false;
	} else if (form.password.value != form.password2.value){
		alert("Wachtwoorden zijn niet gelijk. Waarschijnlijk heb je een tikfoutje gemaakt. Probeer het nogmaals");
		return false;
	}
	return true;
}

function refresh(select) {
	var playlist = select.options[select.selectedIndex].value;
	var url = 'users/player.php?p=' + playlist;
	if(url != 'default') {
		NewWindow(url,'name','300','410','no');
	}	

}	



/* check the register form */
function checkRegister(form) {
			
	// set variables
	var fieldNr = form.length; 	
	var message = "Je bent iets vergeten in te vullen. Je kunt dit zien aan de rode omranding";
	var output  = true;
	
	// check all fields	
	for(i=0;i<fieldNr;i++)
	{
		//setting the initial state
		form.elements[i].style.borderColor = "";	
		
		//making sure the element property exists
		if(form.elements[i].value != undefined)
		{
			// check none of the fields is empty or contains problematic chars
			// NOTE: using the names of the password fields. i.e. password and password2 are fieldnames	
			if(!validateEditfield(form.elements[i], message , false))
			{
				output = false;
			} 
		}
	}
	// if not false already check the rest
	if(output) {
		if(!checkLength(form.uname.value,4,16)) {
			alert("Gebruikersnaam heeft een onjuiste lengte. Een gebruikersnaam moet uit minimaal 4 en maximaal 16 cijfers en/of letters bestaan");
			return false;
		} else if(!checkLength(form.password.value,6,16)) {
			alert("Wachtwoord heeft een onjuiste lengte. Een wachtwoord moet uit minimaal 6 en maximaal 16 cijfers en/of letters bestaan");
			return false;
		} else if(form.password.value != form.password2.value) {
			alert("Wachtwoorden zijn niet gelijk aan elkaar. Waarschijnlijk heb je een tikfoutje gemaakt. Probeer het nog eens");
			return false;
		} else if(!form.voorwaarden.checked) {
			alert("Om lid te kunnen worden van Simuze dien je in te stemmen met de Simuze voorwaarden. Vink het vakje 'ik ben bekend met de voorwaarden van Simuze en stem hiermee in' af")
			return false;
			form.voorwaarden.style.borderColor = "#FF0000";
		}
	}
	return output;
}

function checkEditMusic(form){
	var fieldNr = form.length; 	
	var message = "Enkele velden zijn verplicht om in te vullen en je bent iets vergeten in te vullen. Zou je dit als nog willen doen. Deze velden zijn rood omrand";
	var output  = true;
    
	for(i=0;i<fieldNr;i++)
	{
        var element = form.elements[i];
        
        //setting the initial state
		element.style.borderColor = "";	
        var theName = new String(element.name);
        
        
        //check for the fields that are required (note: these need a name starting with __ i.e. double underscore)
        if(theName.charAt(0) == "_" && theName.charAt(1) == "_") {
            if(element.value == undefined || element.value == "" )
            {
                alert(message);
                output = false;
                element.style.borderColor="#FF0000";
                element.focus();
			}
		}
    }
	if(output) {
		
		var selectedOption = form.genre.options[form.genre.selectedIndex];
		if(selectedOption.value == "default") {
			form.genre.focus();
			alert("Je bent vergeten een genre te selecteren. Je dient een genre te kiezen wat zo goed mogelijk je muziek beschrijft zodat anderen je muziek kunnen vinden.");
			return false;
		}
	}
	
    return output;


}

