var regExpBeginning = /^\s+/;
var regExpEnd = /\s+$/;

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function changeClass(id, className){
	document.getElementById(id).className = className;
}

function changeStyle(id, property, value){
	eval("document.getElementById('" + id + "').style." + property + " = '" + value + "'");
}

function cleanInput(elt, defaultText){
	var text = elt.value;
	
	if(text == defaultText){
		elt.value = '';
	}
}

function restoreInput(elt, defaultText){
	var text = elt.value;
	
	if(text == ''){
		elt.value = defaultText;
	}
}

/**
 * Builds the lang links (FR / EN)
 */
function setLangLinks(){
	var tags = document.getElementsByClassName('langLink');
	var url = document.location.href;
	var tmp = url.split('http://');
	var tmp = tmp[1].split('/');
	var domain = tmp[0];
	var lang = tmp[1];
	var langFound = false;
	
	if (tmp[1] == 'fr') {
		val = 'en';
		langFound = true;
	}else if(tmp[1] == 'en'){
		val = 'fr';
		langFound = true;
	}else{
		val = 'fr';
	}
	
	var result = 'http://' + domain + '/' + val + '/';
	
	for(var j = 2 ; j < tmp.length ; j++){
		var val = tmp[j];
		result += val;
		
		if(j < tmp.length - 1){
			result += '/';
		}
	}
	
	for(var i = 0 ; i < tags.length ; i++){
		document.getElementById(tags[i].id).href = result;
	}
}

/**
 * Delete spaces on the left and on the right of the string
 * 
 * @param string
 *				str String
 * @return string
 */
function trim(str) {
	return str.replace(regExpBeginning, "").replace(regExpEnd, "");
}

function checkEmail(email){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	if (!filter.test(email)) {
		return false;
	}else{
		return(true);
	}
}

function string2ezURL(str){
	str = trim(str);
	str = removeSpecialCharacters(str);
	var tmp = str.split(' ');
	while(tmp.length > 1){
		str = str.replace(' ', '-');
		var tmp = str.split(' ');
	}
	
	var tmp = str.split("'");
	while(tmp.length > 1){
		str = str.replace("'", "-");
		var tmp = str.split("'");
	}
	
	return(str);
}

function searchDistributors(region){
	var object_id = 0;
	region = string2ezURL(region);
	
	// Search for the region's object_id
	for (var i = 0; i < regions.length; i++) {
		var tmp = string2ezURL(regions[i][0]);
		if(tmp == region){
			object_id = regions[i][1];
		}
	}
	
	document.location = baseURL + 'Distributors/(region)/' + region + '/(object_id)/' + object_id + '';
}

function saveAccount(){
	var first_name = trim(document.getElementById('first_name').value);
	var last_name = trim(document.getElementById('last_name').value);
	var email = trim(document.getElementById('email').value);
	var street = trim(document.getElementById('street').value);
	var city = trim(document.getElementById('city').value);
	var zip = trim(document.getElementById('zip').value);
	var country = document.getElementById('country').selectedIndex;
	var state = document.getElementById('state').value;
	var phone = document.getElementById('phone').value;
	var emailValid = false;
	var error = '';
	
	if(first_name == ''){
		error += '<p class="error">- ' + translations[4] + '</p>';
	}
	if(last_name == ''){
		error += '<p class="error">- ' + translations[5] + '</p>';
	}
	if(email == ''){
		error += '<p class="error">- ' + translations[1] + '</p>';
	}else{
		emailValid = checkEmail(email);
		
		if(emailValid == false){
			error += '<p class="error">- ' + translations[3] + '</p>';
		}
	}
	if(street == ''){
		error += '<p class="error">- ' + translations[6] + '</p>';
	}
	if(city == ''){
		error += '<p class="error">- ' + translations[7] + '</p>';
	}
	if(zip == ''){
		error += '<p class="error">- ' + translations[8] + '</p>';
	}else{
		var length = zip.length;
		var tmp = zip.split(' ');
		
		if(length != 6 && tmp.length != 2){
			//error += '<p class="error">- ' + translations[8] + '</p>';
		}else if(length == 6){
			document.getElementById('zip').value = zip.substr(0, 3) + ' ' + zip.substr(3, 3);
		}
	}
	if(country == '0'){
		error += '<p class="error">- ' + translations[9] + '</p>';
	}
	if(state == ''){
		error += '<p class="error">- ' + translations[10] + '</p>';
	}
	if(phone == ''){
		error += '<p class="error">- ' + translations[11] + '</p>';
	}else{
		var length = phone.length;
		var tmp = phone.split('-');
		
		if(length != 10 && tmp.length != 3){
			error += '<p class="error">- ' + translations[12] + '</p>';
		}else if(length == 10 && isNaN(phone)){
			error += '<p class="error">- ' + translations[12] + '</p>';
		}else if(length == 10){
			document.getElementById('phone').value = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6, 4);
		}
	}
	
	if(error == ''){
		var result = true;
		
		document.getElementById('textComment').value = document.getElementById('textComment').value + '\n\n\nTel : ' + document.getElementById('phone').value;
		document.getElementById('textComment').value = document.getElementById('textComment').value + '\n\n' + document.getElementById('selShipping').value;
		document.getElementById('textComment').readOnly = true;
		
		// Hides the submit button to prevent double/triple... clicks
		document.getElementById('btnSubmit').style.display = 'none';
		document.getElementById('divWaiting').style.display = 'block';
	}else{
		winx = $(window).width();
		winy = $(window).height();
		$('#divErrors').css('left', (winx/2)-150);
		/*$('<div id="bodyShadow" class="body_shadow"></div>').css({
			'width': winx,
			'height':winy
		}).appendTo("body").fadeIn("fast");*/
		$('#errorMsg').html(error);
		$('#divErrors').fadeIn("slow");
		
		var result = false;
	}
	
	return(result);
}

function sendEmail(){
	var name = trim(document.getElementById('name').value);
	var company = trim(document.getElementById('company').value);
	var email = trim(document.getElementById('email').value);
	var content = trim(document.getElementById('content').value);
	var emailValid = false;
	var error = '';
	
	if(name == ''){
		error += '<p class="error">- ' + translations[0] + '</p>';
	}
	if(email == ''){
		error += '<p class="error">- ' + translations[1] + '</p>';
	}else{
		emailValid = checkEmail(email);
		
		if(emailValid == false){
			error += '<p class="error">- ' + translations[3] + '</p>';
		}
	}
	if(content == ''){
		error += '<p class="error">- ' + translations[2] + '</p>';
	}
	
	if(error == ''){
		var name = escape(document.form.name.value);
		var company = escape(document.form.company.value);
		var email = escape(document.form.email.value);
		var content = escape(document.form.content.value);
		var url = '/phpscripts/send_email.php';
		var params = 'from=' + email + '&content=' + content + '&email_template=contact&name=' + name + '&company=' + company + '';
		var where = document.getElementById('divAjax');
		
		AjaxPostData(url, params, receive_ajax_send, where);
	}else{
		winx = $(window).width();
		winy = $(window).height();
		$('#divErrors').css('left', (winx/2)-150);
		/*$('<div id="bodyShadow" class="body_shadow"></div>').css({
			'width': winx,
			'height':winy
		}).appendTo("body").fadeIn("fast");*/
		$('#errorMsg').html(error);
		$('#divErrors').fadeIn("slow");
	}
}

function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.innerHTML = limitNum - limitField.value.length;
	}
}

function loadCoordinates(){
	var email = document.getElementById('email').value;
	var where = document.getElementById('ajaxAnswer');
	
	if (email != '') {
		var url = '/phpscripts/load_coordinates.php?email=' + email;
	}else{
		var url = '/phpscripts/load_coordinates.php';
	}
	
	AjaxGetData(url, receive_ajax_user_account, where);
}

function hideError(){
	$('#divErrors').fadeOut("fast");
	//$('#bodyShadow').fadeOut("slow").remove();
}

function triggerClickOn(id){
	document.getElementById(id).click();
}

function pause(delay){
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); }
	while(curDate-date < delay);
}

function getMouseCoordinates(e){
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft;
		tempY = event.clientY + document.body.scrollTop;
	}
	else { // grab the x-y pos.s if browser is NS
		tempX = e.pageX;
		tempY = e.pageY;
	}
	if (tempX < 0) {
		tempX = 0;
	}
	if (tempY < 0) {
		tempY = 0;
	}
}

function getEltCoordinates(id){
	var obj = document.getElementById(id);
	var curleft = 0;
	var curtop = 0;
	
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {
		curleft += obj.x;
		curtop += obj.y;
	}
	var result = Array(curleft, curtop);
	//alert(curleft+', '+curtop);
	
	return(result);
}

function openURL(url){
	var tmp = url.split('http://');
	
	if(tmp.length == 1){
		url = 'http://' + url;
	}
	window.open(url, '', 'resizable=yes,scrollbars=yes,toolbar=yes,location=yes,menubar=yes,statusbar=yes');
}

function removeSpecialCharacters(str){
	var r = str;
	r = r.replace(new RegExp(/[àáâãäå]/g),"a");
	r = r.replace(new RegExp(/æ/g),"ae");
	r = r.replace(new RegExp(/ç/g),"c");
	r = r.replace(new RegExp(/[èéêëē]/g),"e");
	r = r.replace(new RegExp(/[ìíîï]/g),"i");
	r = r.replace(new RegExp(/ñ/g),"n");	    
	r = r.replace(new RegExp(/[òóôõö]/g),"o");
	r = r.replace(new RegExp(/œ/g),"oe");
	r = r.replace(new RegExp(/[ùúûü]/g),"u");
	r = r.replace(new RegExp(/[ýÿ]/g),"y");
	
	r = r.replace(new RegExp(/[ÀÁÂÃÄÅ]/g),"A");
	r = r.replace(new RegExp(/[ÈÉÊË]/g),"E");
	r = r.replace(new RegExp(/[ìíîï]/g),"I");
	r = r.replace(new RegExp(/Ñ/g),"N");	    
	r = r.replace(new RegExp(/[ÒÓÔÕÖ]/g),"O");
	r = r.replace(new RegExp(/[ÙÚÛÜ]/g),"U");
	
	return(r);
}

function getPageSizeWithScroll(){
	if( window.innerHeight && window.scrollMaxY ) {// Firefox
		pageWidth = window.innerWidth + window.scrollMaxX;
		pageHeight = window.innerHeight + window.scrollMaxY;
	} else if ( document.body.scrollHeight > document.body.offsetHeight ) { // all but Explorer Mac
		pageWidth = document.body.scrollWidth;
		pageHeight = document.body.scrollHeight;
	} else {// works in Explorer 6 Strict, Mozilla (not FF) and Safari
		pageWidth = document.body.offsetWidth + document.body.offsetLeft;
		pageHeight = document.body.offsetHeight + document.body.offsetTop;
	}
	arrayPageSizeWithScroll = new Array(pageWidth,pageHeight);
	//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
	return arrayPageSizeWithScroll;
}

function addOnFocusToA(){
	var as = document.getElementsByTagName('a');
	
	for(var i  =0 ; i < as.length ; i++){
		if (window.addEventListener) { // Mozilla, Netscape, Firefox
			as[i].addEventListener('focus', function(){
				if (this.blur) 
					this.blur()
			}, false);
		}else{
			as[i].attachEvent('focus', function(){
				if (this.blur) 
					this.blur()
			}, false);
		}
	}
}



document.getElementsByClassName = function(class_name) {
	var docList = this.all || this.getElementsByTagName('*');
	var matchArray = new Array();

	/*Create a regular expression object for class*/
	var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
	for (var i = 0; i < docList.length; i++) {
		if (re.test(docList[i].className) ) {
			matchArray[matchArray.length] = docList[i];
		}
	}

	return matchArray;
}
