// Highslide init
 
hs.registerOverlay(
   {
	  thumbnailId: null,
	  overlayId: 'controlbar',
	  position: 'top right',
	  hideOnMouseOut: true,
	  opacity: 0.75
   }
);
hs.graphicsDir = 'js/highslide/graphics/';
hs.restoreDuration = 150;
hs.expandDuration = 150;
hs.showCredits = false;
hs.restoreTitle = 'Use arrow keys for next and previous.';
hs.fullExpandIcon = '';
// also edited row 1284 in v 3.2.7
//hs.styleRestoreCursor = 'pointer';

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
var imgOk = "<img src=\"images_basic/icon_done.png\" alt=\"OK\">";
var imgNotOk = "<img src=\"images_basic/icon_delete.png\" alt=\"NOT OK\">";

function submitSearch() {
	var keywords = document.getElementById('keywords').value;
	keywords = trim(keywords);
	if (keywords == "") return;
	document.getElementById('searchForm').submit();
}

/* This function checks if the username is taken */
function checkUsername(username) {
	new Ajax.Request('check_username.php?u=' + username,
	  {
		method:'get',
		onSuccess: function(transport){
		  var response = transport.responseText || "no response text";
		  if (response == 1) {
			return 1;
		  } else {
			  return 0;
		  }
		},
		onFailure: function(){ alert('Something went wrong...') }
	  });
}

function validateAndSubmitRegisterForm() {
	var formOk = true;
	var usernameTaken = false;
	if (!validateField(document.getElementById('firstname'), document.getElementById('firstname_check'))) formOk = false;
	if (!validateField(document.getElementById('lastname'), document.getElementById('lastname_check'))) formOk = false;
	if (!validateField(document.getElementById('city'), document.getElementById('city_check'))) formOk = false;
	if (!validateEmail(document.getElementById('email'), document.getElementById('email_check'))) formOk = false;
	if (!validateField(document.getElementById('password_reg'), document.getElementById('password_check'))) formOk = false;
	if (!validateField(document.getElementById('conditions'), document.getElementById('conditions_check'))) formOk = false;
	if (formOk)	{
		document.getElementById('registrationForm').submit();
	}
}

function validateUsername(inputElement, applyToDiv) {
	var re = /\s/g; //Match any white space including space, tab, form-feed, etc.
	var illegalChars = /\W/; // allow letters, numbers, and underscores 
	RegExp.multiline = true; // IE support
	inputElement.value = inputElement.value.replace(re, "");
	inputElement.value = trim(inputElement.value);
 	if (illegalChars.test(inputElement.value)) {
 		applyToDiv.innerHTML = imgNotOk + " Illegal characters";
 		return false;
 	} else {
		new Ajax.Request('check_username.php?u=' + inputElement.value,
		  {
			method:'get',
			onSuccess: function(transport){
			  var response = transport.responseText || "no response text";
			  if (response == 0) {
				applyToDiv.innerHTML = imgNotOk + " Username taken";
				return false;
			  } else {
				applyToDiv.innerHTML = imgOk + " Username is still available!";;
				return true;
			  }
			},
			onFailure: function(){ alert('Something went wrong...') }
		  });
		  return true;
 	}

}

function validateEmail(inputElement, applyToDiv) {
	if (!checkEmail(inputElement.value)) {
			applyToDiv.innerHTML = imgNotOk;
			return false;
	} else {
			applyToDiv.innerHTML = imgOk;
			return true;
	}
}

/*
@param input element
@param div to apply message on
*/
function validateField(inputElement, applyToDiv) {

	if (inputElement.type == 'checkbox') {
		if (!inputElement.checked) {
			applyToDiv.innerHTML = imgNotOk;
			return false;
		} else {
			applyToDiv.innerHTML = imgOk;
		}
	}
	if (inputElement.type == 'text' || inputElement.type == 'password') {
		if (inputElement.value == "") {
			applyToDiv.innerHTML = imgNotOk;
			return false;
		} else {
			applyToDiv.innerHTML = imgOk;
		}
	}
	return true;
}


function getXMLHTTPRequest() {
	var xRequest=null;
	if (window.XMLHttpRequest) {
		xRequest=new XMLHttpRequest();
	}
	else if (typeof ActiveXObject != "undefined"){
		xRequest=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xRequest;
}


var applyToDiv;


/* Validate e-mail
 * Parameter: mail - E-mail
 * Return: true if email is ok
 */
 function checkEmail(email) {
	var mailregexp = /^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,4}$/;
	if (email != '' && mailregexp.test(email)) {
		return true;
	} else {
		return false;
	}
 }

/**
 * Check message receiver and messagebody
 */
function checkSendMessage() {
	messageBodyValue = trim(document.getElementById('messagebody').value);
	if (messageBodyValue.length == 0) {
		alert('Please enter a message.');
		return false;
	}
	if (document.getElementById('receiver').value == 0) {
		alert('Please select a receiver for your message.');
		return false;
	}
	return true;
}

/**
 * This function shows / hides the content for the
 * div that was clicked. Used in the profile page (summary)
 */
function showHideMenuItem(menuItemDiv) {
	
	/* Locate divs */
	divId = menuItemDiv.id;
	split = divId.split("_", 2);
	divIdentifier = split[1];
	headerDiv = document.getElementById('summary_' + divIdentifier);
	contentDiv = document.getElementById('summary_' + divIdentifier + '_content');

	/* Toggle visibility */
	if (contentDiv.className == 'hidden') {
		hideAll();
		contentDiv.className = 'show';
	} else {
		contentDiv.className = 'hidden';
	}
}

/**
 * This function hides all content divs for the summary menu
 */
function hideAll() {
	children = document.getElementById('summary').childNodes;
	for (var i = 0; i < children.length; i++) {
		if (children[i].className == 'show') {
			children[i].className = 'hidden';
		}
	}
}

/**
 * This function checks/unchecks all checkboxes
 */
function checkUncheckAll(theElement) {
  var theForm = theElement.form, z = 0;
  for (z = 0; z < theForm.length; z++) {
      if(theForm[z].type == 'checkbox' && theForm[z].name != 'checkall'){
        theForm[z].checked = theElement.checked;
     }
    }
}

/**
 * Forgot password
 */
function forgotPassword() {
	emailValue = trim(document.getElementById('forgotpassword').value);
	if (!checkEmail(emailValue)) {
		alert('Please enter a valid email address!');
		return false;
	}
	new Ajax.Updater("forgotpasswordtext", "ajaxFeed.php?q=fe&e=" + emailValue);
}

/**
 * Post a job offer
 */
function postJobOffer() {
	
	/*emailValue = trim(document.getElementById('forgotpassword').value);
	if (!checkEmail(emailValue)) {
		alert('Please enter a valid email address!');
		return false;
	}*/
	if ($F('joboffer_descr') == "") {
		alert('Please enter a description.');
		return false;
	}
	if ($F('joboffer_title') == "") {
		alert('Please enter a title.');
		return false;
	}
	if ($F('joboffer_createdby_firstname') == "") {
		alert('Please enter your firstname.');
		return false;
	}
	if ($F('joboffer_createdby_lastname') == "") {
		alert('Please enter your lastname.');
		return false;
	}
	if ($F('joboffer_createdby_email') == "") {
		alert('Please enter your email.');
		return false;
	}
	if ($F('joboffer_createdby_phone') == "") {
		alert('Please enter your phone.');
		return false;
	}
	if ($F('joboffer_language') == "") {
		alert('Please choose a language.');
		return false;
	}
	//$('sendmessagestatus').innerHTML = 'Sending message...';
	var data = 'q=job_offer&title=' + $F('joboffer_title') + 
				'&description=' + encodeURIComponent($F('joboffer_descr')) + 
				'&categoryID=' + $F('joboffer_category') + 
				'&language=' + $F('joboffer_language') + 
				'&createdby_firstname=' + $F('joboffer_createdby_firstname') + 
				'&createdby_lastname=' + $F('joboffer_createdby_lastname') + 
				'&createdby_company=' + $F('joboffer_createdby_company') + 
				'&createdby_email=' + $F('joboffer_createdby_email') + 
				'&createdby_phone=' + $F('joboffer_createdby_phone') + 
				'&createdby_mobile=' + $F('joboffer_createdby_mobile')
				;
	new Ajax.Updater('postjoboffer_form', 'ajaxFeed.php', 
		{parameters: data, 
		method: 'post',
		contentType: 'application/x-www-form-urlencoded',
		encoding: 'UTF-8',
		onComplete: sendJobOfferComplete});
}

function sendJobOfferComplete() {
	var currentTime = new Date();
	var day = currentTime.getDate();
	var month = currentTime.getMonth() + 1;
	var hours = currentTime.getHours();
	var minutes = currentTime.getMinutes();
	if (minutes < 10){
		minutes = "0" + minutes
	}
	$('postjoboffer_form').innerHTML = jobOfferSentMsg + ': ' + day + '/' + month + ' ' + hours + ':' + minutes;
}

/* Validate e-mail
 * Parameter: mail - E-mail
 * Return: true/false
 */
function checkEmail(email) {
	var mailregexp = /^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,4}$/;
	if (email != '' && mailregexp.test(email)) {
		return true;
	} else {
		return false;
	}
}

function sendMessage(divName, sender, reciever) {
	if ($F('messagebody') == "") {
		alert('Please enter a message.');
		return false;
	}
	$('sendmessagestatus').innerHTML = 'Sending message...';
	var data = 'sender=' + sender + '&reciever=' + reciever + '&messagebody=' + encodeURIComponent($F('messagebody'));
	new Ajax.Updater(divName, 'ajax_req_sendMessage.php', 
		{parameters: data, 
		method: 'post',
		contentType: 'application/x-www-form-urlencoded',
		encoding: 'UTF-8',
		onComplete: sendMessageComplete});
}

function sendMessageComplete() {
	$('messagebody').value = '';
	$('sendmessagestatus').innerHTML = '';
}

function changeLanguage(locale) {
	var localeForm = document.getElementById('localeForm');
	document.getElementById('locale').value = locale;
	localeForm.submit();
}

function noProfileLanguageSelected() {
	if ($('editlangID').value == 'None') {
		alert("Please choose a language for your media. Add a new language if needed.");
		return false;
	}
}

function noPortfolioLanguageSelected() {
	if ($('mediaportfoliolang').value == 'None') {
		alert("Please choose language for your media.");
		return false;
	}
	if ($('editPortfolioLangId').value == 'None') {
		alert("Please choose language for your media.");
		return false;
	}
}
