
			onerror=handleErr;
			var txt="";

			function handleErr(msg,url,l)
			{
				txt="There was an error on this page.\n\n";
				txt+="Error: " + msg + "\n";
				txt+="URL: " + url + "\n";
				txt+="Line: " + l + "\n\n";
				txt+="Click OK to continue.\n\n";
				alert(txt);
				return true;
			}

			function validateRadioCheckboxes( frm )
			{
				var j = 1;
				var radioName = "r" + j;
			
				var radioCollect = frm[radioName];
			
				while( radioCollect != undefined )
				{
					radioName = "r" + j;
					radioCollect = frm[radioName];
					j++;
					
					var groupPassed = false;
					for(var i=0; radioCollect != undefined && i<radioCollect.length ; i++)
					{
						if( radioCollect[i].checked )
						{
							groupPassed = true;
						}
					}

					if( radioCollect != undefined && !groupPassed )
					{
						alert( "You need to select a answer for a question" );
						return false;
					}
				}
				return true;
			}

			function validate(form_id,email) 
			{
				var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
				var address = document.forms[form_id].elements[email].value;
				if(reg.test(address) == false) 
				{
					alert('Invalid Email Address');
					return false;
				}
			}

	// Declaring valid date character, minimum year and maximum year
	var dtCh= "-";
	var minYear=1900;
	var maxYear=2100;

	function isInteger(s){
		var i;
		for (i = 0; i < s.length; i++){   
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}
		// All characters are numbers.
		return true;
	}

	function stripCharsInBag(s, bag){
		var i;
		var returnString = "";
		// Search through string's characters one by one.
		// If character is not in bag, append to returnString.
		for (i = 0; i < s.length; i++){   
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
		}
		return returnString;
	}

	function daysInFebruary (year){
		// February has 29 days in any year evenly divisible by four,
		// EXCEPT for centurial years which are not also divisible by 400.
		return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	function DaysArray(n) {
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}

	function isDate(dtStr){
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh)
		var pos2=dtStr.indexOf(dtCh,pos1+1)
		var strDay=dtStr.substring(0,pos1)
		var strMonth=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		if (pos1==-1 || pos2==-1)
                {
                    return setStatusMessage("The date format should be : dd-mm-yyyy", 2);
		}
		if (strMonth.length<1 || month<1 || month>12)
                {
                    return setStatusMessage("Please enter a valid month", 2);
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month])
                {
                    return setStatusMessage("Please enter a valid day", 2);
		}
		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
                {
                    return setStatusMessage("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false)
                {
                    return setStatusMessage("Please enter a valid date", 2);
		}
	return true
	}

	function validateDate(date)
	{
		if (isDate(date.value)==false){
			date.focus()
			return false
		}
		return true
	}

	function validateStartEndDate( startDate, endDate )
	{
		// Get the two dates and then validate them
		var ok1 = validateDate( startDate );
		var ok2 = validateDate( endDate );

		if( ok1 == true && ok2 == true )
		{
			// Set them into Date objects and compare them
			var stDay = startDate.value.substring( 0, 2 );
			var stMonth = startDate.value.substring( 3, 5 );
			var stYear = startDate.value.substring( 6, 10);
			var start = new Date()
				start.setFullYear(stYear, stMonth, stDay );

			var eDay = endDate.value.substring( 0, 2 );
			var eMonth = endDate.value.substring( 3, 5 );
			var eYear = endDate.value.substring( 6, 10);
			var end = new Date()
				end.setFullYear(eYear, eMonth, eDay);
			
			if(start < end) 
			{
				// If start date is before the end date
				return true;
			}
			alert( "ERROR! - End date is before start date" );
			return false;
		}
	}

	function validateDatetimeFromDatetimeTo(df, df_h, df_m, dt, dt_h, dt_m, diff_hours)
	{
		// Get the two dates and then validate them
		var ok1 = validateDate(df);
		var ok2 = validateDate(dt);

		if( ok1 == true && ok2 == true )
		{
			// Set them into Date objects and compare them
			var stDay = df.value.substring( 0, 2 );
			var stMonth = df.value.substring( 3, 5 );
			var stYear = df.value.substring( 6, 10);
			var start = new Date()
				start.setFullYear(stYear, stMonth, stDay );
				start.setHours(df_h);
				start.setMinutes(df_m);
			var eDay = dt.value.substring( 0, 2 );
			var eMonth = dt.value.substring( 3, 5 );
			var eYear = dt.value.substring( 6, 10);
			var end = new Date()
				end.setFullYear(eYear, eMonth, eDay);
				end.setHours(dt_h);
				end.setMinutes(dt_m);

			var difference = (end.getTime() - start.getTime()) /( 3600 * 1000);
			if(difference >= diff_hours)
                            return true;
			else
			{	
                            return setStatusMessage("The difference between the two date/time instances should at least be half an hour", 2);
			}
		}
	}

function validateTwoFieldsNotEmpty( field_1, field_2, alert_1, alert_2 )
{
	if( !isEmpty( field_1 ) ) 
	{ 
		if( isEmpty( field_2 ) ) 
		{
			alert( alert_2 );
			return false;
		}
	}
	else 
	{ 
		alert( alert_1 ); 
		return false; 
	}
	return true;
}

// returns true if the string is empty
function isEmpty( str )
{
	if( str == null || str.length == 0 ){ return true; }
	return false;
}
// returns true if the string is a valid email
function isEmail(str){
	if(isEmpty(str)) return false;
	var re = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i
	return re.test(str);
}
// returns true if the string only contains characters A-Z or a-z
function isAlpha(str)
{
	var re = /[^a-zA-Z]/g
	if (re.test(str)) return false;
	return true;
}
// returns true if the string only contains characters 0-9
function isNumeric(str)
{
	var re = /[\D]/g
	if (re.test(str)) return false;
	return true;
}
// returns true if the string only contains characters A-Z, a-z or 0-9
function isAlphaNumeric(str)
{
	var re = /[^a-zA-Z0-9æøåÆØÅ]/;
	if(re.test(UTF8.encode(str)))
		return false;
	return true;
}

function isAlphaNumericAndWhitespaces(value)
{
    //var re = /^[a-zA-Z0-9_@sæøåÆØÅ,.:;-?\s]/
    var re =  /[^a-zA-Z0-9æøåÆØÅ\s]/;
    if(re.test(UTF8.encode(value)))
	return false;
    return true;
}

function isLength(str, len)
{
	return str.length == len;
}
// returns true if the string's length is between "min" and "max"
function isLengthBetween(str, min, max)
{
	return (str.length >= min)&&(str.length <= max);
}

function isAlphaNumericMinMax( str, min, max )
{
	if(isAlphaNumeric(str))
		return isLengthBetween(str, min, max)
	return false;
}
 
function isAlphaMinMax(str, min, max)
{
	if(isAlpha(str))
		return isLengthBetween(str, min, max)
	return false;
}

function isNumericMinMax(str, min, max)
{
	if(isNumeric(str))
		return isLengthBetween(str, min, max)
	return false;
}

function isAlphaNumericAndWhitespacesMinMax(str, min, max)
{
	if(isAlphaNumericAndWhitespaces(str))
		return isLengthBetween(str, min, max)
	return false;
}

function validateWebsite( website )
{
	//var re = /^(http:\//)[a-zA-Z\S*]/;
	return true;
}

function validateSignup()
{
	// Get the values from the form
	var username = document.frm.username.value;
	var name = document.frm.name.value;
	var email = document.frm.email.value;
	var password_1 = document.frm.password_1.value;
	var password_2 = document.frm.password_2.value;
	
	// Validate the form field values 
	var isUsernameOK = isAlphaNumericMinMax(username, 3, 18);
	if( !isUsernameOK ) 
	{  
            document.frm.username.focus();
            return setStatusMessage("Please write a valid username, containing 3-18 alphanumeric characters", 2);
	} 
	var isNameOK = isAlphaNumericAndWhitespacesMinMax(name, 3, 40);
	if( !isNameOK ) 
	{	
            document.frm.name.focus();
            return setStatusMessage("Please write a valid name, at least 5-40 letters", 2);
	}
	var isEmailOK = isEmail(email);
	if( !isEmailOK ) 
	{	
            document.frm.email.focus();
            return setStatusMessage("Please write a valid email", 2);
	}
	var isPasswordOK = isAlphaNumericMinMax(password_1, 6, 18);
	if( !isPasswordOK ) 
	{	
            document.frm.password_1.focus();
            return setStatusMessage("Please write a valid password, at least 6-18 alphanumeric characters", 2);
	}
	else
	{
            // Check if both passwords are the same
            if(password_1 != password_2)
            {
		document.frm.password_2.focus(); 
		return setStatusMessage("The password should be the same in both fields", 2);
            }
	}
	return true;
}
	
			
function validateProfile()
{
    // Get the values from the form
    if(validateSignup())
    {
	var zip = document.frm.zip.value;
	var age = document.frm.age.value;
	var website = document.frm.website.value;
	var signature = document.frm.signature.value;
	var description = document.frm.description.value;
		
	// Validate the form field values 
	if(!isNumericMinMax(zip, 4, 4))
	{
            document.frm.zip.focus();
            return setStatusMessage("Please write a valid zip-code, containing 4 digets", 2);
	} 
	if(!isDate(age))
	{
            document.frm.age.focus();
            return setStatusMessage("Please write a valid age", 2);
	}
	if(!validateWebsite(website))
	{	
            document.frm.website.focus();
            return setStatusMessage("Please write a valid website", 2);
	}
	if(!isAlphaNumericAndWhitespacesMinMax(signature, 3, 30))
	{
            document.frm.signature.focus();
            return setStatusMessage("Please write a valid signature, at least 3-30 alphanumeric characters", 2);
	}
        return true;
    }
    return false;
}

function validateTopicPost()
{
    var cate = document.frm.categories_combobox.value;
    var subcate = document.frm.subcategories_combobox.value;
    var topic = document.frm.topic.value;
    var text = document.frm.text.value;
    if(cate <= 0)
    {
	document.frm.categories_combobox.focus(); 
	return setStatusMessage("Please select category", 2);
    }
    if(subcate <= 0)
    {
	document.frm.subcategories_combobox.focus(); 
	return setStatusMessage("Please select subcategory", 2);
    }
    if(!isAlphaNumericAndWhitespacesMinMax(topic, 3, 30))
    {
	document.frm.topic.focus();
	return setStatusMessage("Please write a valid topic, at least 3-30 alphanumeric characters", 2);
    }
    if(text.length < 30)
    {
	return setStatusMessage("Please write at least 30 characters for the topic text", 2);
    }
    return true;
}

function validateReplyPost()
{
    var text = document.frm.text.value;
    alert(text.length);
}


function validateEventPost()
{	
    var df = document.frm.date_from;
    var df_h = document.frm.date_from_hours.options[document.frm.date_from_hours.selectedIndex].text;
    var df_m = document.frm.date_from_minutes.options[document.frm.date_from_minutes.selectedIndex].text;
	
    var dt = document.frm.date_to;
    var dt_h = document.frm.date_to_hours.options[document.frm.date_to_hours.selectedIndex].text;
    var dt_m = document.frm.date_to_minutes.options[document.frm.date_to_minutes.selectedIndex].text;

    var seats = document.frm.seats.value;
    var location = document.frm.location.value;
    var price = document.frm.price.value;
    var title = document.frm.title.value;
    var text = document.frm.text.value;

    if(!validateDatetimeFromDatetimeTo(df, df_h, df_m, dt, dt_h, dt_m, 0.5))
    { 
	document.frm.date_from.focus();
        return false;
	//return setStatusMessage("Please write at least 30 characters for the topic text", 2);
    }
    if(!isNumericMinMax(seats, 1, 3) || seats <= 0)
    {
        document.frm.seats.focus();
        return setStatusMessage("Please write a valid number of seats fro 1-999", 2);
    }
    if(!isAlphaNumericAndWhitespacesMinMax(location, 5, 120))
    {
        document.frm.location.focus();
	return setStatusMessage("Please write a location 5-120 alphanumeric characters", 2);
    }
    if(!isNumericMinMax(price, 1, 3))
    {
        document.frm.price.focus();
	return setStatusMessage("Please write a valid price from 0-999 dkr", 2);
    }
    if(!isAlphaNumericAndWhitespacesMinMax(title, 3, 40))
    {
	document.frm.title.focus();
	return setStatusMessage("Please write a valid title, at least 3-40 alphanumeric characters", 2);
    }
    if(text.length < 30)
    {
	return setStatusMessage("Please write at least 30 characters for the event text", 2);
    }
    return true;
}

function validateLANPost()
{
    var df = document.frm.date_from;
    var df_h = document.frm.date_from_hours.options[document.frm.date_from_hours.selectedIndex].text;
    var df_m = document.frm.date_from_minutes.options[document.frm.date_from_minutes.selectedIndex].text;
	
    var dt = document.frm.date_to;
    var dt_h = document.frm.date_to_hours.options[document.frm.date_to_hours.selectedIndex].text;
    var dt_m = document.frm.date_to_minutes.options[document.frm.date_to_minutes.selectedIndex].text;

    var locat = document.frm.locat.value;
    var price = document.frm.price.value;
    var layout = document.frm.layout.value;
    var text = document.frm.text.value;

    if(!isAlphaNumericAndWhitespacesMinMax(layout, 3, 50))
    {
	document.frm.layout.focus();
	return setStatusMessage("Please write a valid layout, at least 3-50 alphanumeric characters", 2);
    }
    if(!validateDatetimeFromDatetimeTo(df, df_h, df_m, dt, dt_h, dt_m, 24))
    {
	document.frm.date_from.focus(); 
	return false;
    }
    if(!isAlphaNumericAndWhitespacesMinMax(locat, 5, 120))
    {
	return setStatusMessage("Please write a location 5-120 alphanumeric characters", 2);
    }
    if(!isNumericMinMax(price, 1, 3))
    {
	return setStatusMessage("Please write a valid price from 0-999 dkr", 2);
    }
    if(text.length < 30)
    {
	return setStatusMessage("Please write at least 30 characters for the event text", 2);
    }
    return true;
}
//-->