/* KH Javascript Library - v1.00 2010-06-28 */

// Tilmelding
var FieldErrorText_Navn;
var FieldErrorText_Adresse;
var	FieldErrorText_Postnr;
var	FieldErrorText_By;
var	FieldErrorText_Foedselsdag;
var	FieldErrorText_Fastnet;
var	FieldErrorText_Mobil;
var	FieldErrorText_Email;
var	FieldErrorText_AndreOplysninger;
var	FieldErrorText_Familie;
var	FieldErrorText_VaergesNavn;

// Admin - Aktivitet
var FieldErrorAktivitet_Overskrift;
var FieldErrorAktivitet_Dato;
var FieldErrorAktivitet_Tidspunkt;
var FieldErrorAktivitet_Beskrivelse;
var FieldErrorAktivitet_Link;
var FieldErrorAktivitet_LinkTarget;

var ErrorText_CannotBeEmpty = 'Feltet <b>skal</b> udfyldes.';
var ErrorText_CannotBeEmptyFamilie = 'Feltet <b>skal</b> udfyldes, når det er angivet, at medlemmet har familie i klubben.';
var ErrorText_IllegalChars = 'Feltet må kun indeholde bogstaver og tal samt mellemrum, parenteser, komma, punktum, bindestreg og skråstreg.';
var ErrorText_IllegalPhone = 'Telefonnumre skal indeholde 8 cifre.'

function initFormTilmelding()
{
	FieldErrorText_Navn = '';
	FieldErrorText_Adresse = '';
	FieldErrorText_Postnr = '';
	FieldErrorText_By = '';
	FieldErrorText_Foedselsdag = '';
	FieldErrorText_Fastnet = '';
	FieldErrorText_Mobil = '';
	FieldErrorText_Email = '';
	FieldErrorText_AndreOplysninger = '';
	FieldErrorText_Familie = '';
	FieldErrorText_VaergesNavn = '';
	
	initField( 'Navn' );
	initField( 'Adresse' );
	initField( 'Postnr' );
	initField( 'By' );
	initField( 'Foedselsdag' );
	initField( 'Fastnet' );
	initField( 'Mobil' );
	initField( 'Email' );
	initField( 'AndreOplysninger' );
	initField( 'Familie' );
	initField( 'VaergesNavn' );
	
	Tilmelding.Familie.disabled = true;

	Tilmelding.Navn.focus();
}

function initFormAktivitet()
{
	FieldErrorAktivitet_Overskrift = '';
	FieldErrorAktivitet_Dato = '';
	FieldErrorAktivitet_Tidspunkt = '';
	FieldErrorAktivitet_Beskrivelse = '';
	FieldErrorAktivitet_Link = '';
	FieldErrorAktivitet_LinkTarget = '';
	
	initField( 'Overskrift' );
	initField( 'Dato' );
	initField( 'Tidspunkt' );
	initField( 'Beskrivelse' );
	initField( 'Link' );
	initField( 'LinkTarget' );
	
	OpretAktivitet.Overskrift.focus();
}

function initField(a_cField)
{
	if( document.getElementById('v_' + a_cField) != null )
		document.getElementById('v_' + a_cField).style.visibility='hidden';
	
	return true;
}

function setFieldValid(a_cField, a_cIconDiv)
{
	document.getElementById('v_' + a_cField).style.visibility='visible';
	//document.getElementById('vi_' + a_cField).src='/../karate/images/icon_valid.gif';
	document.getElementById('vi_' + a_cField).src='images/icon_valid.gif';
	
	return true;
}

function setFieldInvalid(a_cField, a_cIconDiv)
{
	document.getElementById('v_' + a_cField).style.visibility='visible';
	//document.getElementById('vi_' + a_cField).src='/../karate/images/icon_invalid.gif';
	document.getElementById('vi_' + a_cField).src='images/icon_invalid.gif';
		
	return false;
}

function validateEntireForm()
{
	bStatusForm = (	validateFieldNavn() &&
					validateFieldAdresse() &&
					validateFieldPostnr() &&
					validateFieldBy() &&
					validateFieldFoedselsdag() &&
					validateFieldFastnet() &&
					validateFieldMobil() &&
					validateFieldEmail() &&
					validateFieldAndreOplysninger() &&
					validateFieldFamilie() &&
					validateFieldVaergesNavn() );
		
	if( !bStatusForm )
		alert('Ret venligst de felter, hvori der er mangelfuldt eller ulovligt data. Disse felter er markeret med udråbstegn. Lad musen hvile over dette ikon for detaljer...');
	
	return bStatusForm;
}

function validateEntireFormAktivitet()
{
	bStatusForm = (	validateFieldOverskrift() &&
					validateFieldDato() &&
					validateFieldTidspunkt() && 
					validateFieldBeskrivelse() && 
					validateFieldLink() &&
					validateFieldLinkTarget() );
		
	if( !bStatusForm )
		alert('Ret venligst de felter, hvori der er mangelfuldt eller ulovligt data. Disse felter er markeret med udråbstegn. Lad musen hvile over dette ikon for detaljer...');
	
	return bStatusForm;
}

function validateFieldNavn()
{
	if( document.getElementById('Navn').value.length == 0 )
	{
		setFieldInvalid('Navn', 'v_Navn');
		FieldErrorText_Navn = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{
		if(containsInvalidCharacters(document.getElementById('Navn').value))
		{
			setFieldInvalid('Navn', 'v_Navn');
			FieldErrorText_Navn = ErrorText_IllegalChars;			
			return false;
		}
		else
		{
			setFieldValid('Navn', 'v_Navn');
			FieldErrorText_Navn = '';
			return true;
		}
	}
}

function validateFieldAdresse()
{
	if( document.getElementById('Adresse').value.length == 0 )
	{
		setFieldInvalid('Adresse', 'v_Adresse');
		FieldErrorText_Adresse = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{
		if(containsInvalidCharacters(document.getElementById('Adresse').value))
		{
			setFieldInvalid('Adresse', 'v_Adresse');
			FieldErrorText_Adresse = ErrorText_IllegalChars;			
			return false;
		}
		else
		{
			setFieldValid('Adresse', 'v_Adresse');
			FieldErrorText_Adresse = '';
			return true;
		}
	}
}

function validateFieldPostnr()
{
	if( document.getElementById('Postnr').value.length == 0 )
	{
		setFieldInvalid('Postnr', 'v_Postnr');
		FieldErrorText_Postnr = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{	
		var re = /^\d{4}$/;
	
		if( document.getElementById('Postnr').value.search(re) == -1 )
		{
			setFieldInvalid('Postnr', 'v_Postnr');
			FieldErrorText_Postnr = 'Postnummeret skal bestå af fire cifre.';
			return false;			
		}
		else
		{
			setFieldValid('Postnr', 'v_Postnr');
			FieldErrorText_Postnr = '';
			return true;		
		}
	}
}

function validateFieldBy()
{
	if( document.getElementById('By').value.length == 0 )
	{
		setFieldInvalid('By', 'v_By');
		FieldErrorText_By = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{
		if(containsInvalidCharacters(document.getElementById('By').value))
		{
			setFieldInvalid('By', 'v_By');
			FieldErrorText_By = ErrorText_IllegalChars;			
			return false;
		}
		else
		{
			setFieldValid('By', 'v_By');
			FieldErrorText_By = '';
			return true;
		}
	}
}

function validateFieldFoedselsdag()
{
	if( document.getElementById('Foedselsdag').value.length == 0 )
	{
		setFieldInvalid('Foedselsdag', 'v_Foedselsdag');
		FieldErrorText_Foedselsdag = ErrorText_CannotBeEmpty;
		return false;		
	}
	else
	{
		var re = /^([0,1,2][0-9]|3[0,1])-(0[0-9]|1[0,1,2])-\d{4}$/;
		if( document.getElementById('Foedselsdag').value.search(re) == -1 )
		{
			setFieldInvalid('Foedselsdag', 'v_Foedselsdag');
			FieldErrorText_Foedselsdag = 'Datoen er ugyldig. Brug formatet <b>dd-mm-åååå</b>, f.eks. 17-11-1970.';
			return false;		
		}
	}

	setFieldValid('Foedselsdag', 'v_Foedselsdag');
	FieldErrorText_Foedselsdag = '';
	return true;	
}

function validateFieldFastnet()
{
	var re = /^\d{8}$/;

	if( document.getElementById('Fastnet').value.search(re) == -1 )
	{
		if(document.getElementById('Fastnet').value.length > 0)
		{
			setFieldInvalid('Fastnet', 'v_Fastnet');
			FieldErrorText_Fastnet = ErrorText_IllegalPhone;
			return false;
		}
	}
	//else
	//{
		setFieldValid('Fastnet', 'v_Fastnet');
		FieldErrorText_Fastnet = '';
		return true;		
	//}
}

function validateFieldMobil()
{
	var re = /^\d{8}$/;
	if( document.getElementById('Mobil').value.search(re) == -1 )
	{
		if(document.getElementById('Mobil').value.length > 0)
		{
			setFieldInvalid('Mobil', 'v_Mobil');
			FieldErrorText_Mobil = ErrorText_IllegalPhone;
			return false;
		}
	}
	//else
	//{
		setFieldValid('Mobil', 'v_Mobil');
		FieldErrorText_Mobil = '';
		return true;		
	//}
}

function validateFieldEmail()
{
	if( document.getElementById('Email').value.length == 0 )
	{
		setFieldInvalid('Email', 'v_Email');
		FieldErrorText_By = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{
		var re = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		if( document.getElementById( 'Email' ).value.search( re ) == -1 )
		{
			setFieldInvalid('Email', 'v_Email');
			FieldErrorText_Email = 'Email adressen er ugyldig.';
			return false;
		}
	}
	
	setFieldValid('Email', 'v_Email');
	FieldErrorText_Email = '';
	return true;
}

function validateFieldAndreOplysninger()
{
	setFieldValid('AndreOplysninger', 'v_AndreOplysninger');
	FieldErrorText_AndreOplysninger = '';
	return true;
}

function validateFieldFamilie()
{
	document.getElementById( 'Familie' ).disabled = !Tilmelding.FamilieIKlubben[0].checked ;
	
	if(Tilmelding.FamilieIKlubben[0].checked)
	{
		if(document.getElementById( 'Familie' ).value == '')
		{
			setFieldInvalid('Familie', 'v_Familie');
			FieldErrorText_Familie = ErrorText_CannotBeEmptyFamilie;
			return false;			
		}
		else if(containsInvalidCharacters(document.getElementById('Familie').value))
		{
			setFieldInvalid('Familie', 'v_Familie');
			FieldErrorText_Familie = ErrorText_IllegalChars;			
			return false;
		}
	}

	//alert('Kryds i NEJ!');
	
	if( Tilmelding.FamilieIKlubben[0].checked )
	{
		setFieldValid('Familie', 'v_Familie');
		FieldErrorText_Familie = '';
		return true;
	}
	else
	{
		initField( 'Familie' );
		return true;
	}
}

function validateFieldVaergesNavn()
{
	setFieldValid('VaergesNavn', 'v_VaergesNavn');
	FieldErrorText_VaergesNavn = '';
	return true;
}

function validateFieldOverskrift()
{
	if( document.getElementById('Overskrift').value.length == 0 )
	{
		setFieldInvalid('Overskrift', 'v_Overskrift');
		FieldErrorText_Overskrift = ErrorText_CannotBeEmpty;
		return false;
	}
	else
	{
		if(containsInvalidCharacters(document.getElementById('Overskrift').value))
		{
			setFieldInvalid('Overskrift', 'v_Overskrift');
			FieldErrorText_Overskrift = ErrorText_IllegalChars;			
			return false;
		}
		else
		{
			setFieldValid('Overskrift', 'v_Overskrift');
			FieldErrorText_Overskrift = '';
			return true;
		}
	}
}

function validateFieldBeskrivelse()
{
	if( document.getElementById('Beskrivelse').value.length > 0  && containsInvalidCharacters(document.getElementById('Beskrivelse').value) )
	{
		setFieldInvalid('Beskrivelse', 'v_Beskrivelse');
		FieldErrorText_Beskrivelse = ErrorText_IllegalChars;			
		return false;
	}
	else
	{
		setFieldValid('Beskrivelse', 'v_Beskrivelse');
		FieldErrorText_Beskrivelse = '';
		return true;
	}
}

function validateFieldDato()
{
	if( document.getElementById('Dato').value.length == 0 )
	{
		setFieldInvalid('Dato', 'v_Dato');
		FieldErrorText_Dato = ErrorText_CannotBeEmpty;
		return false;		
	}
	else
	{
		var re = /^([0,1,2][0-9]|3[0,1])-(0[0-9]|1[0,1,2])-\d{4}$/;
		if( document.getElementById('Dato').value.search(re) == -1 )
		{
			setFieldInvalid('Dato', 'v_Dato');
			FieldErrorText_Dato = 'Datoen er ugyldig. Brug formatet <b>dd-mm-åååå</b>, f.eks. 17-11-1970.';
			return false;		
		}
	}

	setFieldValid('Dato', 'v_Dato');
	FieldErrorText_Dato = '';
	return true;	
}

function validateFieldTidspunkt()
{
	re = /^\d{1,2}:\d{2}([ap]m)?$/;

    if((document.getElementById('Tidspunkt').value.length > 0) && (document.getElementById('Tidspunkt').value.search(re) == -1))
	{
		setFieldInvalid('Tidspunkt', 'v_Tidspunkt');
		FieldErrorText_Tidspunkt = 'Tidsangivelsen er ugyldig. Brug formatet <b>tt:mm</b>, f.eks. 18:30.';
		return false;
    }
	else
	{
		setFieldValid('Tidspunkt', 'v_Tidspunkt');
		FieldErrorText_Tidspunkt = '';
		return true;	
	}
}

function validateFieldLink()
{
/*
	//re = (http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?;
	if((document.getElementById('Link').value.length > 0) && (document.getElementById('Link').value.search(re) == -1))
	{
		setFieldInvalid('Link', 'v_Link');
		FieldErrorText_Link = 'Formatet for URLen (linket) er ulovlig.';
		return false;
    }
	else
*/
	{
		setFieldValid('Link', 'v_Link');
		FieldErrorText_Link = '';
		return true;	
	}	
}

function validateFieldLinkTarget()
{
	//alert(document.getElementById('LinkTarget').value);
	if((document.getElementById('Link').value.length == 0) || ((document.getElementById('Link').value.length > 0) && document.getElementById('LinkTarget').value != '-'))
	{
		setFieldValid('LinkTarget', 'v_LinkTarget');
		FieldErrorText_LinkTarget = '';
		return true;
	}
	else
	{
		setFieldInvalid('LinkTarget', 'v_LinkTarget');
		FieldErrorText_LinkTarget = 'Der skal vælges target, når URL er udfyldt.';
		return false;
	}
}

function containsInvalidCharacters(a_cString)
{
	// Allow alphanumeric + space, '(', ')', ',', '-', '.', '/'
	var re = /[^0-9a-zA-Z\x20\x28\x29\x2c\x2d\x2e\x2f(æ)(ø)(å)(Æ)(Ø)(Å)]/

	return re.test( a_cString );
}

var tooltip=function(){
	var id = 'tt';
	var top = 3;
	var left = 3;
	var maxw = 300;
	var speed = 10;
	var timer = 20;
	var endalpha = 95;
	var alpha = 0;
	var tt,t,c,b,h;
	var ie = document.all ? true : false;
	return{
		show:function(v,w){
			if(v != "" ){
				if(tt == null){
					tt = document.createElement('div');
					tt.setAttribute('id',id);
					t = document.createElement('div');
					t.setAttribute('id',id + 'top');
					c = document.createElement('div');
					c.setAttribute('id',id + 'cont');
					b = document.createElement('div');
					b.setAttribute('id',id + 'bot');
					tt.appendChild(t);
					tt.appendChild(c);
					tt.appendChild(b);
					document.body.appendChild(tt);
					tt.style.opacity = 0;
					tt.style.filter = 'alpha(opacity=0)';
					document.onmousemove = this.pos;
				}
				tt.style.display = 'block';
				c.innerHTML = v;
				tt.style.width = w ? w + 'px' : 'auto';
				if(!w && ie){
					t.style.display = 'none';
					b.style.display = 'none';
					tt.style.width = tt.offsetWidth;
					t.style.display = 'block';
					b.style.display = 'block';
				}
				if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
				h = parseInt(tt.offsetHeight) + top;
				clearInterval(tt.timer);
				tt.timer = setInterval(function(){tooltip.fade(1)},timer);
			}
		},
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			tt.style.top = (u - h) + 'px';
			tt.style.left = (l + left) + 'px';
		},
		fade:function(d){
			var a = alpha;
			if((a != endalpha && d == 1) || (a != 0 && d == -1)){
				var i = speed;
				if(endalpha - a < speed && d == 1){
					i = endalpha - a;
				}else if(alpha < speed && d == -1){
					i = a;
				}
				alpha = a + (i * d);
				tt.style.opacity = alpha * .01;
				tt.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(tt.timer);
				if(d == -1){tt.style.display = 'none'}
			}
		},
		hide:function(){
			if(tt != null){
				clearInterval(tt.timer);
				tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
			}
		}
	};
}();