var MRForm = {
	requiredFields : [], 
	requiredFieldMissingMsg : 'Du må fylle ut feltene merket med stjerne!',
	activeInfoText : false,
	validator: false,
	uploadData: [],
	dependencies: {},
	validateForm : function() {
		var errorMsg = '';
		for (var i=0; i<MRForm.requiredFields.length && !errorMsg; i++) {
			if (!MRForm.fieldHasValue(MRForm.requiredFields[i])) {
				alert(MRForm.requiredFieldMissingMsg);
				return false;
			}
		}
		return true;
	},
	addRequiredField : function(fieldId) {
		MRForm.requiredFields.push(fieldId)
	},
	fieldHasValue : function(fieldId) {
		var field = document.getElementById('field_'+fieldId);
		if (field.type=='text') {
			if (field.value == '') {
				return false;
			}			
		}
		else if (field.type=='radio') {
			if (field.checked) return true;
			var j=1;
			var sub_field;
			var checked = false;
			while (sub_field = document.getElementById(field.id + '_' + j++)) {
				if (sub_field.checked) {
					checked = true;
					break;
				}
			}
			if (!checked) return false;
		}
		return true;
	},
	stripeForm : function(id) {
		var even = false;
		var form = document.getElementById(id);
		if (!form) return;
		var fieldsets = form.getElementsByTagName('fieldset');
				
		for (var i=0; i<fieldsets.length; i++) {
			if (!MRForm.hasClass(fieldsets[i])) {
				fieldsets[i].className = even ? '':'alt';
				even = !even;				
			}
		}
	},
	hasClass : function (obj) {
		var result = false;
		if (obj.getAttributeNode("class") != null) {
			result = obj.getAttributeNode("class").value;
		}
		return result;
	}, 
	gotoPage : function (page) {
		document.getElementById('gotopage').value = page;
		if (!MRForm.validator || MRForm.validator.form()) {
			document.getElementById('mr_form_fill').submit();			
		}
		return false;
	},
	toggleInfoText : function (text, header, icon) {
		if (icon != MRForm.activeInfoText) {
			MRForm.hideErrorText();
			var pos = Math.floor(jQuery(icon).offset().top - jQuery('#mr_form_fill').offset().top);
			jQuery('#field_info').css({
				'display': 'block',
				'top': (pos+5)+'px'
			});
			jQuery('#field_info h2').text(header);
			jQuery('#field_info p').text(text);
			if (MRForm.activeInfoText) {
				jQuery(MRForm.activeInfoText).removeClass('field_info_active');				
			}
			MRForm.activeInfoText = icon;
			jQuery(icon).addClass('field_info_active');
		}
		else {
			MRForm.hideInfoText();
		}
		icon.blur();
		return false;
	},
	hideInfoText : function() {
		if (MRForm.activeInfoText) {
			jQuery(MRForm.activeInfoText).removeClass('field_info_active');
			MRForm.activeInfoText = false;
			jQuery('#field_info').css('display', 'none');			
		}
	},
	hideErrorText : function() {
		jQuery('#field_error').css('display', 'none');
	},
	populateUploadFields : function(uploadFields) {
		MRForm.uploadData = uploadFields;
		for (var i=0; i<uploadFields.length; i++) {
			for (var j=0; j<uploadFields[i].length; j++) {
				var name = uploadFields[i][j].value;
				name = name.substring(name.lastIndexOf('/')+1, name.length);
				var field = '#'+uploadFields[i][j].field+'_wrap'
				var field_id = 'prep_'+uploadFields[i][j].field+'_'+j;
				jQuery(field).append('<div class="MultiFile-label" id="'+field_id+'"><a href="'+field+'" class="MultiFile-remove" onclick="return MRForm.removePopulatedUpload(\''+field_id+'\', \''+uploadFields[i][j].value+'\', \''+uploadFields[i][0].field+'\')">x</a> <span class="MultiFile-title">'+name+'</span></div>');
			}
			var newMax = uploadFields[i][0].max - uploadFields[i].length;
			document.getElementById(uploadFields[i][0].field).MultiFile.max = newMax;
		}
	},
	removePopulatedUpload: function(e, val, parent) {
		jQuery('#'+e).remove();
		jQuery('#'+parent+'_wrap').append('<input type="hidden" name="'+parent+'-delete[]" value="'+val+'" />');
		document.getElementById(parent).MultiFile.max += 1;
		return false;		
	},
	addDependency : function(field, choice, type) {
		if (type==null) {
			
			var dep = jQuery('#choice_'+choice);
			dependency = dep[0];
			
			var checked = false;
			
			if (dependency.tagName=='INPUT') {
				/*				
				if (dependency.type == 'radio') {
					dep.bind('click', function)
				}
				else if (dependency.type == 'checkbox') {
					
				}
				*/
				if (dependency.checked) {
					checked = true;
				}
			}
			else {
				
			}
			
			if (!checked) {
				//jQuery('#field_'+field).attr('disabled', 'true').addClass('disabled');
				MRForm.disableField(field);
			}

			if (!this.dependencies[choice]) {
				this.dependencies[choice] = new Array();
			}

			this.dependencies[choice].push({
				field: field,
				checked: checked
			});

			dep.bind('click', function() { 
				if (this.checked) {
					MRForm.enableField(field);
					//jQuery('#field_'+field).attr('value', '');
					MRForm.dependencies[choice]['checked'] = true;
				}
				else {
					MRForm.disableField(field);
					//jQuery('#field_'+field).attr('value', '');
					MRForm.dependencies[choice]['checked'] = false;
				}
				MRForm.resolveDependencies();
			});
		}
		else if (type=='checkbox'){
			
		}
	},
	enableField : function (field) {
		jQuery('#field_'+field).attr('disabled', '').removeClass('disabled');
		jQuery('#field_'+field+'_label').removeClass('disabled');
	},
	disableField : function (field) {
		jQuery('#field_'+field).attr('disabled', 'true').addClass('disabled');
		jQuery('#field_'+field+'_label').addClass('disabled');
	},	
	resolveDependencies : function () {
		var checked, dependencies;
		for (i in MRForm.dependencies) {

			checked = jQuery('#choice_'+i)[0].checked;
			dependencies = MRForm.dependencies[i];
			
			for (var j=0; j<dependencies.length; j++) {
				if (dependencies[j].checked != checked) {
					if (checked) {
						MRForm.enableField(dependencies[j].field);
					}
					else {
						MRForm.disableField(dependencies[j].field);
					}
					dependencies[j].checked = checked;
				}
			}
		}
	}
}

function validPersonNum(n) {

	n = n.replace(' ', '');

	if (n.length != 11) {
		return false;
	}

	var weights1 = [ 3, 7, 6, 1, 8, 9, 4, 5, 2 ];
	var weights2 = [ 5, 4, 3, 2, 7, 6, 5, 4, 3 ];

	var checksum = 0;

	for (var i=0; i<weights1.length; i++) {
		checksum += (weights1[i] * parseInt(n.charAt(i)));
	}
	checksum = 11 - (checksum % 11);
	
	if (checksum == 11) {
		checksum = 0;
	}

	if (checksum != n.charAt(9)) {
		return false;
	}
	
	var checksum2 = 0;
	
	for (var i=0; i<weights2.length; i++) {
		checksum2 += (weights2[i] * parseInt(n.charAt(i)));
	}
	checksum = 11 - ((checksum2 + (2*checksum)) % 11);
	
	if (checksum == 11) {
		checksum = 0;
	}	

	if (checksum != n.charAt(10)) {
		return false;
	}	

	//Burde ha validert datoen også...
	
	return true;
}
