// JavaScript Document

// appendix: delen die nodig zijn om bepaalde funties uit te werken
function days(d,l){switch(l){
	case"en":x=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");break;
	case"fr":x=new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samdi");break;
	case"nl":x=new Array("Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag");break;
	case"du":x=new Array("Sonntag","Mondag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");break;
	case"es":x=new Array("Domingo","Lunes","Martes","Mi&eacute;rcoles","Jueves","Viernes","Sabato");break;
	case"it":x=new Array("Domenica","Lunedi","Martedi;","Miercoledi;","Giovedi","Venerdi;","Sabato");break;
	default:x=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");break}return x[d]}
function mnds(d,l){switch(l){
	case"en":x=new Array("January","February","March","April","May","June","July","August","September","Oktober","November","December");break;
	case"fr":x=new Array("janvier","fevrier","mars","avril","mai","juin","juillet","aout","septembre","oktobre","novembre","decembre");break;
	case"nl":x=new Array("januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december");break;
	case"du":x=new Array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");break;
	case"es":x=new Array("enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","deciembre");break;
	case"it":x=new Array("gennáio","febbrário","marzo","aprile","maggio","guigno","luglio","agosto","settembre","ottobre","novembre","dicembre");break;
	default:x=new Array("January","February","March","April","May","June","July","August","September","Oktober","November","December");break}return x[d]}
//====================================================

// Tabel 1, temperatuursconversies
function c2d(c){return (100-c)*(3/2)}function c2f(c){return c*1.8+32}function c2k(c){return c+273.15}function c2ra(c){return c*1.8+491.67}function c2re(c){return c*(4/5)}function c2ro(c){return c*(21/40)+7.5}
function d2c(d){return 100-d*(2/3)}function d2f(d){return 212-d*6/5}function d2k(d){return 373.15-d*(2/3)}function d2ra(d){return 671.67-d*(6/5)}function d2re(d){return 80-d*(8/15)}function d2ro(d){return 60-d*(7/20)}
function f2c(f){return (f-32)/1.8}function f2d(f){return (212-f)*5/6}function f2k(f){return ((f-32)/1.8)+273.15}function f2ra(f){return f+459.67}function f2re(f){return (f-32)*(4/9)}function f2ro(f){return (f-32)*(7/24)+7.5}
function k2c(k){return k-273.15}function k2d(k){return (373.15-k)*(3/2)}function k2f(k){return (k-273.15)*1.8+32}function k2ra(k){return k*(9/5)}function k2re(k){return (k-273.15)*(4/5)}function k2ro(k){return (k-273.15)*(21/40)+7.5}
function ra2c(ra){return (ra-491.67)/1.8}function ra2d(ra){return (671.67-ra)*(5/6)}function ra2f(ra){return ra-459.67}function ra2k(ra){return ra*(5/9)}function ra2re(ra){return (ra-491.67)/2.25}function ra2ro(ra){return (ra-491.67)*(7/24)+7.5}
function re2c(re){return re*(5/4)}function re2d(re){return (80-re)*(15/8)}function re2f(re){return re*(9/4)+32}function re2k(re){return re*(5/4)+273.15}function re2ra(re){return re*2.25+491.67}function re2ro(re){return re*(21/32)+7.5}
function ro2c(ro){return (ro-7.5)*(40/21)}function ro2d(ro){return (60-ro)*(20/7)}function ro2f(ro){return (ro-7.5)*(24/7)+32}function ro2k(ro){return (ro-7.5)*(40/21)+273.15}function ro2ra(ro){return (ro-7.5)*(24/7)+491.67}function ro2re(ro){return (ro-7.5)*(32/21)}
//====================================================

// Tabel 2
function oppTetraeder(r){return Math.pow(r,2)*Math.sqrt(3)} // tetraëder = viervlak bestaande uit 4 gelijkzijdige driehoeken
function volTetraeder(r){return Math.pow(r,3)*Math.SQRT2/12}
function oppHexaeder(r){return 6*Math.pow(r,2)}//6-vlak
function volHexaeder(r){return Math.pow(r,3)}//6-vlak
function oppOctaeder(r){return Math.pow(r,2)*2*Math.sqrt(3)} // 8-vlak
function volOctaeder(r){return Math.pow(r,3)*Math.SQRT2/3} // 8-vlak
function oppDodecaeder(r){return 3*Math.sqrt(25+10*Math.sqrt(5))*Math.pow(r,2)}// 12-vlak
function volDodecaeder(r){return (15+7*Math.sqrt(5))*Math.pow(r,2)/4}// 12-vlak
function oppIcosaeder(r){return 5*Math.sqrt(3)*Math.pow(r,2)}// 20-vlak
function volIcosaeder(r){return 5*(3+Math.sqrt(5))*Math.pow(r,3)/12} //20-vlak
//====================================================

//Tabel 3
function isPrime(c){var p=true;c=parseInt(c);var v=Math.ceil(Math.sqrt(c));if(c>2){for(var x1=3;x1<=v;x1+=2){if(c%x1==0){p=false; break}}}else{if(c==2){p=true}if((c==0)||(c==1)){p=false}}if(p){return c=true}else{return c=false}}
function isEven(x){return x%2==0?true:false}
function isOdd(x){return x%2==0?false:true}
function isLeapYear(x){if(x>=1582){return((x%4==0)||(x%400==0))?true:false;}else{return "Not defined"}} // vanaf gregoriaanse kalender 1582
//====================================================

//Tabel 4a en 4b
function mm2mile (c){return c/1609344}function mm2chain (c){return c/20116.8}function mm2yard (c){return c/914.4}function mm2feet (c){return c/304.8}function mm2inch (c){return c/25.4}
function mm2m(c){return c*1e-3}function mm2km(c){return c*1e-6}function m2km(c){return c*1e-3}function m2mm(c){return c*1e3}function km2mm(c){return c*1e6}function km2m(c){return c*1e3}
function m2mile (c){return c/1609.344}function m2chain (c){return c/20.1168}function m2yard (c){return c/.9144}function m2feet (c){return c/.3048}function m2inch (c){return c/.0254}
function km2mile (c){return c/1.609344}function km2chain (c){return c/.0201168}function km2yard (c){return c/.9144e-3}function km2feet (c){return c/.3048e-3}function km2inch (c){return c/.0254e-3}
function inch2mile(c){return c/63360}function inch2chain(c){return c/792}function inch2yard(c){return c/36}function inch2feet(c){return c/12}
function feet2mile(c){return c/5280}function feet2chain(c){return c/66}function feet2yard(c){return c/3}function feet2inch(c){return c*12}
function yard2mile(c){return c/1760}function yard2chain(c){return c/22}function yard2feet(c){return c*3}function yard2inch(c){return c*36}
function chain2mile(c){return c/80}function chain2yard(c){return c*22}function chain2feet(c){return c*66}function chain2inch(c){return c*792}
function mile2chain(c){return c*80}function mile2yard(c){return c*1760}function mile2feet(c){return c*5280}function mile2inch(c){return c*63360}
function mile2mm(c){return c*1609344}function chain2mm(c){return c*20116.8}function yard2mm(c){return c*914.4}function feet2mm(c){return c*304.8}function inch2mm(c){return c*25.4}
function mile2m(c){return c*1609.344}function chain2m(c){return c*20.1168}function yard2m(c){return c*.9144}function feet2m(c){return c*.3048}function inch2m(c){return c*.0254}
function mile2km(c){return c*1.609344}function chain2km(c){return c*.0201168}function yard2km(c){return c*.9144e-3}function feet2km(c){return c*.3048e-3}function inch2km(c){return c*.0254e-3}
//====================================================
// Tabel 5: Datum en tijd
function now2ms(){var t=new Date();return t.getTime()}
function todayDateLong(l){var t=new Date();var y=t.getFullYear();var m=t.getMonth();var dt=t.getDate();var d=t.getDay();return days(d,l)+" "+dt+" "+mnds(m,l)+" "+y}
function todayDateShort(t){t=new Date();var y=t.getFullYear();var m=t.getMonth();var d=t.getDate();m=m<10?"0"+m:""+m;d=d<10?"0"+d:""+d;return d+"-"+m+"-"+y}
function todayTime(t){t=new Date();var h=t.getHours();var m=t.getMinutes();var s=t.getSeconds();h=h<10?"0"+h:""+h;m=m<10?"0"+m:""+m;s=s<10?"0"+s:""+s;return h+":"+m+":"+s}
function todayDateTimeLong(l){return todayDateLong(l)+"   "+todayTime()}
function todayDateTimeShort(t){return todayDateShort()+"   "+todayTime()}
//====================================================
// Table 6: allerlei
function fibonacci(c){return Math.round((Math.pow(1+Math.sqrt(5),c-1)-Math.pow(1-Math.sqrt(5),c-1))/(Math.pow(2,c-1)*Math.sqrt(5)))}
function pytagoras(c1,c2){return Math.sqrt(Math.pow(c1,2)+Math.pow(c2,2))}
function mean(c1,c2){return (c1+c2)/2}
function discriminant(a,b,c,f){var d=Math.pow(b,2)-4*a*c;if(d<0){return "D = "+d+"; no values"}if(d==0){return "D = "+d+"; one value: "+((-b)/(2*a)).toFixed(f)}if(d>0){var x1=Math.sqrt(Math.pow(b,2)-4*a*c)-b/(2*a);var x2=(Math.sqrt(Math.pow(b,2)-4*a*c)+b)*(-1)/(2*a);return "D = "+d+"; two values: x1 = "+x1.toFixed(f)+" and x2 = "+x2.toFixed(f)}}
function gcd(a,b){while(a!=b){if(a>b){a=a-b}else{b=b-a}}return a}function lcm(a,b){return a*b/gcd(a,b)}
function randomLowHigh(l,h){return Math.floor(Math.random()*(h-l+1))+l} // low and high walue included
function gF3(a,b,c){var g=a>b?a:b;g=g>c?g:c;return g} // greatest from 3
//====================================================

// Tabel 7: determinant
function det3x3(x11,x12,x13,x21,x22,x23,x31,x32,x33){return x11*x22*x33+x12*x23*x31+x13*x21*x32-x13*x22*x31-x12*x21*x33-x11*x23*x32}
//====================================================
// Tabel 8, oppervlakte
function oppVierkant(z){return z*z}
function oppRechthoek(b,h){return b*h}
function oppTrapezium(l1,l2,h){return (l1+l2)*h/2}
function oppVeelhoek(n,z){return n*z*Math.tan(Math.PI*(n-2)/(2*n))}
function oppParallellogram(b,h){return b*h}
function oppCirkel(r){return Math.PI*r*r}
function oppBol(r){return 4*Math.PI*r*r}
function oppBuis(r,h){return 2*Math.PI*r*h} // Buis is cilinder zonder grond- en bovenvlak
function oppCilinder(r,h){return 2*Math.PI*r*(r+h)}
function oppKegel(r,h){return Math.PI*r*(Math.sqrt(r*r+h*h))}
function oppDriehoek1(b,h){return b*h/2}
function oppDriehoek2(a,b,c){if((a==gF3(a,b,c)&&(b+c>=a))||(b==gF3(a,b,c)&&(a+c>=b))||(c==gF3(a,b,c)&&(a+b>=c))){var p=(a+b+c)/2;return Math.sqrt(p*(p-a)*(p-b)*(p-c))}else{return -1}} //oppDriehoek2: if -1 => Een waarde te groot
//====================================================
// tabel 9
function abc2r(a,b,c){return (a*b*c)/(4*oppDriehoek2(a,b,c))} // drie punten bepalen een driehoek, wat is de straal van de omschreven cirkel => abc2r(a,b,c)
//====================================================

// Tabel 10: volumes
function volBalk(l,b,h){return l*b*h}
function volKubus(z){return z*z*z}
function volCilinder(h,r){return Math.PI*r*r*h}
function volKegel(h,r){return Math.PI*r*r*h/3}
function volAfgeknotteKegel(rg,rb,h){return Math.PI*h*(rg*rg+rg*rb+rb*rb)/3}
function volBol(r){return Math.PI*Math.pow(r,3)*4/3}
//====================================================

// tabel 11: datum- en tijdsfuncties
function thisSecond(){var n=new Date();var s=n.getSeconds();return s<10?"0"+s:""+s;}
function thisMinute(){var n=new Date();var m=n.getMinutes();return m<10?"0"+m:""+m}
function thisHour(){var n=new Date();var h=n.getHours();return h<10?"0"+h:""+h;}
function thisDate(){var n=new Date();var d=n.getDate();return d<10?"0"+d:""+d;}
function thisDay(){var n=new Date();var d=n.getDay();return d}
function thisMonth(){var n=new Date();var m=n.getMonth()+1;return m<10?"0"+m:""+m}
function thisYear(){var n=new Date();var y=n.getYear();return y<10?"0"+y:""+y}
function thisFullYear(){var n=new Date();var y=n.getFullYear();return y<10?"0"+y:""+y}
//====================================================

// tabel 12
function dayOfYear(){var n=new Date();n.setYear(n.getFullYear());n.setMonth(0);n.setDate(1);return Math.round(Math.abs(now2ms()-n.getTime())/864e5)}
function isLeapYear(x){if(x>=1582){return((x%4==0)||(x%400==0))?true:false;}else{return "Not defined"}} // vanaf gregoriaanse kalender 1582
//====================================================

// tabel 13
function digits(d,l){switch(l){
	case"en":x=new Array("zero","one","two","three","four","five","six","seven","eight","nine");break;
	case"fr":x=new Array("zéro","un","deux","trois","quatre","cinq","six","sept","huit","neuf");break;
	case"nl":x=new Array("nul","een","twee","drie","vier","vijf","zes","zeven","acht","negen");break;
	default:x=new Array("zero","one","two","three","four","five","six","seven","eight","nine");break}return x[d]}
function digit2word(d,l){var c="";d=""+d;for(var x1=0;x1<=(d.length-1);x1++){if((d.charAt(x1)>="0")&&(d.charAt(x1)<="9")){c=c+digits(d.charAt(x1),l)+" ";}else{c=c+d.charAt(x1)+" ";}}return c}
//====================================================
// tabel 14
function kmpu2mps(k){return k/3.6}function mps2kmpu(m){return m*3.6}function kmpu2mph(k){return k/1.609344}function mph2kmpu(m){return m*1.609344}
//====================================================


//21.10.2010
function anyDay2ms(y,m,d,h,mn,s)
{
	var t=new Date();
	if(y>=1970)
	{
		t.setYear(y);
		//alert(m);
		t.setMonth(m-1);
		t.setDate(d);h=0;
		t.setHours(h);
		t.setMinutes(mn);
		t.setSeconds(s);
		return t.getTime(t)}else{return -1}
	}
function diffDays(y1,m1,d1,h1,mn1,s1,y2,m2,d2,h2,mn2,s2){return Math.round(Math.abs(anyDay2ms(y1,m1,d1,h1,mn1,s1)-anyDay2ms(y2,m2,d2,h2,mn2,s2))/864e5)}

function days2newYear(){var n=new Date();n.setYear(n.getFullYear()+1);n.setMonth(0);n.setDate(1);return Math.round(Math.abs(now2ms()-n.getTime())/864e5)}

function anyDayOfYear(y,m,d,h,mn,s){var n=new Date();n.setYear(n.getFullYear());n.setMonth(0);n.setDate(1);return Math.round(Math.abs(anyDay2ms(y,m,d,h,mn,s)-n.getTime())/864e5)}
// 23.10.2010
function daysPlus(dp)
{
	var l="nl";
	var n=new Date();
	n.setTime(now2ms()+(dp*864e5));
	var y=n.getFullYear();
	var m=n.getMonth();
	var dt=n.getDate();
	var d=n.getDay();
	return days(d,l)+" "+dt+" "+mnds(m,l)+" "+y
}
function timeUntil(y,m,d,h,mn,s)
{
	var t01=anyDay2ms(y,m,d,h,mn,s);
	var t02=now2ms();
	//var t1=anyDay2ms(y,m,d,h,mn,s)-now2ms();
	//var t2=Math.abs(t1);
	//var d1=Math.round(t2/864e5);
	//d1=d1<10?"0"+d1:""+d1;
	//var rest=Math.abs(t2)%864e5;
	//var h1=Math.round(rest/36e5);
	//h1=h1<10?"0"+h1:""+h1;
	//rest = t1%36e5;
	//var mn1=Math.round(rest/6e4);
	//mn1=mn1<10?"0"+mn1:""+mn1;
	//rest = t1%6e4;
	//var s1=Math.round(rest/1e3);
	//s1=s1<10?"0"+s1:""+s1;
	return t01+" - "+t02+" = "+(t01-t02)/(60000*60);
	
//	if(t1>=0){return d1+":"+h1+":"+mn1+":"+s1}else{return -1}
}

//26.11.2010



