//#---------------------------------------------------------------------#
//# FlipClock.js							#
//#---------------------------------------------------------------------#
//# Flip Clock 4 YaBB25							#
//# Version 0.1 beta							#
//# by Carsten Dalgaard							#
//#---------------------------------------------------------------------#
//# Copyright: 2011 'Carsten Dalgaard' - All Rights Reserved		#
//# Released: August 20, 2011						#
//# e-mail: post@carsten-dalgaard.dk					#
//#---------------------------------------------------------------------#
//# Any redistribution of this script without the expressed written	#
//# consent of 'Carsten Dalgaard' is strictly prohibited. Copying any	#
//# of the code contained within this script and claiming it as		#
//# your own is also prohibited.					#
//#---------------------------------------------------------------------#
//# By using this script you agree to indemnify 'Carsten Dalgaard'	#
//# from any liability that might arise from its use.			#
//#---------------------------------------------------------------------#
//# You may not remove any of these header notices.			#
//#---------------------------------------------------------------------#


	var delEnh=110, totEnh=110;
	var eleNum = 11, theNum = 11, ele;

	function clockSettings() {
		if(document.getElementById("fcsettings").style.display == 'none') {
			document.getElementById("fcsettings").style.display = 'block';
		}
		else {
			document.getElementById("fcknapImg").style.left = knapleft;
			document.getElementById("fc_creator").reset();
			document.getElementById("fcsettings").style.display = 'none';
		}
	}

	function fcShowVol() {
		eleDiv = totEnh/eleNum;
		ele = Math.round(delEnh/eleDiv);
		if (ele < 0) ele = 0;
		if (ele >= eleNum) ele = eleNum-1;
		if (knapObj.id == "fcknapImg" && ele != theNum) {
			theNum = ele;
			document.getElementById("clickvol").value = theNum;
			if(theNum > 0) realvol = new Number(theNum) / 10;
			else realvol = 0;
			document.getElementById("fc_clicksound").value = realvol;
		}
	}

	var op = ( navigator.userAgent.indexOf( 'Opera' ) != -1 );
	var ns6 = ( document.getElementById && !document.all );
	var ie = ( document.all && !op );

	var skydNu = false;
	var x, knapObj, flytobj, retning;

	function fcStopVol() {
		skydNu=false;
		if (flytobj.className == "fcskyd") knapObj.style.left = parseInt((realvol * 100) + 4) + 'px';
	}

	function fcFlytKnap(e) {
		if (skydNu) {
			glX = parseInt(knapObj.style.left+0);
			nyX = ns6 ? temp2 + e.clientX - x : temp2 + event.clientX - x;
			knapObj.style.left = parseInt(nyX+0) + 'px';
			if (nyX > glX) retning = "vn"; else retning = "hj";
			if (nyX < 4 && retning == "hj") { knapObj.style.left = 4 + 'px'; retning = "vn"; }
			if (nyX > 104 && retning == "vn") { knapObj.style.left = 104 + 'px'; retning = "hj"; }
			delEnh = parseInt(knapObj.style.left+0)-4;
			fcShowVol();
			document.onmouseup = fcStopVol;
			return false;
		}
	}

	function fcSkydeKnap(e){
		flytobj = ns6 ? e.target : event.srcElement;
		if (flytobj.className == "fcskyd"){
			skydNu = true;
			knapObj = flytobj;
			temp2 = parseInt(knapObj.style.left+0);
			x = ns6 ? e.clientX : event.clientX;
			document.onmousemove = fcFlytKnap;
			return false;
		}
	}

	if (ns6) onmousedown=fcSkydeKnap;

	var setkl4, setkl3, setkl2, setkl1;
 	var klaprun, writerun, fliprun4, fliprun4u, fliprun3, fliprun3u, fliprun2, fliprun2u, fliprun1, fliprun1u, flipdelay;
	var flipspeed = 15;
	var flipgrow = 1;
	var flipheight = parseInt(document.getElementById('kl1l').style.height);
	var ampmone;
	var KlOurTime;
	var KlYaBBTime = new Date();
	var KlTimeDif;
	var timeformat;

	function lessTen(number) {
		if (number < 10) number = '0' + number;
		return number;
	}

	Date.prototype.getDOY = function() {
		var onejan = new Date(this.getFullYear(),0,1);
		return Math.ceil((this - onejan) / 86400000);
	}

	Date.prototype.stdTimezoneOffset = function() {
		var jan = new Date(this.getFullYear(), 0, 1);
		var jul = new Date(this.getFullYear(), 6, 1);
		return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
	}

	Date.prototype.dst = function() {
		return this.getTimezoneOffset() < this.stdTimezoneOffset();
	}

	function klapdate() {
		var kldaytxt = '';
		var kldate = new Date();
		KlOurTime = new Date();
		KlOurTime = KlOurTime.getTime() - KlTimeDif;
		kldate.setTime(KlOurTime);
		var klsday = kldate.getDate();
		var klwday = kldate.getDay();
		var klsmonth = kldate.getMonth();
		var klyear = kldate.getYear();
		var klday = lessTen(klsday);
		var klmonth = lessTen(klsmonth+1);
		var kllmonth = klapmonth[kldate.getMonth()];
		var klyear = klyear % 100;
		var kllyear = klyear;
		klyear = lessTen(klyear);
		kllyear += (kllyear < 38) ? 2000 : 1900;
		if(timeselect == 1) { kldaytxt = klmonth + '/' + klday + '/' + klyear; }
		else if(timeselect == 2) { kldaytxt = klday + '.' + klmonth + '.' + klyear; }
		else if(timeselect == 3) { kldaytxt = klday + '.' + klmonth + '.' + kllyear; }
		else if(timeselect == 4 || timeselect == 8) {
			if (klsday > 10 && klsday < 20) klsday += timetxt4;
			else if (klsday % 10 == 1) klsday += timetxt1;
			else if (klsday % 10 == 2) klsday += timetxt2;
			else if (klsday % 10 == 3) klsday += timetxt3;
			else klsday += timetxt4;
			if(timeselect == 4) kldaytxt = kllmonth + ' ' + klsday + ', ' + kllyear;
			if(timeselect == 8) kldaytxt = klsday + ' ' + kllmonth + ', ' + kllyear;
		}
		else if(timeselect == 5) { kldaytxt = klmonth + '/' + klday + '/' + klyear; }
		else if(timeselect == 6) { kldaytxt = klday + '. ' + kllmonth + ' ' + kllyear; }
		else if(timeselect == 7) {
			var today = new Date();
			var yearday = today.getDOY();
			var newweek = parseInt((yearday + 1 - klwday) / 7) + 1;
			timeformat=timeformat.replace(/ww/g, newweek);
			timeformat = timeformat.replace(/YYYY/g, kllyear);
			timeformat = timeformat.replace(/YY/g, klyear);
			if(timeformat.match(/MM/g)) timeformat = timeformat.replace(/MM/g, kllmonth);
			timeformat = timeformat.replace(/SDT/g, '');
			timeformat = timeformat.replace(/LDT/g, '');
			timeformat = timeformat.replace(/DD/g, klsday);
			timeformat = timeformat.replace(/D/g, klsday);
			timeformat = timeformat.replace(/\:/g, '');
			if(timeformat.match(/\+/g)) {
				if (klsday > 10 && klsday < 20) dayext = timetxt4;
				else if (klsday % 10 == 1) dayext = timetxt1;
				else if (klsday % 10 == 2) dayext = timetxt2;
				else if (klsday % 10 == 3) dayext = timetxt3;
				else dayext = timetxt4;
			}
			timeformat = timeformat.replace(/\+/g, dayext);
			timeformat = timeformat.replace(/hh/g, '');
			timeformat = timeformat.replace(/HH/g, '');
			timeformat = timeformat.replace(/\@/g, '');;
			timeformat = timeformat.replace(/mm/g, '');
			timeformat = timeformat.replace(/ss/g, '');
			if(timeformat.match(/\*/g)) {
				if (kldate.dst && dsttimeoffset != 0) document.getElementById('dstimg').src = klimgdir + 'dst.png';
				else document.getElementById('dstimg').src = klimgdir + 'dstbl.png';
			}
			else document.getElementById('dstimg').src = klimgdir + 'dstbl.png';
			timeformat = timeformat.replace(/\*/g, '');
			kldaytxt = timeformat;
		}
		document.getElementById("klapdate").innerHTML = kldaytxt;
	}

	function FlipKlap1u() {
		var newheight1 = parseInt(document.getElementById('kl1u').style.height) - flipgrow;
		var newmarg1 = flipheight - newheight1;
		if(newheight1 <= 0) {
			clearInterval(fliprun1u);
			newheight1 = 0;
			document.getElementById('kl1u').src = klimgdir + setkl1 + '_u.png';
			document.getElementById('kl1u').style.marginTop = '0px';
			document.getElementById('kl1u').style.height = flipheight + 'px';
			document.getElementById('kl1l').style.height = '3px';
			document.getElementById('kl1l').src = klimgdir + setkl1 + '_l.png';
			fliprun1 = setInterval("FlipKlap1()", flipspeed);
		}
		document.getElementById('kl1u').style.marginTop = newmarg1 + 'px';
		document.getElementById('kl1u').style.height = newheight1 + 'px';
	}

	function FlipKlap1() {
		var newheight1 = parseInt(document.getElementById('kl1l').style.height) + flipgrow;
		if(newheight1 >= flipheight) { clearInterval(fliprun1); newheight1 = flipheight; }
		document.getElementById('kl1l').style.height = newheight1 + 'px';
	}

	function WriteKlapHourTen() {
		clearInterval(flipdelay);
		FlipSound();
		document.getElementById('klap1l').style.backgroundImage = 'url(' + document.getElementById("kl1l").src + ')';
		document.getElementById('klap1l').style.backgroundRepeat = 'no-repeat';
		document.getElementById('klap1u').style.backgroundImage = 'url(' + klimgdir + setkl1 + '_u.png)';
		document.getElementById('klap1u').style.backgroundRepeat = 'no-repeat';
		fliprun1u = setInterval("FlipKlap1u()", flipspeed + 5);
	}

	function FlipKlap2u() {
		var newheight2 = parseInt(document.getElementById('kl2u').style.height) - flipgrow;
		var newmarg2 = flipheight - newheight2;
		if(newheight2 <= 0) {
			clearInterval(fliprun2u);
			newheight2 = 0;
			document.getElementById('kl2u').src = klimgdir + setkl2 + '_u.png';
			document.getElementById('kl2u').style.marginTop = '0px';
			document.getElementById('kl2u').style.height = flipheight + 'px';
			document.getElementById('kl2l').style.height = '3px';
			document.getElementById('kl2l').src = klimgdir + setkl2 + '_l.png';
			fliprun2 = setInterval("FlipKlap2()", flipspeed);
		}
		document.getElementById('kl2u').style.marginTop = newmarg2 + 'px';
		document.getElementById('kl2u').style.height = newheight2 + 'px';
	}

	function FlipKlap2() {
		var newheight2 = parseInt(document.getElementById('kl2l').style.height) + flipgrow;
		if(newheight2 >= flipheight) { clearInterval(fliprun2); newheight2 = flipheight; }
		document.getElementById('kl2l').style.height = newheight2 + 'px';
	}

	function WriteKlapHourOne() {
		clearInterval(flipdelay);
		FlipSound();
		document.getElementById('klap2l').style.backgroundImage = 'url(' + document.getElementById("kl2l").src + ')';
		document.getElementById('klap2l').style.backgroundRepeat = 'no-repeat';
		document.getElementById('klap2u').style.backgroundImage = 'url(' + klimgdir + setkl2 + '_u.png)';
		document.getElementById('klap2u').style.backgroundRepeat = 'no-repeat';
		fliprun2u = setInterval("FlipKlap2u()", flipspeed + 5);
		klapdate();
		if(setkl2 == 0 || ampmone) {
			flipdelay = setInterval("WriteKlapHourTen()", 500);
		}
	}

	function FlipKlap3u() {
		var newheight3 = parseInt(document.getElementById('kl3u').style.height) - flipgrow;
		var newmarg3 = flipheight - newheight3;
		if(newheight3 <= 0) {
			clearInterval(fliprun3u);
			newheight3 = 0;
			document.getElementById('kl3u').src = klimgdir + setkl3 + '_u.png';
			document.getElementById('kl3u').style.marginTop = '0px';
			document.getElementById('kl3u').style.height = flipheight + 'px';
			document.getElementById('kl3l').style.height = '3px';
			document.getElementById('kl3l').src = klimgdir + setkl3 + '_l.png';
			fliprun3 = setInterval("FlipKlap3()", flipspeed);
		}
		document.getElementById('kl3u').style.marginTop = newmarg3 + 'px';
		document.getElementById('kl3u').style.height = newheight3 + 'px';
	}

	function FlipKlap3() {
		var newheight3 = parseInt(document.getElementById('kl3l').style.height) + flipgrow;
		if(newheight3 >= flipheight) { clearInterval(fliprun3); newheight3 = flipheight; }
		document.getElementById('kl3l').style.height = newheight3 + 'px';
	}

	function WriteKlapMinTen() {
		clearInterval(flipdelay);
		FlipSound();
		document.getElementById('klap3l').style.backgroundImage = 'url(' + document.getElementById("kl3l").src + ')';
		document.getElementById('klap3l').style.backgroundRepeat = 'no-repeat';
		document.getElementById('klap3u').style.backgroundImage = 'url(' + klimgdir + setkl3 + '_u.png)';
		document.getElementById('klap3u').style.backgroundRepeat = 'no-repeat';
		fliprun3u = setInterval("FlipKlap3u()", flipspeed + 5);
		if(setkl3 == 0) {
			flipdelay = setInterval("WriteKlapHourOne()", 500);
		}
	}

	function FlipKlap4u() {
		var newheight4 = parseInt(document.getElementById('kl4u').style.height) - flipgrow;
		var newmarg4 = flipheight - newheight4;
		if(newheight4 <= 0) {
			clearInterval(fliprun4u);
			newheight4 = 0;
			document.getElementById('kl4u').src = klimgdir + setkl4 + '_u.png';
			document.getElementById('kl4u').style.marginTop = '0px';
			document.getElementById('kl4u').style.height = flipheight + 'px';
			document.getElementById('kl4l').style.height = '3px';
			document.getElementById('kl4l').src = klimgdir + setkl4 + '_l.png';
			fliprun4 = setInterval("FlipKlap4()", flipspeed);
		}
		document.getElementById('kl4u').style.marginTop = newmarg4 + 'px';
		document.getElementById('kl4u').style.height = newheight4 + 'px';
	}

	function FlipKlap4() {
		var newheight4 = parseInt(document.getElementById('kl4l').style.height) + flipgrow;
		if(newheight4  >= flipheight) { clearInterval(fliprun4); newheight4 = flipheight; }
		document.getElementById('kl4l').style.height = newheight4 + 'px';
	}

	function WriteKlapMinOne() {
		FlipSound();
		document.getElementById('klap4l').style.backgroundImage = 'url(' + document.getElementById("kl4l").src + ')';
		document.getElementById('klap4l').style.backgroundRepeat = 'no-repeat';
		document.getElementById('klap4u').style.backgroundImage = 'url(' + klimgdir + setkl4 + '_u.png)';
		document.getElementById('klap4u').style.backgroundRepeat = 'no-repeat';
		fliprun4u = setInterval("FlipKlap4u()", flipspeed + 5);
		if(setkl4 == 0) {
			flipdelay = setInterval("WriteKlapMinTen()", 500);
		}
	}

	var ampm;

	function WriteKlap() {
		ampmone = false;
		KlOurTime = new Date();
		KlOurTime = KlOurTime.getTime() - KlTimeDif;
		KlYaBBTime.setTime(KlOurTime);
		var klhour = KlYaBBTime.getHours();
		if (apm != '') {
			ampm = ( klhour < 12 ) ? "am" : "pm";
			klhour = klhour % 12 || 12;
			if(klhour == 1) ampmone = true;
		}
		if (klhour < 10) klhour = "0" + klhour;
		var strklhour = klhour.toString();
		var klmin = KlYaBBTime.getMinutes();
		var stklmin = klmin;
		if (klmin < 10) stklmin  = "0" + klmin;
		var strklmin = stklmin.toString();
		setkl4 = strklmin.substring(1,2);
		setkl3 = strklmin.substring(0,1);
		setkl2 = strklhour.substring(1,2);
		setkl1 = strklhour.substring(0,1);
		if(apm != '') {
			if(setkl1 == '0') setkl1 = 'bl';
			if(ampm == 'am') {
				document.getElementById('amdiv').className = 'ampm_bright';
				document.getElementById('pmdiv').className = 'ampm_dimm';
			}
			else {
				document.getElementById('pmdiv').className = 'ampm_bright';
				document.getElementById('amdiv').className = 'ampm_dimm';
			}
		}
		else {
				document.getElementById('amdiv').style.display = 'none';
				document.getElementById('pmdiv').style.display = 'none';
		}
		WriteKlapMinOne();
	}

	function StartFlipClock() {
		KlOurTime = new Date();
		KlOurTime = KlOurTime.getTime() - KlTimeDif;
		KlYaBBTime.setTime(KlOurTime);
		var klsec  = KlYaBBTime.getSeconds();
		if(klsec == 4) {
			clearInterval(klaprun);
			WriteKlap();
			writerun = setInterval("WriteKlap()", 60000);
		}
	}

	function FlipSound() {
		if(clvol == 0) return;
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
			var ieversion = new Number(RegExp.$1);
			if (ieversion < 9) {
				return;
			}
		}
		if (navigator.appName == "Microsoft Internet Explorer") {
			document.getElementById('ieflipsound').volume = clvol;
			document.getElementById('ieflipsound').play();
		}
		else {
			document.getElementById('flipsound').volume = clvol;
			document.getElementById('flipsound').play();
		}
	}

	function initKlapdate(fc_date, fc_toffs, fc_timeformat) {
		KlOurTime = (fc_date + (3600 * fc_toffs)) * 1000;
		KlTimeDif = KlYaBBTime.getTime() - (KlYaBBTime.getTimezoneOffset() * 60000) - KlOurTime - 1000;
		timeformat = fc_timeformat;
		klapdate();
		klaprun = setInterval("StartFlipClock()", 1000);
	}

