//Show layer alt
function showAlt(pName, pArgs, pEvent){
	vObj = $(pName);
	if(!vObj){
		pArgs.id = pName;
		vObj = new Element('div', pArgs);
	}else vObj.set('html', pArgs.html);
	
	vBody = $$('body');
	vBody.adopt(vObj);

	vObj.setStyle('top', pEvent.page.y+5);
	vObj.setStyle('left', pEvent.page.x+5);
	vObj.setStyle('opacity', 0);
	vObj.setStyle('display', 'block');
	vObj.fade('in');
}

//Hide layer
function hideAlt(pName){
	vObj = $(pName);
	if(vObj)  vObj.setStyle('display', 'none');
}

function scrollToElement(pElement){
	var vScroll = new Fx.Scroll(window, {
		wait: false,
		duration: 500,
		offset: {'y': -20},
		transition: Fx.Transitions.Quad.easeInOut
	});
	vScroll.toElement(pElement);
}

function getRadioValue(element){
	value = '';
	if(element.length && element.length>0){
		for(var i=0;i<element.length;i++){
			if(element[i].checked) value=element[i].value; 
		}
	}else {
		if(element.checked) value = element.value;
	}
	return value;
}

//Check fields
function checkFields(form, except){
	var flag = true;
	form = $(form);
	var elements = form.getElements('.field-required');
	elements.each(function(element){
		element.removeClass('field-required');
		element.removeEvents('mouseenter');
		element.removeEvents('mouseleave');
	});
	elements = form.getElements('.required');
	elements.each(function(element){
		switch(element.type){
			case 'text':
				if(element.value==''){
					element.removeClass('field-required');
					element.addClass('field-required');
					flag=false;
				}
			break;
			case 'password':
				if(element.value==''){
					element.removeClass('field-required');
					element.addClass('field-required');
					flag=false;
				}
			break;
			case 'select-one':
				if(element.value==''){
					element.removeClass('field-required');
					element.addClass('field-required');
					flag=false;
				}
			break;
			case 'textarea':
				if(element.value==''){
					element.removeClass('field-required');
					element.addClass('field-required');
					flag=false;
				}
			break;
			case 'radio':
				elementRadio = eval('form.'+element.name);
				var value = getRadioValue(elementRadio);
				if(value==''){  
					flag=false;
					element.removeClass('field-required');
					element.addClass('field-required');
				}
			break;
			case 'checkbox':
				elementCheckbox = eval('form.'+element.name);
				var value = getRadioValue(elementCheckbox);
				if(value==''){  
					flag=false;
					element.removeClass('field-required');
					element.addClass('field-required');
				}
			break;
		}
	});
	checksErros(form);
	return flag;
}

//Check errors
function checksErros(form){
	if(form) vElements = form.getElements('input[class*=field-required], select[class*=field-required], textarea[class*=field-required]');
	else vElements = $$('.field-required');
	vMessage = $('field_required').value;
	vElements.each(function(pField){
		pField.addEvent('mouseenter', function(e){
			showAlt('error-field', {'html':vMessage}, e);
		});
		pField.addEvent('mouseleave', function(){
			hideAlt('error-field');
			if(this.value!='') {	
				this.removeClass('field-required');
				this.removeEvents('mouseenter');
				this.removeEvents('mouseleave');
			}
		});
		pField.addEvent('blur', function(){
			hideAlt('error-field');
			if(this.value!='') {	
				this.removeClass('field-required');
				this.removeEvents('mouseenter');
				this.removeEvents('mouseleave');
			}
		});
	});
	if(vElements.length>0){
		vElements[0].focus();
		alert($('field_required').value);
	}
}

//Show / hide overlay
function overlay(action, name){
	var name = (name!=null && name!='')?name+'_overlay':'overlay';
	var overlay = $(name);
	if(!overlay) overlay = new Element('div', {'id':name, 'class':'overlay'});
	var body = $$('body');	
	body.adopt(overlay);
	
	switch(action){
		case 'hide':
			//Masquage
			new Fx.Tween(overlay, {duration:500, onComplete:function(element){
				element.setStyle('visibility', 'hidden');
			}}).start('opacity', 0.8,0);
		break;
		case 'show':
			//Affichage
			var height = window.getScrollHeight();
			overlay.setStyle('width', '100%')
			overlay.setStyle('height', height);
			visibility = overlay.getStyle('visibility');
			if(visibility=='hidden'){
				overlay.setStyle('visibility', 'visible');
				overlay.setStyle('opacity', 0);
				new Fx.Tween(overlay, {duration:500}).start('opacity', 0,0.8);
			}
		break;
	}
}

var gBoxs = new Array();
function showBox(url, options){
	var name =''; var width=0; var height=0; 
	if(options) name = options.name;
	
	overlay('show', name);
	
	//init
	var height = window.getHeight();
	var width = window.getScrollWidth();
	var functionOnComplete = null;

	if(options){
		width = options.width;
		height = options.height;
		functionOnComplete = options.onComplete;
	}
	
	var body = $$('body');
	name = (name=='')?'popup':name;
	gBoxs.push(name);
	
	//event
	if(gBoxs.length==1){
		body.addEvent('keypress', function(e){
			if(e.code==27) {
				var boxs = gBoxs.clean();
				name = boxs.pop();
				closeBox(name);
				if(gBoxs.length==0)  body.removeEvents('keypress');
			}
		})
	}

	/*var loadingbox = new Element('div', {'id':'cboxLoadingGraphic', 'class':'box', 'html':''});
	loadingbox.setStyle('height', window.getScrollHeight());
	body.adopt(loadingbox);*/
	
	var target = $(name);
	if(!target) target = new Element('div', {'id':name, 'class':'popup'});
	if(width!=0) target.setStyle('width', width);
	if(height!=0) target.setStyle('height', height);
	body.adopt(target);
	
	var request = new Request ( {
		url: url,
		method: 'post',
		evalScripts: true,
		onSuccess: function(data){
			//loadingbox.destroy();
			target.setStyle('opacity', 0);
			target.set('html', data);
			
			coordinates = target.getCoordinates();
			height = window.getHeight();
			width = window.getScrollWidth();
			width =  (width-coordinates.width)/2;
			height = (height-coordinates.height)/2;
			height+=window.getScrollTop();
			if(height<0) height=0;

			target.setStyle('left', width);
			target.setStyle('top', height);
			target.fade('in');
			
			if(functionOnComplete) functionOnComplete.run();
		}
	});
	request.send();
}


function setOptionValue(element, value){
	var flag=false;
	if(element){
		if(element.options){
			for(i=0;i<element.options.length;i++){
				option = element.options[i];
				if(option.value==value) {
					option.selected = true;
					flag=true;
					break;
				}
			}
		}
	}
	return flag;
}

function setRadioValue(element, value){
	var flag=false;
	if(element.length>0){
		for(i=0;i<element.length;i++){
			if(element[i].value==value) {
				element[i].checked = true;
				flag=true;
				break;
			}
		}
	}
	return flag;
}

function closeBox(name){
	if(gBoxs) gBoxs.pop();
	
	overlay('hide', name);
	name = (name==null)?'popup':name;
	var target = $(name);
	if(target) target.destroy();
	
	window.removeEvents('keypress');
}

function openNewsletter(){
	showBox('/newsletter', {name:'box_newsletter', width:'95%', onComplete: function(){initNewsletter()}} );
}

function displayPopup(url, height, width, name){
  var top=(screen.height-height)/2;
  var left=(screen.width-width)/2;
  win = window.open(url, name, 'width='+width+',height='+height+',top='+top+',left='+left+',toolbar=no,scrollbars=yes');
  if(win) win.focus();
}
