function checkNsend(form,fieldtypes2check){

	//Default for "fieldtypes2check" if not set as argument
	var fieldtypes2check = fieldtypes2check || new Array("input","textarea");
	
	for(var i = 0; i < form.length; i++){
		
		if( !fieldtypes2check.in_array( form[i].tagName.toLowerCase() ) )
			continue;
		
		if(form[i].type != "hidden" && form[i].value == ""){
			markFieldAsError( form[i] );
			form[i].focus();
			return false;
		}
		
		//Assume field must contain a (valid) emailaddress
		if( form[i].name.toLowerCase().indexOf("email") != -1 ){
			
			if(!isemail(form[i].value)){
				markFieldAsError( form[i] );
				form[i].focus();
				return false
			}
					
		}
		
		
		//No errors found, reset all to OK
		markFieldAsOK( form[i] );
	}
	
	return true;
}

Array.prototype.in_array = function ( obj ) {
	var len = this.length;
	for ( var x = 0 ; x <= len ; x++ ) {
		if ( this[x] == obj ) return true;
	}
	return false;
}


function isemail( str ) {
	// tester om str er en gyldig syntax for en emailadresse og returnerer true
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
    	if (tempReg.test(tempStr)) supported = 1;
  	}
	if (!supported) 
    	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^[a-zA-Z0-9_\\-\\.]+\\@([a-zA-Z0-9\\-]+\\.){1,4}[a-zA-Z]{2,3}$");
  	return (!r1.test(str) && r2.test(str));
}



function markFieldAsError( field ){
	var myFieldset;
	var myParent;
	
	myFieldset = getDesiredParentElement( field , "fieldset" , "input" , 1 , 2 );
	
	if( !myFieldset ) return;
	
	if( myFieldset.className == "" )
		myFieldset.className = "error";
	else
		myFieldset.className += " error";
}



function markFieldAsOK( field ){
	var myFieldset;
	var myParent;
	
	myFieldset = getDesiredParentElement( field , "fieldset" , "input" , 2 , 2 );
	
	if( !myFieldset ) return;
	
	if( myFieldset.className.indexOf("error") != -1 )
		myFieldset.className = "input";
}



function getDesiredParentElement( startEl , parTag , parClassName , classNameFindMode , givenMaxAttempts ){
	
	var found = false;
	var currEl = startEl;
	var parentEl;
	var maxAttempts;
	var counter = 0;
	var classNameFindPolicy;
	
	
	switch( classNameFindMode ){
		case 1:
			classNameFindPolicy = "strict";
			break;
		case 2:
			classNameFindPolicy = "contains";
			break;
		default:
			classNameFindPolicy = "strict";
			break;
	}
	
	
	
	while( found == false  ){
		
		//Reduce loop
		if( givenMaxAttempts ) maxAttempts = givenMaxAttempts;
		else maxAttempts = counter + 1;
		if( counter > maxAttempts ) return false;
		
		//Find the requested parent
		parentEl = currEl.parentNode;
		if( parentEl.tagName.toUpperCase() == parTag.toUpperCase() ){
		//The tags match
			
			if( parClassName != "" ){
			//The tags className has got to match too
				if( ( classNameFindPolicy == "strict" && parentEl.className.toUpperCase() == parClassName.toUpperCase() ) ||  ( classNameFindPolicy == "contains" && parentEl.className.toUpperCase().indexOf( parClassName.toUpperCase() ) != -1  )  )
					found = true;//Both required tag- and className match
				else
					currEl = parentEl;
			}else
				found = true;//Required tagName matches
			
				
		}else
			currEl = parentEl;
		
		counter++;
		
	}
	
	return parentEl;
	
}







/*-- Used at WishEmail --*/
function postWishForm(form){
	
	//See if the form has been filled out correctly
	if( !checkNsend(form) )
		return;
	
	
	//The form is valid, gather data to send
	var url = form.action
	var formData = 'sendemail='+form['sendemail'].value+'&sendname='+form['sendname'].value+'&message='+form['message'].value;//_getPostData(fm)
	/*var sendemail = document.getElementById("sendemail").value;
	var sendname = document.getElementById("sendname").value;
	var message = document.getElementById("message").value;
	var formData = 'sendemail='+sendemail+'&sendname='+sendname+'&message='+message;//_getPostData(fm)*/
	formData = encodeURI(formData);
	
	setLoader('on','AjaxDivWishEmail');
	
	
	//Post its data now
	Spry.Utils.loadURL('POST', url, true, postCallBack, {postData: formData, headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}});
	
	
}


/*-- Used at FriendEmail --*/
function postFriendForm(form){
	
	//See if the form has been filled out correctly
	if( !checkNsend(form) )
		return;
	
	
	//The form is valid, gather data to send
	var url = form.action
	var formData = 'fromemail='+form['fromemail'].value+'&fromname='+form['fromname'].value+'&sendemail='+form['sendemail'].value+'&sendname='+form['sendname'].value+'&message='+form['message'].value+'&subject='+form['subject'].value+'&url='+form['url'].value+'&recaptcha_challenge_field='+form['recaptcha_challenge_field'].value+'&recaptcha_response_field='+form['recaptcha_response_field'].value;//_getPostData(fm)
	/*var sendemail = document.getElementById("sendemail").value;
	var sendname = document.getElementById("sendname").value;
	var message = document.getElementById("message").value;
	var formData = 'sendemail='+sendemail+'&sendname='+sendname+'&message='+message;//_getPostData(fm)*/
	formData = encodeURI(formData);
	
	
	setLoader('on','AjaxDivFriendEmail');
	
	
	//Post its data now
//	Spry.Utils.loadURL('POST', url, true, postCallBackFriend, {postData: formData, headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}, userData: 'ok' });
	$.post(url,formData,postCallBackFriend);
	
	
}



var postCallBack = function(){
	
	setLoader('off','AjaxDivWishEmail');
	
	var message = "Your Wish List Was Sent!";
	var messageObj = document.getElementById("AjaxDivWishEmail");
	messageObj.innerHTML = "<div id='alert'><blockquote>" + message + "</blockquote></div>";
	messageObj.style.display = "block";
}


var postCallBackFriend = function(data){

	setLoader('off','AjaxDivFriendEmail');
	
	if( data == '0')
	{
		
		var message = "Please try again!";
		var class = "alert-error";
		
		
	} else {
		
		var message = "Message Sent!";
		var class = "alert";
	
	}
	
	
	var messageObj = document.getElementById("AjaxDivFriendEmail");
	messageObj.innerHTML = "<div id='" + class + "'><blockquote>" + message + "</blockquote></div>";
	messageObj.style.display = "block";
}