﻿var _w = window;
var _d = document;
var _n = null;
var _t = true;
var _f = false;
var _sH = 0;

function iniLayout(){
	setVerticalCenter();
	setTooltips();
	setScrollServices();
}

function setTooltips(){
	var lstElt = $A(_d.getElementsByTagName('*'));
	lstElt.each(function(elt){
		if(elt.getAttribute('tip')!=_n){
			elt.onmouseover = function(){ showTooltip(elt); }
			elt.onmouseout = function(){ hideTooltip(); }
		}
	});
}

function showTooltip(elt){
	$('tooltipContent').innerHTML = elt.getAttribute('tip');
	var offsetsElt = getOffsets(elt);
	var DimElt = [elt.getWidth(),elt.getHeight()];
	$('tooltip').style.top = offsetsElt[1]-36+'px';
	$('tooltip').style.left = offsetsElt[0] + (DimElt[0]/2) - 3 +'px';
	new Effect.Appear('tooltip',{duration:.5});
}

function hideTooltip(){
	$('tooltip').hide();
}

function showMsgBox(message){
	blurFocusedElt();
	var layoutOffsets = getLayoutOffsets();
	$('disableLayout').style.height = layoutOffsets[1]+'px';
	$('disableLayout').style.width = layoutOffsets[0]+'px';
	$('msgBoxContent').innerHTML = message;
	new Effect.Appear('disableLayout',{duration:.3,from:0,to:.75,afterFinish:function(){
		centerOnScreen($('msgBox'));
		new Effect.Appear('msgBox',{duration:.3});
	}});
}

function closeMsgBox(){
	new Effect.Fade('msgBox',{duration:.3,afterFinish:function(){
		new Effect.Fade('disableLayout',{duration:.3});
	}});
}

function goTo(mnu){
	switch(mnu){
		case 'home': var url = 'services.php'; break;
		case 'contact': var url = 'contact.php'; break;
		case 'about': var url = 'about.php'; break;
	}
	var layoutOffsets = getLayoutOffsets();
	$('lockLayout').style.height = layoutOffsets[1]+'px';
	$('lockLayout').style.width = layoutOffsets[0]+'px';
	$('lockLayout').show();
	new Effect.Fade('mainPage',{duration:.3,afterFinish:function(){
		new Effect.Appear('loader',{duration:.3,afterFinish:function(){
				var ajaxAction = new Ajax.Updater('mainPage',url,{
					method: 'get',
					onComplete: function(data){
						new Effect.Fade('loader',{duration:.3,afterFinish:function(){
							new Effect.Appear('mainPage',{duration:.3,afterFinish:function(){
								if(mnu=='home') setScrollServices();
								$('lockLayout').hide();
							}});
						}});
					}
				}
			);
		}});
	}});
}

function sendFrmContact(){
	var confirmSend = _t;
	if (checkCleanString($F('frmNom'))==_f) confirmSend = _f;
	if (checkCleanString($F('frmPrenom'))==_f) confirmSend = _f;
	if (checkCleanString($F('frmEmail'))==_f) confirmSend = _f;
	if (checkCleanString($F('frmSujet'))==_f) confirmSend = _f;
	if (checkCleanString($F('frmMessage'))==_f) confirmSend = _f;
	if(confirmSend==_f){
		showMsgBox('Tous les champs sont obligatoires !');
	}else{
		blurFocusedElt();
		var layoutOffsets = getLayoutOffsets();
		$('lockLayout').style.height = layoutOffsets[1]+'px';
		$('lockLayout').style.width = layoutOffsets[0]+'px';
		$('lockLayout').show();
		new Effect.Appear('loader',{duration:.3,afterFinish:function(){
			var ajaxAction = new Ajax.Request('lib/send_frmcontact.php',{
					method: 'post',
					parameters: Form.serialize('frmSendContact'),
					onComplete: function(data){
						new Effect.Fade('loader',{duration:.3,afterFinish:function(){
							$('lockLayout').hide();
							if(data.responseText!='SEND_MAIL_SUCCESS'){
								showMsgBox('Une erreur est survenue !<br/>Votre message n\'a pas été envoyé.');
							}else{
								showMsgBox('Votre message a bien été envoyé.');
							}
						}});						
					}
				}
			);
		}});
	}
}

function setScrollServices(){
	_sH = $('contentServices').getHeight();
	if(_sH>$('zoneServices').getHeight()){
		$('handleTrack').show();
		new Control.Slider('handleTrack','track',{axis:'vertical',onChange:scrollServices,onSlide:scrollServices}); 
	}
}

function scrollServices(value){
	var dist = Math.ceil((_sH-$('zoneServices').getHeight())*value);
	$('contentServices').style.marginTop = -dist+'px';
}

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

function checkCleanString(str){
	var tmp = str.strip();
	tmp = tmp.stripTags();
	if(tmp.length>0)
		return _t;
	else
		return _f;
}

function getOffsets(obj) {
	var offsetTop = obj.offsetTop;
	var offsetLeft = obj.offsetLeft;
	while ((obj = obj.offsetParent )!=null) {
		offsetTop += obj.offsetTop;
		offsetLeft += obj.offsetLeft;
	}
	return [offsetLeft, offsetTop];
}

function setVerticalCenter(){
        var lstElt = $A(_d.getElementsByClassName('vCenter'));
        lstElt.each(function(elt){
                var pN = elt.up();
                if(pN.tagName=='BODY'){
                        var layoutOffsets = getLayoutOffsets();
			if(layoutOffsets[1]<elt.getHeight()){
				elt.style.marginTop = "5px";
			}else{
				elt.style.marginTop = (layoutOffsets[1]/2)-(elt.getHeight()/2)+'px';
			}
                }else{
                        elt.style.marginTop = (pN.getHeight()/2)-(elt.getHeight()/2)+'px';
                }
        });
}

function getLayoutOffsets(){
	var de = _d.documentElement;
	var screenWidth = _w.innerWidth || self.innerWidth || (de&&de.clientWidth) || _d.body.clientWidth;
	var screenHeight = _w.innerHeight || self.innerHeight || (de&&de.clientHeight) || _d.body.clientHeight;
	var pageWidth = _d.documentElement && _d.documentElement.scrollWidth ? _d.documentElement.scrollWidth : pageWidth = _d.body.scrollWidth;
	var pageHeight= _d.documentElement && _d.documentElement.scrollHeight ? _d.documentElement.scrollHeight : pageHeight = _d.body.scrollHeight;
	if(pageHeight<screenHeight) pageHeight = screenHeight;
	if(pageWidth<screenWidth) pageWidth = screenWidth;
	return [screenWidth,screenHeight,pageWidth,pageHeight];
}

function centerOnScreen(obj){
        var screenOffsetWidth = getLayoutOffsets()[0];
        var screenOffsetHeight = getLayoutOffsets()[1];
        if(obj.style.position!='absolute') obj.style.position = 'absolute';
        obj.style.left = (screenOffsetWidth/2)-(obj.getWidth()/2)+'px';
        obj.style.top = (screenOffsetHeight/2)-(obj.getHeight()/2)+'px';
}

function blurFocusedElt(){
        var lstElt = $A(_d.getElementsByTagName('*'));
        lstElt.each(function(elt){
                if(elt.focus){
                        elt.blur();
                        throw $break;
                }
        });
}