function popdivpos(id) {
	$("#lostaccess").hide();
	$("#profile").hide();
	$(id).css('opacity',0.3);
	$(id).show();
}

function getLoadingMsg(extkey, pi, loading_text) {
	return '<span>'+ loading_text +'<img src="typo3conf/ext/'+ extkey +'/'+  pi +'/_view/resources/loading.gif"></span>';
}

function checkUsernameByAjax(elm, text, css, baseCss, baseURL, extkey, pi, pagekey) {
	date = new Date();
	elm_id = elm.id;
	
	$('#'+elm_id).parent().parent().attr({'style':'height:60px'});
	$('#'+elm_id+'ajax').text(text);
	$('#'+elm_id+'ajax').addClass(css);
	$('#'+elm_id+'ajax').removeClass(baseCss);
	
	paramStr	=	'eID='+ extkey + pi
				+	'&uniquyfier='+ date.getTime()
				+	'&requestedpage='+ pagekey
				+	'&formdata[ajax]=true'
				+	'&formdata[username]='+ elm.value;

	fromURL =  baseURL +'?'+ encodeURI(paramStr);
	$.get(fromURL, function(raw) {
		settings = eval(raw);
		window.setTimeout(function(){
			for(i in settings.removecss) {
				$('#'+elm_id+'ajax').removeClass(settings.removecss[i]);
			}
			$('#'+elm_id+'ajax').addClass(settings.addcss);
			$('#'+elm_id+'ajax').text(settings.text);
		}, 1000);
	});
}

function handleCheckboxRelations(elm) {
	elm_id = elm.id;
	switch(elm_id) {
		case 'cellular':
			if($('#cellular').val() != '') {
				$('#nocellular').attr('checked', '');
			}
			break;
			
		case 'nocellular':
			if($('#nocellular').is(':checked')) {
				$('#cellular').val('');
			}
			break;
	}
}

function resetAjax(elm_id) {
	$('#'+elm_id).text('');
}

function validateProfile(state, text, ssn_text, username_text, password_ds_text, password_text, cellular_text, nocellular_text, email_text, phone_text, school_text, grade_text, firstname_text, lastname_text) {
	var alert_text = '';
	if(!validateUsername($('#username'))) {
		alert_text += '\n\n'+username_text;
	}
	if($('#cellular').val() == '' && $('#nocellular').is(':not(:checked)')) {
		alert_text += '\n\n'+nocellular_text;
	}
	else if($('#cellular').val() != '' && !validatePhone($('#cellular'), $('#nocellular').is(':not(:checked)'))) {
		alert_text += '\n\n'+cellular_text;
	}
	if(!validateEmail($('#email'))) {
		alert_text += '\n\n'+email_text;
	}
	if(state == 1) {
		if($('#password1').val() != '' && !validatePassword($('#password2'))) {
			alert_text += '\n\n'+password_ds_text;
		}
		else if($('#password1').val() != $('#password2').val()) {
			alert_text += '\n\n'+password_text;
		}
		if(!validatePhone($('#phone'), false)) {
			alert_text += '\n\n'+phone_text;
		}
		if(!validateGrade($('#grade'))) {
			alert_text += '\n\n'+grade_text;
		}
	}
	else if(state == 2) {
		if(!validateSSN($('#ssn'))) {
			alert_text += '\n\n'+ssn_text;
		}
		if(!validatePassword($('#password1'))) {
			alert_text += '\n\n'+password_ds_text;
		}
		else if($('#password1').val() != $('#password2').val()) {
			alert_text += '\n\n'+password_text;
		}
		if(!validateName($('#firstname'))) {
			alert_text += '\n\n'+firstname_text;
		}
		if(!validateName($('#lastname'))) {
			alert_text += '\n\n'+lastname_text;
		}
	}
	if(alert_text.length > 0) {
		alert(text+alert_text);
	} else {
		popdivpos('#checkin_load');
		$("#profile_form").submit();
	}
}

function validateLostAccess(text, ssn_text) {
	var alert_text = '';
	if(!validateSSN($('#ssn'))) {
		alert_text += '\n\n'+ssn_text;
	}
	if(alert_text.length > 0) {
		alert(text+alert_text);
	} else {
		popdivpos('#checkin_load');
		$("#lostaccess_form").submit();
	}
}

function validateSSN(elm) {
	var ssn = elm.val().slice(0,6)+elm.val().slice(7,12);
	ssn = ssn.split('');
	var sum = ssn[0]*4
		+ ssn[1]*3
		+ ssn[2]*2
		+ ssn[3]*7
		+ ssn[4]*6
		+ ssn[5]*5
		+ ssn[6]*4
		+ ssn[7]*3
		+ ssn[8]*2
		+ ssn[9]*1
	;
	return sum%11 == 0 ? true : false;
}

function validateUsername(elm) {
	if(elm.val() == '') {
		return false;
	} else {
		var pattern = /^[a-zA-Z@.\u00c0-\u00df\u00e0-\u00ff\u0100-\u017e\u017f-\u01ff\u0259\u1e80-\u1e85\u1ea0-\u1ef9\ufb01-\ufb02\s0-9]{2,50}$/;
		return pattern.test(elm.val());
	}
}

function validatePassword(elm) {
	if(elm.val() == '') {
		return false;
	} else {
		var pattern = /^(?=.{8,50}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/;
		return pattern.test(elm.val());
	}
}

function validateName(elm) {
	if(elm.val() == '') {
		return false;
	} else {
		var pattern = /^[a-zA-ZæøåÆØÅ \u00c0-\u00df\u00e0-\u00ff\u0100-\u017e\u017f-\u01ff\u0259\u1e80-\u1e85\u1ea0-\u1ef9\ufb01-\ufb02]{2,35}$/;
		return pattern.test(elm.val());
	}
}

function validatePhone(elm, required) {
	if(elm.val() == '' && required) {
		return false;
	} else if(elm.val() != '') {
		var pattern = /^[0-9]{8}$/;
		return pattern.test(elm.val());
	}else {
		return true;
	}
}

function validateEmail(elm) {
	if(elm.val() == '') {
		return false;
	} else {
		var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		return pattern.test(elm.val());
	}
}

function validateGrade(elm) {
	if(elm.val() == '') {
		return true;
	} else {
		var pattern = /^(\d\d?)([a-zA-Z\u00e6\u00f8\u00e5\u00c6\u00d8\u00c5]{0,2})$/;
		if(pattern.test(elm.val())) {
			elm.val().match(pattern);
			step = RegExp.$1;
			track = RegExp.$2;
			return step >= 0 && step <= 10 ? true : false;
		} else {
			return false;
		}
	}
}



function setSchools(elm) {
	$('#'+elm.id).flushCache();
	$('#'+elm.id).autocomplete(php_schools, {
		autoFill:true
		,delay:10
		,matchContains:true
		,width:300
		,formatItem:function(row) {
			return row.name;
		}
	});
}

function setSchool(elm) {
	id = getSchoolId(elm.value);
	$('#'+elm.id+'_id').val(id);
}

function getSchoolName(id) {
	var name = '';
	for(i in php_schools) {
		if(php_schools[i].id == id) {
			var name = php_schools[i].name;
			break;
		}
	}
	return name;
}

function getSchoolId(name) {
	var id = '';
	for(i in php_schools) {
		if(php_schools[i].name == name) {
			id = php_schools[i].id;
			break;
		}
	}
	return id;
}
