// JavaScript Document

function ajaxFunction(elementID) {
	var ajaxRequest;  // The variable that makes Ajax possible!

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

//***********	Receiving data		***********************************************************
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function() {
		if(ajaxRequest.readyState == 4) {
			var message = ajaxRequest.responseText.split("?");

			if (message[0]=="availability") {
				document.getElementById(elementID).innerHTML = message[1];
			}
			else if (message[0]=="registration") {
				document.getElementById(elementID).innerHTML = message[1];

				document.getElementById("first_name").value = "";
				document.getElementById("last_name").value = "";
				document.getElementById("user").value = "";
				document.getElementById("password").value = "";
				document.getElementById("re_password").value = "";
				document.getElementById("address").value = "";

				document.getElementById("availability").innerHTML = "";
			}
			else if (message[0]=="update_member") {
				//	On successful update show a message.
				document.getElementById(elementID).innerHTML = message[1];

				//	On successful update forward to member's page.
				/*if (message[1]=="1") {
					window.location = "member.php";
				}*/
			}
			else if (message[0]=="change_password") {
				document.getElementById(elementID).innerHTML = message[1];
				document.getElementById("old_password").value = "";
				document.getElementById("new_password").value = "";
				document.getElementById("re_password").value = "";
			}
			else if (message[0]=="dvds") {
				document.getElementById("buy_movie").innerHTML = "<a href='cart.php'>DVDs on my cart: "+message[1]+"</a>";
				document.getElementById("rent_movie").innerHTML = "<a href='rents.php'>My rented DVDs: "+message[2]+"</a>";
			}
			else if (message[0]=="renting_dvd") {
				alert("You cannot have more than 3 rented DVDs at once.");
			}
			else if (message[0]=="cart") {
				document.getElementById("cart").innerHTML = message[1];
			}
			else if (message[0]=="orders") {
				document.getElementById("orders").innerHTML = message[1];
			}
			else if (message[0]=="rents") {
				document.getElementById("rents").innerHTML = message[1];
			}
			else if (message[0]=="delete") {
				document.getElementById("del_movie").innerHTML = message[1];
				document.getElementById("btn_delete_movie").style.visibility = "visible";
			}
			else if (message[0]=="delete_user") {
				document.getElementById("del_user").innerHTML = message[1];
				document.getElementById("btn_delete_user").style.visibility = "visible";
			}
		}
	}


//*************************************************************************
//*********	Creating query & sending request to server	*************************
//*************************************************************************

	var query = "";

	//	Checking availability of the user name
	if (elementID=="availability") {
		$user = document.getElementById("user").value;
		if ($user=="") {
			alert("Please provide a user name.");
		}
		else {
			query = "?availability="+$user;

			document.getElementById(elementID).innerHTML = "<font color='black'>Checking availibility...</font>";
			//	Sending request to the server
			ajaxRequest.open("GET", "ajax.php"+query, true);
			ajaxRequest.send(null);
		}
	}	//	Checking availability of the user name

	//	Registering new member
	else if (elementID=="registration") {
		var first_name = document.getElementById("first_name").value;
		var last_name = document.getElementById("last_name").value;
		var user = document.getElementById("user").value;
		var password = document.getElementById("password").value;
		var re_password = document.getElementById("re_password").value;
		var address = document.getElementById("address").value;

		if (first_name!="" && last_name!="" && user!="" && password!="" && re_password!="" && address!="") {
			if (password==re_password) {
				var new_user = first_name+"/"+last_name+"/"+user+"/"+password+"/"+address;
				query = "?registration="+new_user;

				document.getElementById(elementID).innerHTML = "<font color='black'>Registering user...</font>";
				//	Sending request to the server
				ajaxRequest.open("GET", "ajax.php"+query, true);
				ajaxRequest.send(null);
			}
		}
		else {
			alert("You must fill up all fields.");
		}
	}	//	Registering new member

	//	Update membership
	else if (elementID=="update_member") {
		var user = document.getElementById("_user").innerHTML;
		var first_name = document.getElementById("first_name").value;
		var last_name = document.getElementById("last_name").value;
		var address = document.getElementById("address").value;

		var update_user = user+"/"+first_name+"/"+last_name+"/"+address;
		query = "?update_member="+update_user;

		document.getElementById(elementID).innerHTML = "<font color='black'>Updating account...</font>";
		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Update membership

	//	Change password
	else if (elementID=="change_password") {
		var user = document.getElementById("_user").innerHTML;
		var old_pwd = document.getElementById("old_password").value;
		var new_pwd = document.getElementById("new_password").value;
		var re_pwd = document.getElementById("re_password").value;

		if (old_pwd=="" || new_pwd=="" || re_pwd=="") {
			alert("You must fill up all fields.");
		}
		else {
			if (new_pwd!=re_pwd) {
				document.getElementById(elementID).innerHTML = "<b style='font-weight: bold; color: red'>Passwords do not match.</b>";
				document.getElementById("new_password").value = "";
				document.getElementById("re_password").value = "";
			}
			else {
				var change_pwd = user+"/"+old_pwd+"/"+new_pwd;
				query = "?change_password="+change_pwd;

				document.getElementById(elementID).innerHTML = "<font color='black'>Changing password...</font>";

				//	Sending request to the server
				ajaxRequest.open("GET", "ajax.php"+query, true);
				ajaxRequest.send(null);
			}
		}
	}	//	Change password

	//	Shopping cart items
	else if (starts_with("cart", elementID)) {
		var data = elementID.split("/")[1];
		query = "?cart="+data;
		document.getElementById("cart").innerHTML = "<b style='color: blue'>Loading...</b>";

		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Returned rented DVDs

	//	Rent & cart items
	else if (elementID=="dvds") {
		var user = document.getElementById("_user").innerHTML;
		query = "?dvd="+user;

		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Rent & cart items

	//	Purchase orders
	else if (starts_with("orders", elementID)) {
		var user = elementID.split("/")[1];
		query = "?orders="+user;
		document.getElementById("orders").innerHTML = "<b style='color: blue'>Loading...</b>";

		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Purchase orders

	//	Rents
	else if (starts_with("rents", elementID)) {
		var user = elementID.split("/")[1];
		query = "?rents="+user;
		document.getElementById("rents").innerHTML = "<b style='color: blue'>Loading...</b>";

		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Rents

	//	Returned rented DVDs
	else if (starts_with("return", elementID)) {
		var data = elementID.split("/")[1];
		query = "?return="+data;
		document.getElementById("rents").innerHTML = "<b style='color: blue'>Loading...</b>";

		//	Sending request to the server
		ajaxRequest.open("GET", "ajax.php"+query, true);
		ajaxRequest.send(null);
	}	//	Returned rented DVDs

	//	Delete movie
	else if (starts_with("delete", elementID)) {
		var data = elementID.split("/")[1];
		if (data=="NULL") {
			document.getElementById("del_movie").innerHTML = "";
			document.getElementById("btn_delete_movie").style.visibility = "hidden";
		}
		else {
			query = "?delete="+data;
			document.getElementById("del_movie").innerHTML = "<br><b style='color: blue'>Loading...</b>";
			document.getElementById("btn_delete_movie").style.visibility = "hidden";

			//	Sending request to the server
			ajaxRequest.open("GET", "ajax.php"+query, true);
			ajaxRequest.send(null);
		}
	}	//	Delete movie

	//	Delete user
	else if (starts_with("member", elementID)) {
		var member = elementID.split("/")[1];
		if (member=="NULL") {
			document.getElementById("del_user").innerHTML = "";
			document.getElementById("btn_delete_user").style.visibility = "hidden";
		}
		else {
			query = "?delete_member="+member;
			document.getElementById("del_user").innerHTML = "<br><b style='color: blue'>Loading...</b>";
			document.getElementById("btn_delete_user").style.visibility = "hidden";

			//	Sending request to the server
			ajaxRequest.open("GET", "ajax.php"+query, true);
			ajaxRequest.send(null);
		}
	}	//	Delete user


	//	Buy or rent a movie
	else
	{
		var elem = elementID.split("+")[0];
		var user = elementID.split("+")[1];
		var movie = elementID.split("+")[2];
		if (user=="") {
			alert("You must login to buy/rent a movie.");
		}
		else {
			query = "?"+elem+"="+user+"/"+movie;

			//	Sending request to the server
			ajaxRequest.open("GET", "ajax.php"+query, true);
			ajaxRequest.send(null);
		}
	}
}	//	ajaxFunction()


//****************************************************
function dvds() {
	ajaxFunction("dvds");
}	//	dvds()


//****************************************************
function starts_with(a, ab) {
	var part = ab.substring(0, a.length);
	if (part==a) {
		return true;
	}
	else {
		return false;
	}
}	//	starts_with()


//****************************************************
function remove_cart_item(msg) {
	ajaxFunction(msg);
}	//	remove_cart_item()


//****************************************************
function delete_movie() {
	movie = convert(document.getElementById("movie_selector").value, true);
	window.location = "delete_movie.php?delete="+movie;
}	//	delete_movie()


//****************************************************
function delete_user() {
	var user = document.getElementById("user_selector").value.split(" ")[0];
	window.location = "delete_user.php?user="+user;
}	//	delete_user()


//****************************************************
function cart(msg) {
	window.location = "cart.php?value="+msg;
}	//	clear_cart()	


//****************************************************
function deliver(msg) {
	window.location = "purchase_orders.php?shipped="+msg;
}	//	clear_cart()	


//****************************************************
function search_movie() {
	var movie = convert(document.getElementById('search_box').value, true);

	if (movie.length==0) {
		alert("Enter search term first.");
	}
	else {
		window.location = "search.php?movie="+movie;
	}
}	//	search_movie()


//****************************************************
function logout() {
	window.location = "login.php?value=logout";
}	//	logout()


//****************************************************
function match_password() {
	var pwd = document.getElementById("password").value;
	var re_pwd = document.getElementById("re_password").value;
	if (pwd!=re_pwd) {
		document.getElementById("passwords").innerHTML = "Passwords do not match.";
	}
	else {
		document.getElementById("passwords").innerHTML = "";
	}
}	//	match_password()


//****************************************************
function convert(movie, isCoded) {
	if (isCoded==true) {
		var oldChar = [" ", "&", "."];
		var newChar = ["_", "@", "~"];
	}
	else if (isCoded==false) {
		var oldChar = ["_", "@", "~"];
		var newChar = [" ", "&", "."];
	}

	var a, b;
	var movie_parts, movie_name;

	for (a=0; a<oldChar.length; a++) {
		movie_parts = movie.split(oldChar[a]);
		movie_name = "";
		for (b=0; b<movie_parts.length; b++) {
			if (b==0) {
				movie_name = movie_parts[b];
			}
			else {
				movie_name = movie_name+newChar[a]+movie_parts[b];
			}
		}
		movie = movie_name;
	}
	return movie;
}	//	convert()


//****************************************************
var previous_color;

function mouse_over(elementID) {
	previous_color = document.getElementById(elementID).style.color;
	document.getElementById(elementID).style.color = 'rgb(0, 150, 0)';
}	//	mouse_over()

function mouse_out(elementID) {
	document.getElementById(elementID).style.color = previous_color;
}	//	mouse_out()

