	// Handle the ajax request to server
	function make_ajax_request(php_executor,settings) {
		var random = new Date();
		var req = null; 
		if (window.XMLHttpRequest) { 
			req = new XMLHttpRequest();
			if (req.overrideMimeType) {req.overrideMimeType('text/xml');}
		} else if (window.ActiveXObject) {
			try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
			catch (e) {
				try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
				catch (e) {}
			}
		}

		req.onreadystatechange = function() { if(req.readyState == 4) { return(req.responseText); } }; 

		req.open("GET",php_executor+"?"+settings+'&random='+random.getTime(),true);
		req.send(null);

	}



	// Handle the ajax request to server via POST
	function make_ajax_request_via_post(php_executor,settings) {
		var random = new Date();
		var req = null; 
		if (window.XMLHttpRequest) { 
			req = new XMLHttpRequest();
			if (req.overrideMimeType) {req.overrideMimeType('text/xml');}
		} else if (window.ActiveXObject) {
			try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
			catch (e) {
				try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
				catch (e) {}
			}
		}

		req.onreadystatechange = function() { if(req.readyState == 4) { return(req.responseText); } }; 

		req.open("POST",php_executor+"?"+'random='+random.getTime(),true);
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		req.send(settings);

	}



	// Increment the amount of clicks on an email (in the database)
	function incrmnt_email(supplier_id) {
		make_ajax_request('fileadmin/php/incrmnt_email.php','uid='+supplier_id);
	}





	// Increment the amount of clicks on a website (in the database)
	function incrmnt_www(supplier_id) {
		make_ajax_request('fileadmin/php/incrmnt_www.php','uid='+supplier_id);
	}





	// Increment the amount of clicks on a pdf (in the database)
	function incrmnt_pdf(product_id) {
		make_ajax_request('fileadmin/php/incrmnt_pdf.php','uid='+product_id);
	}





	// Increment the amount of clicks on an adword (in the database)
	function incrmnt_adwords(news_id,feuser_id,cookie) {
		make_ajax_request('fileadmin/php/incrmnt_adwords.php','uid='+news_id+'&feuser_id='+feuser_id+'&cookie='+cookie);
	}





	// Increment the amount of clicks on a product's website from a search from the magazine (using #P000#)
	function incrmnt_clicks_from_magazine(visit_uid,ressource_uid,type,feuser_id,cookie) {
		make_ajax_request('fileadmin/php/incrmnt_clicks_from_magazine.php','visit_uid='+visit_uid+'&ressource_uid='+ressource_uid+'&type='+type+'&feuser_id='+feuser_id+'&cookie='+cookie);
	}





	// Switch the results tabs for the advanced search
	function switch_tab(link_id,div_id) {

		var products_search		= document.getElementById('products_search');
		var content_search		= document.getElementById('content_search');
		var suppliers_search		= document.getElementById('suppliers_search');
		var enewsflash_search	= document.getElementById('enewsflash_search');
		var ads_search				= document.getElementById('ads_search');
		var div_to_display			= document.getElementById(div_id);

		var a_tab_1					= document.getElementById('a_tab_1');
		var a_tab_2					= document.getElementById('a_tab_2');
		var a_tab_3					= document.getElementById('a_tab_3');
		var a_tab_4					= document.getElementById('a_tab_4');
		var a_tab_5					= document.getElementById('a_tab_5');

		products_search.style.display		= 'none';
		content_search.style.display		= 'none';
		suppliers_search.style.display		= 'none';
		enewsflash_search.style.display	= 'none';
		ads_search.style.display				= 'none';

		div_to_display.style.display = 'block';

		if(a_tab_1) a_tab_1.className = '';
		if(a_tab_2) a_tab_2.className = '';
		if(a_tab_3) a_tab_3.className = '';
		if(a_tab_4) a_tab_4.className = '';
		if(a_tab_5) a_tab_5.className = '';

		if(link_id) link_id.className = 'over_bleu';
		
	}





	// Rotating leaderboards
	var passages_leaderboard = 1;
	function rotate_leaderboard(count) {
		// Hide all top_ad_xxx div
		for(i=1;i<=count;i++) {
			var temp_div = document.getElementById('top_ad_'+i);
			temp_div.style.display = 'none';
		}

		passages_leaderboard++;
		if(passages_leaderboard>count) passages_leaderboard=1;

		var div_to_show = document.getElementById('top_ad_'+passages_leaderboard);
		div_to_show.style.display = 'block';

		window.setTimeout("rotate_leaderboard("+count+")",7000);
	}





	// Rotating rectangles
	var passages_rectangle = 1;
	function rotate_rectangle(count) {
		// Hide all home_big_pub_xxx div
		for(i=1;i<=count;i++) {
			var temp_div = document.getElementById('home_big_pub_'+i);
			temp_div.style.display = 'none';
		}

		passages_rectangle++;
		if(passages_rectangle>count) passages_rectangle=1;

		var div_to_show = document.getElementById('home_big_pub_'+passages_rectangle);
		div_to_show.style.display = 'block';

		window.setTimeout("rotate_rectangle("+count+")",7000);
	}





	// Rotating verticla banners
	var passages_vertical_banner = 1;
	function rotate_vertical_banner(count) {
		// Hide all left_vertical_banner_xxx div
		for(i=1;i<=count;i++) {
			var temp_div = document.getElementById('left_vertical_banner_'+i);
			temp_div.style.display = 'none';
		}

		passages_vertical_banner++;
		if(passages_vertical_banner>count) passages_vertical_banner=1;

		var div_to_show = document.getElementById('left_vertical_banner_'+passages_vertical_banner);
		div_to_show.style.display = 'block';

		//window.setTimeout("rotate_vertical_banner("+count+")",7000);
		window.setTimeout("rotate_vertical_banner("+count+")", 20000);
	}





	// Rotating skyscrapers
	var passages_skyscraper = 1;
	function rotate_skyscraper(count) {
		// Hide all skyscraper_xxx div
		for(i=1;i<=count;i++) {
			var temp_div = document.getElementById('skyscraper_'+i);
			temp_div.style.display = 'none';
		}

		passages_skyscraper++;
		if(passages_skyscraper>count) passages_skyscraper=1;

		var div_to_show = document.getElementById('skyscraper_'+passages_skyscraper);
		div_to_show.style.display = 'block';

		window.setTimeout("rotate_skyscraper("+count+")",7000);
	}





	// Rotating full banner
	var passages_full_banner = 1;
	function rotate_full_banner(count) {
		// Hide all bottom_ad_xxx div
		for(i=1;i<=count;i++) {
			var temp_div = document.getElementById('bottom_ad_'+i);
			temp_div.style.display = 'none';
		}

		passages_full_banner++;
		if(passages_full_banner>count) passages_full_banner=1;

		var div_to_show = document.getElementById('bottom_ad_'+passages_full_banner);
		div_to_show.style.display = 'block';

		window.setTimeout("rotate_full_banner("+count+")",7000);
	}





	// Checks for white spaces
	function fct_only_white_space(fld) {
		var nonwhitespace = 0;
		var c;
		for (i = 0; i < fld.length; i++) {   
			c = fld.charAt(i);
			if (c.indexOf(" ") == -1) { nonwhitespace++; }
		}
		return (nonwhitespace);
	}





	// Checks for a valid email address
	function valid_email(string) {
		pattern = new RegExp("^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+[.]{1}[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]{2,20}$", "g");
		if(!pattern.test(string)) return true; else return false;
	}





	// Validates the subscription form before sending
	function js_validate_subscription() {

		var error		= 'Warning, some fields are not correctly filled in: \n\n';
		var error_nb	= 0;
		
		var name		= document.register.name;
		var firstname		= document.register.firstname;
		var email		= document.register.email;
		var password		= document.register.password;
		var password2		= document.register.password2;
		var society		= document.register.society;
		var job_title		= document.register.job_title;
		var country		= document.register.country;

		if(name.value=='' || fct_only_white_space(name.value)==0) {error_nb++; error += error_nb+'. Please enter your name\n';}
		if(firstname.value=='' || fct_only_white_space(firstname.value)==0) {error_nb++; error += error_nb+'. Please enter your firstname\n';}
		if(email.value=='' || fct_only_white_space(email.value)==0) {error_nb++; error += error_nb+'. Please enter your email address\n';} else {if(valid_email(email.value)) {error_nb++; error += error_nb+'. Please enter a valid email address\n';}}
		if(password.value=='' || fct_only_white_space(password.value)==0) {error_nb++; error += error_nb+'. Please enter a password\n';}
		if(password2.value=='' || fct_only_white_space(password2.value)==0) {error_nb++; error += error_nb+'. Please confirm your password\n';}
		if(password.value!='' && fct_only_white_space(password.value)!=0 && password2.value!='' && fct_only_white_space(password2.value)!=0) {if(password.value!=password2.value) {error_nb++; error += error_nb+'. Your passwords do not match\n';}}
		if(country.value==0) {error_nb++; error += error_nb+'. Please select your country\n';}
		if(society.value==0) {error_nb++; error += error_nb+'. Please select your company\n';}
		if(job_title.value==0) {error_nb++; error += error_nb+'. Please select your job title\n';}

		if(error_nb) alert(error); else document.register.submit();

	}





	// Validates the contact form
	//
	// 1. Validates
	// 2. Save in database
	// 3. Send the email
	// 4. Also send the demographics

	function eval_contact_from_magazine() {

		var error_nb		= 0;
		var error			= 'Warning, some fields are not correctly filled in: \n\n';
		var to_parse		= document.getElementById('contact_form');
		
		var name			= document.contact_from_magazine.name;
		var firstname			= document.contact_from_magazine.firstname;
		var company			= document.contact_from_magazine.company;
		var job_title			= document.contact_from_magazine.job_title;
		var city			= document.contact_from_magazine.city;
		var zip			= document.contact_from_magazine.zip;
		var tel			= document.contact_from_magazine.tel;
		var country			= document.contact_from_magazine.country;
		var email			= document.contact_from_magazine.email;
		var email2			= document.contact_from_magazine.email2;
		var message			= document.contact_from_magazine.message;
		var wishtoreceive			= document.contact_from_magazine.wishtoreceive;
		var quotation			= document.contact_from_magazine.quotation;
		var brochure			= document.contact_from_magazine.brochure;
		var dealer			= document.contact_from_magazine.dealer;

		var to				= document.contact_from_magazine.to;
		var visit_uid		= document.contact_from_magazine.visit_uid;
		var ressource_uid	= document.contact_from_magazine.ressource_uid;
		var type			= document.contact_from_magazine.type;
		var feuser_id		= document.contact_from_magazine.feuser_id;
		var cookie			= document.contact_from_magazine.cookie;

		if(name.value=='' || fct_only_white_space(name.value)==0) {error_nb++; error += error_nb+'. Please enter your name\n';}
		if(firstname.value=='' || fct_only_white_space(firstname.value)==0) {error_nb++; error += error_nb+'. Please enter your firstname\n';}
		if(company.value=='' || fct_only_white_space(company.value)==0) {error_nb++; error += error_nb+'. Please enter your company / institution\n';}
		if(job_title.value=='' || fct_only_white_space(job_title.value)==0) {error_nb++; error += error_nb+'. Please enter your job title\n';}
		if(city.value=='' || fct_only_white_space(city.value)==0) {error_nb++; error += error_nb+'. Please enter your city\n';}
		if(zip.value=='' || fct_only_white_space(zip.value)==0) {error_nb++; error += error_nb+'. Please enter your zip\n';}
		if(country.value=='' || fct_only_white_space(country.value)==0) {error_nb++; error += error_nb+'. Please enter your country\n';}
		if(email.value=='' || fct_only_white_space(email.value)==0) {error_nb++; error += error_nb+'. Please enter your email address\n';} else {if(valid_email(email.value)) {error_nb++; error += error_nb+'. Please enter a valid email address\n';}}
		if(email2.value=='' || fct_only_white_space(email2.value)==0) {error_nb++; error += error_nb+'. Please confirm your email address\n';} else {if(valid_email(email2.value)) {error_nb++; error += error_nb+'. Please enter a valid email address (confirm)\n';}}
		if(email.value!=email2.value) {error_nb++; error += error_nb+'. Your emails don\'t match\n';}



		// if(message.value=='' || fct_only_white_space(message.value)==0) {error_nb++; error += error_nb+'. Please enter your message\n';}

		if(error_nb) { 

			// Alert the error
			alert(error); 

		} else {

			// Form is good to go
			message.value = message.value.replace('"',"'");

			make_ajax_request_via_post("fileadmin/php/send_email_from_magazine.php","to="+to.value+"&visit_uid="+visit_uid.value+"&ressource_uid="+ressource_uid.value+"&type="+type.value+"&feuser_id="+feuser_id.value+"&cookie="+cookie.value+"&name="+name.value+"&firstname="+firstname.value+"&company="+company.value+"&job_title="+job_title.value+"&city="+city.value+"&zip="+zip.value+"&country="+country.value+"&wishtoreceive="+wishtoreceive.checked+"&quotation="+quotation.checked+"&brochure="+brochure.checked+"&dealer="+dealer.checked+"&email="+email.value+"&tel="+tel.value+"&message="+message.value.replace(/\n/g,"<br>"));

			to_parse.innerHTML = 'Thank You.<br />Your message was successfully sent.<br /><br /><a href="http://www.labint-online.com/free-subscription/index.html" target="_blank">Do you want to begin / continue your free subscription to LAB-ONLINE magazine ?</a>';
		}

	}





	// Validates the contest
	//
	// 1. Checks for names, companies & email addresses
	// 2. Also checks if email adresses are not already registered
	// 3. Or given by someone else

	function eval_contest_form() {

		var error_nb		= 0;
		var error			= 'Warning, some fields are not correctly filled in: \n\n';
		
		var name_1			= document.contest_subscription.name_1;
		var firstname_1		= document.contest_subscription.firstname_1;
		var company_1		= document.contest_subscription.company_1;
		var email_1			= document.contest_subscription.email_1;

		var name_2			= document.contest_subscription.name_2;
		var firstname_2		= document.contest_subscription.firstname_2;
		var company_2		= document.contest_subscription.company_2;
		var email_2			= document.contest_subscription.email_2;

		if(name_1.value=='' || fct_only_white_space(name_1.value)==0) {error_nb++; error += error_nb+'. Please enter the name of the first contact\n';}
		if(firstname_1.value=='' || fct_only_white_space(firstname_1.value)==0) {error_nb++; error += error_nb+'. Please enter the firstname of the first contact\n';}
		if(company_1.value=='' || fct_only_white_space(company_1.value)==0) {error_nb++; error += error_nb+'. Please enter the company of the first contact\n';}
		if(email_1.value=='' || fct_only_white_space(email_1.value)==0) {error_nb++; error += error_nb+'. Please enter the email of the first contact\n';} else {if(valid_email(email_1.value)) {error_nb++; error += error_nb+'. Please enter a valid email address for the first contact\n';}}

		if(name_2.value=='' || fct_only_white_space(name_2.value)==0) {error_nb++; error += error_nb+'. Please enter the name of the second contact\n';}
		if(firstname_2.value=='' || fct_only_white_space(firstname_2.value)==0) {error_nb++; error += error_nb+'. Please enter the firstname of the second contact\n';}
		if(company_2.value=='' || fct_only_white_space(company_2.value)==0) {error_nb++; error += error_nb+'. Please enter the company of the second contact\n';}
		if(email_2.value=='' || fct_only_white_space(email_2.value)==0) {error_nb++; error += error_nb+'. Please enter the email of the second contact\n';} else {if(valid_email(email_2.value)) {error_nb++; error += error_nb+'. Please enter a valid email address for the second contact\n';}}

		if((email_1.value!='' && fct_only_white_space(email_1.value)!=0) && (email_2.value!='' && fct_only_white_space(email_2.value)!=0) && (email_1.value==email_2.value)) {error_nb++; error += error_nb+'. Please enter different email adresses for both contacts\n';}

		if(error_nb) { 

			// Alert the error
			alert(error); 

		} else {

			// Check if email_1.value or email_2.value or not already registered
			var random = new Date();
			var req = null; 
			if (window.XMLHttpRequest) { 
				req = new XMLHttpRequest();
				if (req.overrideMimeType) {req.overrideMimeType('text/xml');}
			} else if (window.ActiveXObject) {
				try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
				catch (e) {
					try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
					catch (e) {}
				}
			}

			req.onreadystatechange = function() { 
				if(req.readyState == 4) { 
					if(req.responseText=='true') {
						// Already registered
						alert('Warning: the email addresses you entered are current FEi subscribers\n\nPlease enter new ones');
					} else {
						// Not found, form can be submited
						document.contest_subscription.submit();
					}
				}
			}

			req.open("GET",'fileadmin/php/check_already_registered_email.php?email_1='+email_1.value+'&email_2='+email_2.value+'&random='+random.getTime(),true);
			req.send(null);
			

			// make_ajax_request("fileadmin/php/send_email_from_magazine.php","to="+to.value+"&visit_uid="+visit_uid.value+"&ressource_uid="+ressource_uid.value+"&type="+type.value+"&feuser_id="+feuser_id.value+"&cookie="+cookie.value+"&name="+name.value+"&email="+email.value+"&message="+message.value.replace(/\n/g,"<br>"));

		}

	}





//Save a vote in db via ajax
	function vote(page_uid,ip,userid,username,email,rating) {

		make_ajax_request('index.php','id='+page_uid+'&tx_message_pi1[ip]='+ip+'&tx_message_pi1[userid]='+userid+'&tx_message_pi1[username]='+username+'&tx_message_pi1[email]='+email+'&tx_message_pi1[rating]='+rating+'&tx_message_pi1[saveAjaxVote]=1');

			// Disable the rate div
		some_div = document.getElementById('rate_div');
		some_div.innerHTML = '<div style="text-align:center;font-weight:700;margin:20px 0 0 0">Thank you.</div>';
		
		window.setTimeout("some_div.style.visibility = 'hidden';",2000);

	}





		// Removes the blank space before and after the passed string (if any)

	function trim(myString) {
		
		return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');

	}





		// Checks for a valid email address
		// Returns true in case of a valid email ortherwise returns false
	
	function checkEmail(email) {

		emailRegexp = new RegExp("^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+[.]{1}[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]{2,8}$", "g");
		if(emailRegexp.test(email)) return true; else return false;

	}





		// Checks the "post message" form and submits if ok
		// Required : name, email*, message
	function eval_message_from() {

		error = '';
		errors = false;
		
		user_name	= document.form_message.elements[0];
		email			= document.form_message.elements[1];
		email2			= document.form_message.elements[2];
		message		= document.form_message.elements[13];
		
		if(user_name.value == '') { errors = true; error += 'Please fill in your name\n'; }
		/* 
		if(email.value == '' || !checkEmail(email.value)) { errors = true; error += 'Please fill in a valid email address\n'; }
		if(email2.value != email.value) { errors = true; error += 'Please confirm your email address\n'; }
		*/
		if(message.value == '') { errors = true; error += 'Please fill in your message\n'; }

		if(errors) alert(error); else document.form_message.submit();

	}





		// Reports a message as spam
		// See TS for recipient
	
	function report_as_spam(page_uid,message_uid) {

		make_ajax_request('index.php','id='+page_uid+'&tx_message_pi1[message_uid]='+message_uid+'&tx_message_pi1[reportAsSpam]=1');

			// Disable the rate div
		// some_div = document.getElementById('report_spam');
		// some_div.style.display = 'none;';
		
		alert('Thank you, the message was reported.');

	}





		// Parse the searched string in order to remove #P.....# OR #A......# if found
	
	function parseSearch() {

		qry = trim(document.search.qry.value);

		patern=new RegExp("^(#[APap])([0-9]{5,6})(#)","g");
		if(patern.exec(qry)) document.search.qry.value = RegExp.$2;
		
		return true;

	}





		// Parse the searched string in order to remove #P.....# OR #A......# if found
	
	function parseAdvancedSearch() {

		qry = trim(document.ad_search.qry.value);

		patern=new RegExp("^(#[APap])([0-9]{5,6})(#)","g");
		if(patern.exec(qry)) document.ad_search.qry.value = RegExp.$2;
		
		return true;

	}
