﻿/* Generic Javascript functions */

function isInteger(s) {
	for (var i = 0; i < s.length; i++) { var c = s.charAt(i); if (((c < "0") || (c > "9"))) {return false;}}
	return true;
}

function isYoungEnough(ssn) {
	/*Sjekk at personen er mellom 16 og 21 år gammel*/
	/*NB: presisjon til dette scriptet er på årstall. Vi har presisjon ned til måned i CF kode */
	var dob = getSSNDOB(ssn);
	var cen = getCentury(ssn);
	var year = parseInt(cen) + parseInt(dob.substr(4, 2));

	var currentTime = new Date();
	var a_21 = currentTime.getFullYear()-21; //2008-21 = 1987
	var a_16 = currentTime.getFullYear()-16; //2008-16 = 1992

	if ( (year < a_21) || (year > a_16) ) {return false;}
	return true;
}


//Legger en angitt funksjon til å bli trigget ved en side's OnLoad evevent
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') { window.onload = func;}
	else {window.onload = function(){if (oldonload) {oldonload();} func();} }
}

/*function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') {element = document.getElementById(element);}
		//if (arguments.length == 1) {return element;}
		elements.push(element);
	}
	return elements;
}*/

//Kollaps/utvid et angitt element (alternate element)
function switchMenu(obj) {
	var el = document.getElementById(obj);
	if ( el.style.display != "none" ) { el.style.display = 'none';}
	else { el.style.display = '';}
}

//Kollaps/utvid et angitt element (from boolean value)
function switchMenu2(obj,s) {
	var el = document.getElementById(obj);
	if ( s ) { el.style.display = 'none';}
	else { el.style.display = '';}
}

//Vis/skjul et angitt element (from boolean value)
function showMenu(obj,s) {
	var el = document.getElementById(obj);
	if ( s ) { el.style.visibility = 'visible';}
	else { el.style.visibility  = 'hidden';}
}

/*function collapseAll(objs) {var i; for (i=0;i<objs.length;i++ ) { objs[i].style.display = 'none'; } }
function expandAll(objs) {var i; for (i=0;i<objs.length;i++ ) { objs[i].style.display = ''; } }*/

/*Date/Time checking (European Date Format and Zulu time format)*/
function DateTimeCheck(dl,tl) {
	var b1 = DateCheck(dl);
	if (b1 == false) { alert("Dato er ikke skrevet inn korrekt eller er feil.\nFormatet skal være DD/MM/YYYY"); return b1; }
	var b2 = TimeCheck(tl);
	if (b2 == false) { alert("Klokkeslett er ikke skrevet inn korrekt.\nFormatet skal være HH:MM"); return b2; }
	var b3 = TimeCheck2(tl);
	if (b3 == false) { alert("Klokkeslett er feil. Du kan ikke skrive 24:00 skriv 00:00 istedet for midnatt."); return b3; }
	if (b1 == false || b2 == false || b3 == false) { return false;}
	else { return true; }
}//DateTimeCheck

function DateCheck(el) {
	var v = document.getElementById(el).value;
	var bu = v.toLowerCase();
	var b = false;
	//1. regex to se that the string is in correct format (DD/MM/YYYY)
	if (bu.match(/^((\d{1,2})[\/]{1}(\d{1,2})[\/]{1}(\d{4}))/gi) != null) { b=true;}
	if (bu.length==0) { b=false;}
	
	//2. split array into of 3 elements: DD,MM,YYYY
	if (b) {		
		bu = v.toLowerCase().split("/");
		if (bu.length != 3 || bu.length == undefined) { b=false;}
	}

	//validate that the date itself is a valid date
	if (b) {
		var d = new Date(); //months range from (0 to 11) thats why we need to add & subtract 1 from the monthvalue
		d.setFullYear(bu[2],(bu[1]-1),bu[0]);
		if (bu[2] != d.getFullYear() || bu[1] != (d.getMonth()+1) || bu[0] != d.getDate()) { b=false;}
	}
	return b;
}//DateCheck

function TimeCheck(el) {
	var bu = document.getElementById(el).value.toLowerCase();
	var b = false;
	if (bu.match(/^((\d{1,2})[:]{1}(\d{2}))/gi) != null) { b=true; }
	if (bu.length==0) { b=false; }
	return b;
}//TimeCheck

function TimeCheck2(el) {
	//make sure that time is maximum 23:59 and not 24:00
	var b = true;
	var bu = document.getElementById(el).value.toLowerCase();
	bu = bu.split(":");
	if (bu.length != 2 || bu.length == undefined) { b=false; }
	if (b) {
		var hh = bu[0];
		var mm = bu[1];
		if (hh > 23 || hh < 0) { b=false; }
		if (mm > 59 || mm < 0) { b=false; }
	}
	return b;
}//TimeCheck2



/*Resizing images to fit on a page*/
function fitImage(el,min_W,max_W,stepW) {
	if (el.width < min_W || el.width > max_W) { resizeImage(el,max_W); }
	else { resizeImage(el,stepW); }
}//fitImage

function resizeImage(el,newW) {
	var org_index = el.height/el.width;
	el.width = newW;
	el.height = org_index * newW;
}//resizeImage

function resizeImage2(el,newH) {
	var org_index = el.width/el.height;
	el.height = newH;
	el.width = org_index * newH;
}//resizeImage2

function sizeImage(elm){
	/*Used by the mms.cfm*/
	var min_W = 150; //minimum width an image can have before we reset
	var max_W = 450;//max width an image can have and still fit the page
	var el = document.getElementById(elm);
	var stepW = el.width-(el.width*0.25); //next step width
	if (stepW < min_W) {stepW = min_W-1; }
	if (stepW > max_W) {stepW = max_W; }
	fitImage(el,min_W,max_W,stepW);
}//sizeImage

/*Get browser inner-window size*/
// Browser Window Size and Position (source: http://javascript.about.com/library/blscreen2.htm)
// (C)Stephen Chapman, 3rd Jan 2005, 8th Dec 2005. you may copy these functions but please keep the copyright notice as well
function pageWidth() {
	return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?       document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
}
/*function pageHeight() {
	return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
}
function posLeft() {
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
}
function posTop() {
	return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
}
function posRight() {
	return posLeft()+pageWidth();} function posBottom() {return posTop()+pageHeight();
}
*/
