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;
}

function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
		{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}
//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}

function shiftOpacity(id, millisec) {
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function addTime(date, time, user, cellId, tz){
	var ajaxRequest;  // The variable that makes Ajax possible!
	var url;
	var linkCellId;

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}

	//add 0 infront of cellId to create the link id
	linkCellId = "0" + cellId;

	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState != 4) {
			changeOpac(100, 'waitingResponse');
			document.getElementById('waitingResponse').innerHTML = '<img src="images/loading.gif"/>';
		}
		if(ajaxRequest.readyState == 4){
			document.getElementById(linkCellId).onclick = function(){removeTime(date, time, user, cellId, tz)}
			document.getElementById(cellId).style.backgroundColor = "#FFEA07";
			document.getElementById('waitingResponse').innerHTML = 'saved';
			shiftOpacity('waitingResponse', 1000);
		}
	}
	url = "mem_updateTime.php?date=" + date + "&time=" + time + "&uid=" + user + "&action=0" + "&tz=" + tz;
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send(null);
}


function removeTime(date, time, user, cellId, tz){
	var ajaxRequest;  // The variable that makes Ajax possible!
	var url;
	var linkCellId;

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}

	//add 0 infront of cellId to create the link id
	linkCellId = "0" + cellId;

	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState != 4) {
			changeOpac(100, 'waitingResponse');
			document.getElementById('waitingResponse').innerHTML = '<img src="images/loading.gif"/>';
		}
		if(ajaxRequest.readyState == 4){
			document.getElementById(linkCellId).onclick = function(){addTime(date, time, user, cellId, tz)}
			document.getElementById(cellId).style.backgroundColor = "#EAEAFF";
			document.getElementById('waitingResponse').innerHTML = 'saved';
			shiftOpacity('waitingResponse', 1000);
		}
	}
	url = "mem_updateTime.php?date=" + date + "&time=" + time + "&uid=" + user + "&action=1" + "&tz=" + tz;
	ajaxRequest.open("GET", url, true);
	ajaxRequest.send(null);


}

function getSecond(value) {
	var url = 'mem_booking_search_lessons.php';
	var myAjax = new Ajax.Request
	(
	url,
	{
		method: "post",
		//          parameters : "lessonLevel="+value, // if passing 1 variable
		parameters: $('booking').serialize(),
		onSuccess: function transResult (response) {
			document.getElementById('lesson').innerHTML=response.responseText;
		},
		onFailure: function transResult (response) {
			alert ('Failure'+response.responseText);
		}
	}
	);
	return false;

}

function search(language, cost, gender, uid) {
	//setting default values for arguments
	language = typeof(language) != 'undefined' ? language : '';
	cost = typeof(cost) != 'undefined' ? cost : '';
	gender = typeof(gender) != 'undefined' ? gender : '';

	var ajaxRequest;  // The variable that makes Ajax possible!
	var url;
	var validateCost;

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}

	//setting cost to integer
	validateCost = cost != '' ? parseInt(cost) : '';

	if (!isNaN(validateCost)) {
		//reset error box
		document.getElementById('error').innerHTML = "";
		// Create a function that will receive data sent from the server
		ajaxRequest.onreadystatechange = function(){
			if(ajaxRequest.readyState == 2){
				document.getElementById('search').innerHTML = "<img src=\"images/loading.gif\"/><br />Loading Results";
			}
			if(ajaxRequest.readyState == 4){
				document.getElementById('search').innerHTML = ajaxRequest.responseText;
			}
		}
		url = "mem_ajax_search.php?language=" + language + "&cost=" + validateCost + "&gender=" + gender + "&uid=" + uid;
		ajaxRequest.open("GET", url, true);
		ajaxRequest.send(null);
	} else {
		//send error
		document.getElementById('error').innerHTML = "Please enter a number only.";
	}
}

function addEvent( obj, type, fn ) {
	if (obj.addEventListener)
	obj.addEventListener( type, fn, false );
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function removeEvent( obj, type, fn ) {
	if (obj.removeEventListener)
	obj.removeEventListener( type, fn, false );
	else if (obj.detachEvent)  {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}

function addLoadEvent(func) {
	var oldonload = document.onload;
	if (typeof document.onload != 'function') {
		document.onload = func;
	} else {
		document.onload =
		function() {
			oldonload();
			func();
		}
	}
}

var selectedTimes = '';
function choose_times(time, date, cellId) {
	selectedTimes = selectedTimes + date + ' ' + time + ',';
	$('times').value = selectedTimes;

	linkCellId = '0' + cellId;
	$(linkCellId).onclick = function(){remove_times(time, date, cellId)}
	$(cellId).style.backgroundColor = "#FFEA07";
}

function remove_times(time, date, cellId) {
	selectedTimes = selectedTimes.replace(date + ' ' + time + ',', "");
	$('times').value = selectedTimes;

	linkCellId = '0' + cellId;
	$(linkCellId).onclick = function(){choose_times(time, date, cellId)}
	$(cellId).style.backgroundColor = "#EAEAFF";
}
