/*
 *
 * THIS FILE CONTAINS THE IMPLEMENTATION OF THE SLIDE EFFECT OF THE CALENDAR
 *
 *
 */

var r = ""; // repeat
var d = ""; // day
var e = ""; // enddate
var h = "";

function update_info() {
	if(d == "") {
		if(e == "") {
			document.getElementById("inforepeat").innerHTML = r;
		} else {
			document.getElementById("inforepeat").innerHTML = r + " tot " + e;
		}
	} else {
		if(r == "Maandelijks") {
			if(e == "") {
				document.getElementById("inforepeat").innerHTML = r + ", " + h + " " + d + " van de maand";
			} else {
				document.getElementById("inforepeat").innerHTML = r + ", " + h + " " + d + " van de maand, tot " + e;
			}
		} else {
			if(e == "") {
				document.getElementById("inforepeat").innerHTML = r + ", elke " + d;
			} else {
				document.getElementById("inforepeat").innerHTML = r + ", elke " + d + " tot " + e;
			}
		}
	}
}

function set_r(txt) {
	r = txt;
}
function set_d(txt) {
	d = txt;
}
function set_e(txt) {
	e = txt;
}
function set_h(txt) {
	h = txt;
}

var daily  = "<table><tr><td><b>Herhalen tot:</b></td><td>&nbsp;&nbsp;</td>";
    daily += "<td><input type=\"radio\" name=\"endrepeat\" value=\"forever\" onclick=\"set_e(''); update_info();\" checked />&nbsp;Altijd</td></tr>";
	 daily += "<tr><td></td><td>&nbsp;&nbsp;</td><td><input type=\"radio\" name=\"endrepeat\" value=\"until\"";
	 daily += "onclick=\"document.getElementsByName('endrepeatdate')[0].focus();displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"/>&nbsp;tot:&nbsp;";
	 daily += "<input type=\"text\" name=\"endrepeatdate\" class=\"datetime\" onclick=\"displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"";
	 daily += "onchange=\"set_e(this.value);update_info();\" /></td></tr></table><div id=\"inforepeat\"></div>";

var weekly  = "<b>Op:</b> <input type=\"radio\" name=\"day\" value=\"monday\" onclick=\"set_d('maandag');update_info();\" checked> Ma ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"tuesday\" onclick=\"set_d('dinsdag');update_info();\"> Di ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"wednesday\" onclick=\"set_d('woensdag');update_info();\"> Wo ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"thursday\" onclick=\"set_d('donderdag');update_info();\"> Do ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"friday\" onclick=\"set_d('vrijdag');update_info();\"> Vr ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"saturday\" onclick=\"set_d('zaterdag');update_info();\"> Za ";
	 weekly += "<input type=\"radio\" name=\"day\" value=\"sunday\" onclick=\"set_d('zondag');update_info();\"> Zo ";
 	 weekly += "<br /><br /><table><tr><td><b>Herhalen tot:</b></td><td>&nbsp;&nbsp;</td>";
    weekly += "<td><input type=\"radio\" name=\"endrepeat\" value=\"forever\" onclick=\"set_e('');update_info();\" checked />&nbsp;Altijd</td></tr>";
	 weekly += "<tr><td></td><td>&nbsp;&nbsp;</td><td><input type=\"radio\" name=\"endrepeat\" value=\"until\"";
	 weekly += "onclick=\"document.getElementsByName('endrepeatdate')[0].focus();displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"/>&nbsp;tot:&nbsp;";
	 weekly += "<input type=\"text\" name=\"endrepeatdate\" class=\"datetime\" onclick=\"displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"";
	 weekly += "onchange=\"set_e(this.value);update_info();\" /></td></tr></table>";
	 weekly += "<div id=\"inforepeat\"></div>";

var monthly  = "<b>Op </b><select name=\"how\" onchange=\"set_h(this.options[this.selectedIndex].value);update_info();\">";
	 monthly += "<option value=\"eerste\">Eerste</option><option value=\"tweede\">Tweede</option><option value=\"derde\">Derde</option>";
	 monthly += "<option value=\"vierde\">Vierde</option><option value=\"vijfde\">Vijfde</option></select><br /> <input type=\"radio\" name=\"day\" value=\"monday\" onclick=\"set_d('maandag');update_info();\" checked> Ma ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"tuesday\" onclick=\"set_d('dinsdag');update_info();\"> Di ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"wednesday\" onclick=\"set_d('woensdag');update_info();\"> Wo ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"thursday\" onclick=\"set_d('donderdag');update_info();\"> Do ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"friday\" onclick=\"set_d('vrijdag');update_info();\"> Vr ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"saturday\" onclick=\"set_d('zaterdag');update_info();\"> Za ";
	 monthly += "<input type=\"radio\" name=\"day\" value=\"sunday\" onclick=\"set_d('zondag');update_info();\"> Zo ";
 	 monthly += "<br />&nbsp;&nbsp;van de maand.<br /><br /><table><tr><td><b>Herhalen tot:</b></td><td>&nbsp;&nbsp;</td>";
    monthly += "<td><input type=\"radio\" name=\"endrepeat\" value=\"forever\" onclick=\"set_e(''); update_info();\" checked />&nbsp;Altijd</td></tr>";
	 monthly += "<tr><td></td><td>&nbsp;&nbsp;</td><td><input type=\"radio\" name=\"endrepeat\" value=\"until\"";
	 monthly += "onclick=\"document.getElementsByName('endrepeatdate')[0].focus();displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"/>&nbsp;tot:&nbsp;";
	 monthly += "<input type=\"text\" name=\"endrepeatdate\" class=\"datetime\" onclick=\"displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"";
	 monthly += "onchange=\"set_e(this.value);update_info();\" /></td></tr></table><div id=\"inforepeat\"></div>";

var yearly  = "<table><tr><td><b>Herhalen tot:</b></td><td>&nbsp;&nbsp;</td>";
    yearly += "<td><input type=\"radio\" name=\"endrepeat\" value=\"forever\" onclick=\"set_e(''); update_info();\" checked />&nbsp;Altijd</td></tr>";
	 yearly += "<tr><td></td><td>&nbsp;&nbsp;</td><td><input type=\"radio\" name=\"endrepeat\" value=\"until\"";
	 yearly += "onclick=\"document.getElementsByName('endrepeatdate')[0].focus();displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"/>&nbsp;tot:&nbsp;";
	 yearly += "<input type=\"text\" name=\"endrepeatdate\" class=\"datetime\" onclick=\"displayCalendar(document.forms[0].endrepeatdate,'dd/mm/yyyy',this);\"";
	 yearly += "onchange=\"set_e(this.value);update_info();\" /></td></tr></table><div id=\"inforepeat\"></div>";


function Transition(curve, milliseconds, callback) {
	this.curve_ = curve;
	this.milliseconds_ = milliseconds;
	this.callback_ = callback;
	this.start_ = new Date().getTime();
	var self = this;
	this.runCallback_ = function() {
		self.run();
	};
}

Transition.prototype.run = function() {
	if (!this.hasNext()) return;
	this.callback_(this.next());
	setTimeout(this.runCallback_, 10);
}

Transition.prototype.hasNext = function() {
	if (this.done_) return this.oneLeft_;
	var now = new Date().getTime();
	if ((now - this.start_) > this.milliseconds_) {
		this.done_ = true;
		this.oneLeft_ = true;
	}
	return true;
}

Transition.prototype.next = function() {
	this.oneLeft_ = false;
	var now = new Date().getTime();
	var percentage = Math.min(1, (now - this.start_) / this.milliseconds_);
	return this.curve_(percentage);
}

function SineCurve(percentage) {
	    return (1 - Math.cos(percentage * Math.PI)) / 2;
}

function LinearCurve(percentage) {
	    return percentage;
}

function show_repeat(repeat) {
	if(repeat == "none") {
		r = "";
		d = "";
		e = "";
		h = "";
		document.getElementById("repeat").style.height = "0px";
		document.getElementById("repeat").style.visibility = "hidden";
		document.getElementById("inforepeat").style.visibility = "hidden";
		document.getElementById("inforepeat").innerHTML = "";
		document.getElementById("repeat").innerHTML = "";
	} else if(document.getElementById("repeat").style.visibility == "visible") {
		if(repeat == "daily") {
			r = "Dagelijks";
			d = "";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = daily;
			document.getElementById("inforepeat").style.visibility = "visible";
		} else if(repeat == "weekly") {
			r = "Wekelijks";
			d = "maandag";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = weekly;
			document.getElementById("inforepeat").style.visibility = "visible";
		} else if(repeat == "monthly") {
			r = "Maandelijks";
			d = "maandag";
			e = "";
			h = "eerste";
			document.getElementById("repeat").innerHTML = monthly;
			document.getElementById("inforepeat").style.visibility = "visible";
		} else if(repeat == "yearly") {
			r = "Jaarlijks";
			d = "";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = yearly;
			document.getElementById("inforepeat").style.visibility = "visible";
		}
		update_info();
	} else {
		if(repeat == "daily") {
			r = "Dagelijks";
			d = "";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = daily;
		} else if(repeat == "weekly") {
			r = "Wekelijks";
			d = "maandag";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = weekly;
		} else if(repeat == "monthly") {
			r = "Maandelijks";
			d = "maandag";
			e = "";
			h = "eerste"
			document.getElementById("repeat").innerHTML = monthly;
		} else if(repeat == "yearly") {
			r = "Jaarlijks";
			d = "";
			e = "";
			h = "";
			document.getElementById("repeat").innerHTML = yearly;
		}
		update_info();
		document.getElementById("repeat").style.visibility = "visible";
		document.getElementById("inforepeat").style.visibility = "visible";
		transition = new Transition(SineCurve, 500, function(percentage) {
				he = 180;
				document.getElementById("repeat").style.height = Math.round(percentage * he) + "px";
				});
		transition.run();
	}
}


