<!--
	function byId(id) {
		return document.getElementById(id);
	}

	function activateAddBookSubmit() {
		var activate = false;
		var selected = byId('c_id');
		var category_id = selected.options[selected.selectedIndex].value;
		if (category_id != -1 && (byId('b_isbn').value.length == 10 || byId('b_isbn').value.length == 13) && byId('selected_tags').length >= 5)
			activate = true;
		if (activate == true) {
			byId('form_new_book_submit').removeAttribute("disabled");
			byId('form_new_book_submit').style.cursor = "pointer";
			byId('form_new_book_submit').style.color = "#333";
		}
 		else {
 			byId('form_new_book_submit').setAttribute("disabled", "disabled");
 			byId('form_new_book_submit').style.cursor = "default";
 			byId('form_new_book_submit').style.color = "#aaa";
 		}
	}

	function prepareHoverInput() {
		var form = byId('form_register');
		form.getElementsByTagName('input');
		for(var i=0; i<form.length; i++) {
			if (form[i].getAttribute('type') == 'text' || form[i].getAttribute('type') == 'password') {
				form[i].onmouseover = function() {
					if (this.getAttribute('id') != 'selectedInput')
						this.setAttribute('id', 'selectedInput');
				}
				form[i].onmouseout = function() {
					if (this.getAttribute('id') == 'selectedInput')
						this.setAttribute('id', this.getAttribute('name'));
				}
			}
		}
	}

	function showLayer(layer) {
		byId(layer).style.display = 'block';
	}

	function hideLayer(layer) {
		byId(layer).style.display = 'none';
	}

	function toggleLayer(layer) {
		if(byId(layer).style.display == 'block')
			hideLayer(layer);
		else
			showLayer(layer);
	}



	/* AJAX */

	var resObject1 = null;
	var resObject2 = null;
	var resObject_tag = null;

	function erzeugeXMLHttpRequestObject() {
		var resObject1 = null;
		try {
			resObject1 = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(Error) {
			try {
				resObject1 = new ActiveXObject("MSXML2.XMLHTTP");
			}
			catch(Error) {
				try {
					resObject1 = new XMLHttpRequest();
				}
				catch(Error) {
					alert("Dieser Browser bietet leider keine AJAX Funktionalität");
				}
			}
		}
		return resObject1;
	}

	function addBookToReadList(user, book) {
		var timestamp = new Date().getTime();
		/*resObject1.open("get", "includes/add_book_to_readlist.php?br_u_id="+user+"&br_b_id="+book+"&time="+timestamp, false);
		resObject1.onreadystatechange = giveReadBookListFeedback;
		resObject1.send(null);*/
		$.get("includes/add_book_to_readlist.php", { br_u_id: user, br_b_id: book, time: timestamp }, 
			function (data) {
				if (data == 1) {
					$('#booklist_feedback').html("Das Buch wurde zur Bücherliste hinzugefügt.");
					$('#booklist_links').show();
					$('#booklist_button_yes').hide(200);
					$('#booklist_button_no').hide(200);
					$('#booklist_button_close').show(200);
				}
				else {
					$('#booklist_feedback').html(data);
				}
			} );
	}

	function addBookToWishList(user, book) {
		var timestamp = new Date().getTime();
		/*resObject1.open("get", "includes/add_book_to_wishlist.php?tr_u_id="+user+"&tr_b_id="+book+"&time="+timestamp, false);
		resObject1.onreadystatechange = giveReadWishListFeedback;
		resObject1.send(null);*/
		$.get("includes/add_book_to_wishlist.php", { tr_u_id: user, tr_b_id: book, time: timestamp },
			function (data) {
				if (data == 1) {
					$('#wishlist_feedback').html("Das Buch wurde zur Wunschliste hinzugefügt");
					$('#wishlist_links').show();
					$('#wishlist_button_yes').hide(200);
					$('#wishlist_button_no').hide(200);
					$('#wishlist_button_close').show(200);
				}
				else {
					$('#wishlist_feedback').html(data);
				}		
			}
		)
	}

	/*function giveReadBookListFeedback() {
		if (resObject1.readyState == 4) {
			var response = resObject1.responseText;
			if (response == 1) {
				byId('booklist_feedback').innerHTML = "Das Buch wurde zur Bücherliste hinzugefügt.";
				byId('booklist_links').style.display = "block";
				$('#booklist_button_yes').hide(200);
				$('#booklist_button_no').hide(200);
			}
			else
				byId('booklist_feedback').innerHTML = response;
		}
	}

	function giveReadWishListFeedback() {
		if (resObject1.readyState == 4) {
			var response = resObject1.responseText;
			if (response == 1) {
				byId('wishlist_feedback').innerHTML = "Das Buch wurde zur Wunschliste hinzugefügt";
				byId('wishlist_links').style.display = "block";
				$('#wishlist_button_yes').hide(200);
				$('#wishlist_button_no').hide(200);
			}
			else
				byId('wishlist_feedback').innerHTML = response;
		}
	}*/

	function showSubCategories(id) {
		var selected = byId(id);
		var category_id = selected.options[selected.selectedIndex].value;
		if (category_id != -1) {
			var timestamp = new Date().getTime(); // neue url für IE vortäuschen
			/*resObject2.open("get", "includes/get_subcategories.php?category_id="+category_id+"&time="+timestamp, true);
			resObject2.onreadystatechange = changeSubCategories;
			resObject2.send(null);*/
			$.get("includes/get_subcategories.php", { category_id: category_id, time: timestamp }, 
				function(data) {
					var categories_array = data.toString().split("*|||*");
					var optionfields = "";
					$("#select_subcategories").html('');
					for (var i = 0; i < categories_array.length; i++) {
						if (categories_array[i]) {
							var options = categories_array[i].toString().split("*||*")
							/*var option = document.createElement('option');
							option.setAttribute('value', options[0]);
							option.setAttribute('text', options[1]);
							option.innerHTML = options[1];
							//optionfields += "<option value='"++"'>"++"</option>"*/
						
              var myselect=byId("select_subcategories");
              try{
               myselect.add(new Option(options[1], options[0]), null) //add new option to end of "sample"
              }
              catch(e){ //in IE, try the below version instead of add()
               myselect.add(new Option(options[1], options[0])) //add new option to end of "sample"
              }
  						//byId("select_subcategories").appendChild(option);
            }
					}
					activateAddBookSubmit();
				});
		}
		else {
			$("#select_subcategories").html('');
			activateAddBookSubmit();
		}
	}

	/*function changeSubCategories() {
		if (resObject2.readyState == 4) {
			var response = resObject2.responseText;
			var categories_array = response.toString().split("*|||*");
			var optionfields = "";
			byId("select_subcategories").innerHTML = '';
			for (var i = 0; i < categories_array.length; i++) {
				if (categories_array[i]) {
					var options = categories_array[i].toString().split("*||*")
					var option = document.createElement('option');
					option.setAttribute('value', options[0]);
					option.setAttribute('text', options[1]);
					option.innerHTML = options[1];
					//optionfields += "<option value='"++"'>"++"</option>"
				}
				byId("select_subcategories").appendChild(option);
			}
			activateAddBookSubmit();
		}
	}*/

	function getTagId(tag) {
		var timestamp = new Date().getTime();
		/*resObject_tag.open("get", "includes/get_tag_id.php?tag="+tag+"&time="+timestamp, false);
		resObject_tag.onreadystatechange = handleGetTagId;
		resObject_tag.send(null);*/
		
		$.ajax({
		  type: "GET",
		  async: false,
		  url: "includes/get_tag_id.php",
		  data: {tag: tag, time: timestamp},
		  success: function(data){
		    byId('tag_id_helper').value = data
		  }
		});
		
		var data = byId('tag_id_helper').value;
		var option = document.createElement('option');
		option.text = tag;
		var tag_id = data;
		if (tag_id == -1)
			option.value = tag;
		else {
			option.value = tag_id;
		}
		byId('selected_tags').appendChild(option);

		
		/*$.get("", {  }, 
			function (data, ) {
				//alert(data);
				//byId('tag_id_helper').value = data;
				//$('#tag_id_helper').val(data);		
				
				
			});		
			*/
	}

	/*function handleGetTagId() {
		if (resObject_tag.readyState == 4) {
			var response = resObject_tag.responseText;
			byId('tag_id_helper').value = response;
		}
	}*/

	function selectTags() {
		var tags = getSelectedItems('t_id');
		var selected_tags = new Array();
		selected_tags = byId('selected_tags').getElementsByTagName('option');
		var selected_tags_string = ' ';
		/* Alle bisherigen Tags zu einem String zusammenfügen */
		for (var i = 0; i < selected_tags.length; i++) {
			selected_tags_string += selected_tags[i].text + ' ';
		}
		/* Neue Tags mit bisherigen abgleichen und nur noch nicht vorhandene aufnehmen */
		for (var i = 0; i < tags.length; i++) {
			if (selected_tags_string.search(' '+tags[i].text+' ') == -1) {
			
      var myselect=byId('selected_tags');
      try{
       myselect.add(new Option(tags[i].text, tags[i].value), null) //add new option to end of "sample"
      }
      catch(e){ //in IE, try the below version instead of add()
       myselect.add(new Option(tags[i].text, tags[i].value)) //add new option to end of "sample"
      }
      
      /*	var option = document.createElement('option');
				option.text = tags[i].text;
				option.value = tags[i].value;
				byId('selected_tags').appendChild(option);*/
			}
		}
		/* Neue Tags aus der Textarea hinzufügen */
		var new_tags = byId('new_tags').value.toString().split(',');
		for (var i = 0; i < new_tags.length; i++) {
			new_tags[i] = trim(new_tags[i], ' ');
			if (selected_tags_string.search(new_tags[i]) == -1) {
				getTagId(new_tags[i]);
			}
		}
		byId('new_tags').value = '';
		activateAddBookSubmit();
	}

	function selectAllTags() {
		var options = byId('selected_tags').getElementsByTagName('option');
		for (var i = 0; i < options.length; i++) {
			options[i].selected = true;
		}
	}

	function removeTags() {
		var timestamp = new Date().getTime();
		var tags = getSelectedItems('selected_tags');
		for (var i = 0; i < tags.length; i++) {
			if (tags[i].selected) {
				byId('selected_tags').removeChild(tags[i]);
			}
		}
		activateAddBookSubmit();
	}

	function getSelectedItems(id) {
		var select = byId(id);
		var options = select.getElementsByTagName('option');
		var items = new Array();
		var selected_items = 0;
		var string = '';
		for (i = 0; i < select.length; i++) {
			if (options[i].selected == true) {
				items[selected_items] = options[i];
				selected_items++;
			}
		}
		return items;
	}

	resObject1 = erzeugeXMLHttpRequestObject();
	resObject2 = erzeugeXMLHttpRequestObject();
	resObject_tag = erzeugeXMLHttpRequestObject();

	function adminHandleVote() {
		var vote = byId('v_vote').value;
		var stars = "Sterne";
		if (vote == 1)
			stars = "Stern";
		byId('voting_feedback').innerHTML = '';
		var img;
		if (vote == 0) {
			img = document.createElement('img');
			img.setAttribute('src', 'images/vote_clear.gif');
			img.setAttribute('alt', 'Buch nicht bewerten');
			img.setAttribute('border', '0');
			byId('voting_feedback').appendChild(img);
			return;
		}
		else {
			for (var i = 0; i < vote; i++) {
				img = document.createElement('img');
				img.setAttribute('src', 'images/vote.gif');
				img.setAttribute('alt', 'Buch bewerten '+vote+' '+stars);
				img.setAttribute('border', '0');
				byId('voting_feedback').appendChild(img);
			}
		}
	}

  function checkField(field, type) {
 		var id = field.getAttribute('id');
 		var inputs = field.form.elements;
 		for (var i = 0; i < inputs.length; i++) {
			if (inputs[i].getAttribute('type') == "submit")
				var submit_id = inputs[i].getAttribute('id');
		}
 		if (type == "addBook") {
			field.value = field.value.replace(/-/g,"");
			/* initial maxlength value is 14 to paste in an isbn-13 number correctly */
			//field.setAttribute('maxlength', '13');
			activateAddBookSubmit();
		}
			
 	}

 	function checkRegForm() {
 		var old_timestamp = byId('form_timestamp').value;
 		var timestamp = new Date().getTime(); // neue url für IE vortäuschen
 		/* Abschicken nur alle xxxx ms möglich */
 		if (timestamp - old_timestamp > 3000 || old_timestamp == 0) {
			if (byId('u_email'))
			 var email = byId('u_email').value;
			if (byId('u_name'))
				var username = byId('u_name').value;
			if (byId('u_gender_female').checked)
				var gender = 'female';
			else if (byId('u_gender_male').checked)
				var gender = 'male';
			else
				var gender = 0;				
				var password = byId('u_password').value;
			if (byId('u_password'))
				var password = byId('u_password').value;

			byId('form_timestamp').value = timestamp;
			/*resObject1.open("get", "includes/check_reg_form.php?username="+username+"&password="+password+"&gender="+gender+"&email="+email+"&time="+timestamp, false);
			resObject1.onreadystatechange = giveRegFeedback;
			resObject1.send(null);*/
			$.get("includes/check_reg_form.php", { username: username, password: password, gender: gender, email: email, time:timestamp }, 
				function (data) {
					var response = data.toString().split('||**_|');
					var validForm = true;
					if (response[0] == "name nicht vorhanden") {
						$('#form_feedback_username').html('');
						$('#form_feedback_username').hide();
						byId('u_name').className = 'colored_input';
					}
					else {
						if (response[0] == 'name nicht okay')
							$('#form_feedback_username').html('Dieser Mitgliedsname ist ungültig!');
						else
							$('#form_feedback_username').html('Dieser Mitgliedsname ist leider bereits belegt!');
						$('#form_feedback_username').show();
						byId('u_name').className = 'colored_input form_error';
						validForm = false;
					}
					/* TODO: and so on with Jquery */
					if (response[1] == "email okay") {
						byId('form_feedback_email').innerHTML = '';
						byId('form_feedback_email').style.visibility = 'hidden';
						byId('u_email').className = 'colored_input';
					}
					else {
						byId('form_feedback_email').innerHTML = 'Diese Email Adresse ist ungültig!';
						byId('form_feedback_email').style.visibility = 'visible';
						byId('u_email').className = 'colored_input form_error';
						validForm = false;
					}
					if (response[2] == "passwort okay") {
						byId('form_feedback_password').innerHTML = '';
						byId('form_feedback_password').style.visibility = 'hidden';
						byId('u_password').className = 'colored_input';
					}
					else {
						byId('form_feedback_password').innerHTML = 'Passwort bitte mind. 4 Zeichen!';
						byId('form_feedback_password').style.visibility = 'visible';
						byId('u_password').className = 'colored_input form_error';
						validForm = false;
					}
					if (response[3] == "geschlecht okay") {
						byId('form_feedback_gender').innerHTML = '';
						byId('form_feedback_gender').style.visibility = 'hidden';
					}
					else {
						byId('form_feedback_gender').style.visibility = 'visible';
						validForm = false;
					}
					if (validForm)
						byId('form_register').submit();
					else
						byId('form_feedback').style.display = 'block';
					});
				}
	}

	/*function giveRegFeedback() {
		if (resObject1.readyState == 4) {
			var response = resObject1.responseText.toString().split('||**_|');
			var validForm = true;
			if (response[0] == "name nicht vorhanden") {
				byId('form_feedback_username').innerHTML = '';
				byId('form_feedback_username').style.visibility = 'hidden';
				byId('u_name').className = 'colored_input';
			}
			else {
				if (response[0] == 'name nicht okay')
					byId('form_feedback_username').innerHTML = 'Dieser Mitgliedsname ist ungültig!';
				else
					byId('form_feedback_username').innerHTML = 'Dieser Mitgliedsname ist leider bereits belegt!';
				byId('form_feedback_username').style.visibility = 'visible';
				byId('u_name').className = 'colored_input form_error';
				validForm = false;
			}
			if (response[1] == "email okay") {
				byId('form_feedback_email').innerHTML = '';
				byId('form_feedback_email').style.visibility = 'hidden';
				byId('u_email').className = 'colored_input';
			}
			else {
				byId('form_feedback_email').innerHTML = 'Diese Email Adresse ist ungültig!';
				byId('form_feedback_email').style.visibility = 'visible';
				byId('u_email').className = 'colored_input form_error';
				validForm = false;
			}
			if (response[2] == "passwort okay") {
				byId('form_feedback_password').innerHTML = '';
				byId('form_feedback_password').style.visibility = 'hidden';
				byId('u_password').className = 'colored_input';
			}
			else {
				byId('form_feedback_password').innerHTML = 'Passwort bitte mind. 4 Zeichen!';
				byId('form_feedback_password').style.visibility = 'visible';
				byId('u_password').className = 'colored_input form_error';
				validForm = false;
			}
			if (response[3] == "geschlecht okay") {
				byId('form_feedback_gender').innerHTML = '';
				byId('form_feedback_gender').style.visibility = 'hidden';
			}
			else {
				byId('form_feedback_gender').style.visibility = 'visible';
				validForm = false;
			}
		}
		if (validForm)
			byId('form_register').submit();
		else
			byId('form_feedback').style.display = 'block';
	}*/

	function changeMonth(index) {
    var dayIndex = byId('u_birthdate_Day');
    if (index == 0) {
      dayIndex.selectedIndex = 0;
      dayIndex.setAttribute('disabled', 'disabled');
    } else {
      if (dayIndex.disabled)
				dayIndex.removeAttribute('disabled');
    	getNumberOfDaysInMonth(dayIndex, byId('u_birthdate_Year').value, byId('u_birthdate_Month').value);
    }
	}

	function checkMonth(month) {
		if (month.length > 0 && (month < 1 || month > 12)) {
			alert("Gültige Werte für \"Monat\" sind 1-12 :)");
			byId('u_birthdate_Month').focus();
		}
	}

	function changeYear(selectedIndex) {
    var dayIndex = byId('u_birthdate_Day');
    var monthIndex = byId('u_birthdate_Month');
    if (selectedIndex == 0) {
      dayIndex.selectedIndex = 0;
      dayIndex.setAttribute('disabled', 'disabled');
      monthIndex.selectedIndex = 0;
      monthIndex.setAttribute('disabled', 'disabled');
    } else {
      if (monthIndex.disabled)
				monthIndex.removeAttribute('disabled');
      getNumberOfDaysInMonth(dayIndex, byId('u_birthdate_Year').value, monthIndex.value);
    }
  }

	function getNumberOfDaysInMonth(dayIndex, year, month)	{
		if (month > 0 && year > 0) {
			month -= 1; // jan = 0, dez = 11

 			var nextDay;

			if (month == 11) {
  			nextDay = new Date(++year, 0);
 			} else {
  			nextDay = new Date(year, ++month);
 			}

 			var myDate = new Date(nextDay - 1);
 			var daysInMonth = 1 + myDate.getDate();

			for (var i = dayIndex.length; i <= daysInMonth;i++) {
				dayIndex.options[i] = new Option(i,i);
			}

			if (dayIndex.length > daysInMonth)	{
			   dayIndex.length = daysInMonth;
			}

			if (dayIndex.value > daysInMonth) {
				dayIndex.value = daysInMonth;
			}
		}
	}

  function removeBirthday() {
    byId("u_birthdate_Year").options[0].setAttribute('selected', 'selected');
    changeYear(0);
  }

function showEditUserTags() {
	document.getElementById('user_booktags_edit').style.display='block';
	document.getElementById('user_booktags').style.display='none';
}

function hideEditUserTags() {
	document.getElementById('user_booktags_edit').style.display='none';
	document.getElementById('user_booktags').style.display='block';
}


function sendFriendRequest(user_id, friend_id) {
	$.post("includes/send_friend_request.php", { u_id: user_id, uf_id: friend_id }, 
		function(data) { 
			if (data == 1) {
				$('#add_friend_button_yes').hide();
				$('#add_friend_button_no').hide();
				$('#add_friend_feedback').show();
				$('#add_friend_button_close').show();
				$('#p_add_friend').html('');
			} 
		});
}

function removeFriend(user_id, friend_id) {
	$.post("includes/remove_friend.php", { u_id: user_id, uf_id: friend_id }, 
		function(data) { 
			if (data == 1) {
				$('#remove_friend_button_yes').hide();
				$('#remove_friend_button_no').hide();
				$('#remove_friend_feedback').show();
				$('#remove_friend_button_close').show();
				$('#p_remove_friend').html('');
			} 
		});
}

function acceptFriendship(user_id, friend_id) {
	$.post("includes/accept_friendship.php", { u_id: user_id, f_id: friend_id }, 
		function(data) { 
			if (data == 1) {
				$('#accept_friend_feedback').show();
				$('#p_pending_friendship').html('');
			} else
				alert('hier stimmt was nicht.');
		});
}

/* ******************************** */


  function collectionToArray(collection) {
		var array = new Array();
		for(var i = 0; i < collection.length; i++) {
			array.push(collection[i]);
		}
		return array;
}

/**
*
*  Javascript trim, ltrim, rtrim
*  http://www.webtoolkit.info/
*
*
**/

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function toggleLayer(id, display_type) {
	if (document.getElementById(id)) {
		if (!display_type)
			display_type = 'block';
		if (document.getElementById(id).style.display == 'none') {
			document.getElementById(id).style.display = display_type;
		} else {
			document.getElementById(id).style.display = 'none';
		}
	}
}

function nl2br(str) {
  return str.replace(/\\n/g, '<br />');
}

//-->