(function(){
	var publicObject = {
		generateClassCode: function(cAr)
		{
			var classCode = '';
			
			if(cAr.length > 0)
			{
				classCode += ' class="';
				
				for(var i=0; i<cAr.length; i++)
				{
					classCode += cAr[i];
					
					if(i != cAr.length-1)
					{
						classCode += ' ';
					}
				}
				
				classCode += '"';
			}
			
			return classCode;
		}
	};
	
	window.HtmlUtil = publicObject;
})();

(function()
{
	var _config = {popElement: {tagName: 'a',className: 'pop'},windowProperties: {width: 710,height: 500,sup: {scrollbars: 'yes'}}};
	
	var publicObject = {
		open: function(ev)
		{
			var currentPop = this;
			
			if(!!currentPop)
			{
				var uriVal = currentPop.getAttribute('href');
				
				if(!uriVal)
				{
					uriVal = currentPop.getAttribute('data-target');
				}
				
				if(arguments.length >= 2)
				{
					uriVal = arguments[1];
				}
				
				var popWidth = _config.windowProperties.width;
				var popHeight = _config.windowProperties.height;
				var popSup = _config.windowProperties.sup;
				
				/* Objet privé (rendre public ?) contenant la config des types de pop-up (remplace la config par défaut de PopUtil.config.windowProperties) */
				var popType = {
					goodiesPlayer: {width: 484,height: 386,sup: {}},
					tempIQ: {width: 830,height: 350,sup: {scrollbars: 'yes'}}
				};
				
				/* Récupération des noms de classes -> clé de la config des pop-up */
								
				jQuery.each(currentPop.className.split(' '),function(ind,elem)
				{
					for(cN in popType)
					{
						if(cN == elem)
						{
							if('width' in popType[cN])
							{
								popWidth = popType[cN].width;
							}
							if('height' in popType[cN])
							{
								popHeight = popType[cN].height;
							}
							if('sup' in popType[cN])
							{
								popSup = popType[cN].sup;
							}
							
							// Si élément trouvé, on arrête la boucle
							break;
						}
					}
				});
				
				if(!!uriVal)
				{
					var popConfString = 'width='+popWidth+',height='+popHeight;
					
					for(var prop in popSup)
					{
						popConfString += ','+prop+'='+popSup[prop];
					}
					
					window.open(uriVal, 'popInfo', popConfString);
				}
			}
			
			ev.preventDefault();
		}
	}
	
	function init()
	{
		if(!!window.popProperties)
		{
			for(p in _config.windowProperties)
			{
				if(!!window.popProperties[p])
				{
					_config.windowProperties[p] = window.popProperties[p];
				}
			}
		}
		
		var popColl = jQuery('.'+_config.popElement.className);
		
		var self = this;
		
		popColl.each(function()
		{
			jQuery(this).bind('click',publicObject.open);
			this.setAttribute('title','Ce lien s’ouvre dans un pop-up');
		});
	}
	
	window.PopUtil = publicObject;
	
	if(window.jQuery)
	{
		jQuery(document).ready(init);
	}
})();

/*

Traitement de formulaires : objet FormUtil

*/

(function()
{
	var _config = {display: {property: 'display', visible: 'block',hidden: 'none'}};

	var publicFU = {
		generateSoapCode: function(mail,optIn)
		{
			var soapCode = '<?xml version="1.0" encoding="UTF-8"?>'
				+'<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:prospect.redbox.darty.com">'
   +'<soapenv:Header/>'
   +'<soapenv:Body>'
   +'<urn:sauvegardeProspect soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'
   +'<sauvegardeProspectIn xsi:type="enc:DemandeSauvegardeProspect" xmlns:enc="encodedTypes.prospect.redbox.darty.com">'
  +'<optIn xsi:type="xsd:string">'+optIn+'</optIn>'
+'            <adresseEmail xsi:type="xsd:string">'+mail+'</adresseEmail>'
+'         </sauvegardeProspectIn>'
+'      </urn:sauvegardeProspect>'
+'   </soapenv:Body>'
+'</soapenv:Envelope>';

			return soapCode;
		},
		popAction: function(ev)
		{
			window.open('../presentation/ligne_inactive.htm','inactive','width=646,height=751');
		},
		init: function()
		{
			var gfldColl = jQuery('input.clear');
			
			gfldColl.each(function()
			{
				jQuery(this).bind('focus',clearField);
			}
			);
			
			var fldColl = jQuery('form.ligne-test fieldset.standard input[type=text]');
			
			fldColl.each(function()
			{
				jQuery(this).bind('focus',displayMailPanel);
			}
			);
		}
	};
	
	function clearField(ev)
	{
		var currentFld = this;
		
		if(!!currentFld)
		{
			if(currentFld.defaultValue == currentFld.value)
			{
				currentFld.value = '';
			}
		}
	}
	
	function displayMailPanel()
	{
		var mG = jQuery('div.mail-group');

		if(mG.length > 0)
		{
			var styleProp = {};
			styleProp[_config.display.property] = _config.display.visible;
			
			mG.css(styleProp);
		}
	}
	
	window.FormUtil = publicFU;
	
	if(window.jQuery)
	{
		jQuery(document).ready(publicFU.init);
	}
})();

(function()
{
	var _config = {
		layer: {
				element: 'div#layer-saisie-mail',
				close: 'p a',
				display: {property: 'visibility', visible: 'visible', hidden: 'hidden'}
		},
		form: {
			uri: ''
		}
	};
	
	var publicMP = {};
	
	var layerObject = null;
	var formObject = null;
	
	var formContent = '';
	
	function treatForm(ev)
	{
		if(!!formObject && formObject.attr('action') != '')
		{
			var optIn = null;
			if(jQuery('input[name=optIn]',formObject).length > 0)
			{
				optIn = jQuery('input[name=optIn]',formObject).checked;
			}
			var defaultMail = jQuery('input[name=adresseEmail]',formObject).defaultValue;
			var mail = jQuery('input[name=adresseEmail]',formObject).value;
			/*
			if(!!optIn)
			{
				optIn = 'O';
			}
			else
			{
				optIn = 'N';
			}
			*/
			
			var error = {};
			
			var mailTest = /^[a-zA-Z0-9\._-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?$/;
			
			if(mail == '' || mail == defaultMail)
			{
				error['mailEmpty'] = 'Le mail est obligatoire !';
			}
			else if(!mail.match(mailTest))
			{
				error['mailMalformed'] = 'Le mail est incorrect !';
			}
			
			var canSend = 0;
			
			for(var prop in error)
			{
				canSend++;
			}
			
			if(canSend == 0)
			{
				var soapCode = FormUtil.generateSoapCode(mail,'O');

				jQuery.ajax({
				url: formObject.action,
				type: 'post',
				contentType: 'application/soap+xml',
				beforeSend: function(xhr)
				{
					xhr.setRequestHeader('SOAPAction','prospect.redbox.darty.com/sauvegardeProspect');
				},
				success: function(dt,tStatus,xhr){
					try
					{
						var resp = xhr.responseXML.getElementsByTagName('codeRetour').item(0).childNodes.item(0).nodeValue;
						
						if(resp == 'OK')
						{
							jQuery('fieldset',formObject).eq(0).html('<div class="merci">'
						+'<h3>Merci !</h3>'
						+'<p>Votre demande est bien enregistrée</p>'
						+'<p>Vous recevrez prochainement notre lettre d’information.</p>'
						+'<p class="fermer-ok"><a href="#recevoir-info" class="image">Fermer</a></p>'
						+'</div>');
					
							closeActive();
						}
					}
					catch(e)
					{
						//alert(e.message)
					}
					//hide();
				},
				data: soapCode
				});
			
				/*Element.select(formObject,'fieldset')[0].innerHTML = '<div class="merci">'
				+'<h3>Merci !</h3>'
				+'<p>Votre demande est bien enregistrée</p>'
				+'<p>Vous recevrez prochainement notre lettre d’information.</p>'
				+'</div>';*/
			
				
			}
			else
			{
				var errorCode = '';
				
				for(var prop in error)
				{
					errorCode += error[prop]+'\n';
				}
				
				if(errorCode != '')
				{
					alert(errorCode);
				}
			}
			
			ev.preventDefault();
		}
	}
	
	function display(ev)
	{
		if(!!layerObject)
		{
			var styleProp = {};
			styleProp[_config.layer.display.property] = _config.layer.display.visible;
			
			layerObject.css(styleProp);
		}
		else
		{
			PopUtil.open(arguments[0],'/redbox-frontoffice/mps17-AffichagePopupAction.do');
		}
		
		if(formContent != '')
		{
			formObject.html(formContent);
			FormUtil.init();
			closeActive();
		}
		
		ev.preventDefault();
	}
	
	function hide(ev)
	{
		if(!!layerObject)
		{
			var styleProp = {};
			styleProp[_config.layer.display.property] = _config.layer.display.hidden;
			
			layerObject.css(styleProp);
		}
		
		ev.preventDefault();
	}
	
	function closeActive()
	{
		jQuery(_config.layer.element+' '+_config.layer.close).bind('click',hide);
	}
	
	function init()
	{
		var zoneMP = jQuery('#nav-secondaire #recevoir-info > a').bind('click',display);
		
		closeActive();
		
		formObject = jQuery(_config.layer.element+' form');
		formObject.bind('submit',treatForm);
		formContent = formObject.html();
	
		var lTemp = jQuery(_config.layer.element);
		
		if(lTemp.length > 0)
		{
			var docHeight = jQuery(document).height();
			
			var winHeight = jQuery(window).height();
			
			/* On prend la plus grande hauteur entre la hauteur de la fenêtre et la hauteur du document */
			var layerHeight = (winHeight > docHeight) ? winHeight : docHeight;
			
			layerObject = lTemp;
			layerObject.css({'height': layerHeight+'px'});
		}
	}
	
	if(window.jQuery)
	{
		jQuery(window).load(init);
	}
})();

var MailElligibilite = (function()
{
	var formObject = null;
	
	function submitForm(ev)
	{
		if(formObject != null)
		{
			ev.preventDefault();
			formObject.submit();
		}
	}
	
	function stopForm(ev)
	{
		ev.preventDefault();
	}
	
	function treatForm(ev)
	{
		var mailObject = jQuery('#elligibilite-mail');
		
		if(mailObject.length > 0)
		{
			var aEvent = ev;
			
			var mail = mailObject.value;
			
			var error = {};
			
			var mailTest = /^[a-zA-Z0-9\._-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)?$/;
			
			if(mail != '' && mail != mailObject.defaultValue && !mail.match(mailTest))
			{
				//error['mailEmpty'] = 'Le mail est obligatoire !';
				error['mailMalformed'] = 'Le mail est incorrect !';
			}
			
			var canSend = 0;
			
			for(var prop in error)
			{
				canSend++;
			}
			
			var oiObject = jQuery('mail-info');
			if(!!oiObject && oiObject.checked)
			{
				oiObject = 'O';
			}
			else
			{
				oiObject = 'N';
			}
			
			if(canSend == 0)
			{
				var soapCode = FormUtil.generateSoapCode(mail,oiObject);

				jQuery.ajax({
				url: '/enablers-prospect/services/WSRedboxProspect',
				type: 'post',
				contentType: 'application/soap+xml',
				beforeSend: function(xhr)
				{
					xhr.setRequestHeader('SOAPAction','prospect.redbox.darty.com/sauvegardeProspect');
				},
				success: function(xhr){
					submitForm(aEvent);
				},
				error: function(xhr){stopForm(aEvent)},
				data: soapCode
				});
			}
			else
			{
				var errorCode = '';
				
				for(var prop in error)
				{
					errorCode += error[prop]+'\n';
				}
				
				if(errorCode != '')
				{
					alert(errorCode);
				}
				
				//submitForm(arguments[0]);
				
				ev.preventDefault();
			}
		}
		else
		{
			submitForm(aEvent);
		}
	}
	
	function init()
	{
		formObject = jQuery('form.ligne-test').bind('submit',treatForm);
	}
	
	if(window.jQuery)
	{
		jQuery(window).load(init);
	}
})();

var PopUnderUtil = (function()
{
	function close()
	{
		if(window.opener && !window.opener.closed)
		{
			window.close();
		}
		else
		{
			window.location.href = '/';
		}
	}

	function init()
	{
		var closeZone = jQuery('div.message p.fermer');
	
		closeZone.each(function()
		{
			jQuery(this).bind('click',close);
		});
	}
	
	if(window.jQuery)
	{
		jQuery(document).ready(init);
	}
})();

// Les éléments HTML inconnus doivent être déclarés dans le dom pour pouvoir appliquer un style sous IE !!!

if(!!window.jQuery && jQuery.browser.msie)
{
	jQuery.each(['section','footer','header','hgroup','article'],function(ind,el)
			{
				document.createElement(el);
			}
		);
}

var DebugUtil = (function()
{
	var internalString = '';
	
	var retour = {
		initialize: function()
		{
			//internalString = '';
		},
		displayMessage: function(str)
		{
			//if(internalString == '')alert(document.getElementById('debug'));
			if(!document.getElementById('debug'))
			{
				jQuery(document.body).append('<div id="debug"></div>');
			}
			
			//if(internalString == '')alert(document.getElementById('debug'));
			
			internalString += str;
			//alert(internalString)
			jQuery('div#debug').html(internalString);
		}
	};
	
	return retour;
})();

(function()
{
	var _conf = {activeClass: 'active-eligible',
	initClass: 'init-eligible',
	selector: 'div#form-eligibilite.eligible-layer'};
	
	function displayLayer(ev)
	{
		jQuery(_conf.selector).css({visibility: 'visible'});
		if(arguments.length >= 1)
		{
			ev.preventDefault();
		}
	}
	
	function closeLayer(ev)
	{
		jQuery(_conf.selector).css({visibility: 'hidden'});
		
		if(arguments.length >= 1)
		{
			ev.preventDefault();
		}
	}
	
	function init()
	{
		var tL = jQuery(_conf.selector);
		
		if(tL.length == 1)
		{
			var fE = jQuery(_conf.selector).detach();
			fE.css({visibility: 'hidden'});
			
			var vPHeight = jQuery(window).height();
			var docHeight = jQuery(document).height();
			
			var layerHeight = (vPHeight > docHeight) ? vPHeight : docHeight;
			
			fE.removeClass('ligne-test');
			jQuery('form',fE).removeClass('ligne-test');
			
			fE.css({'height': layerHeight});
			
			jQuery('body').append(fE);
			
			var mailG = jQuery('div.mail-group').detach();
			jQuery('form',fE).append(mailG);
			
			jQuery('form',fE).append('<p class="fermer"><a class="image" href="#recevoir-info">Fermer</a></a>');
			jQuery(_conf.selector+' p.fermer a').bind('click',closeLayer);
		}
		
		var bTL = jQuery('p.eligibilite');
		
		if(bTL.length == 1)
		{
			bTL.bind('click',displayLayer);
		}
		
		if(window.location.search)
		{
			var reqVars = UriInfo.getRequestParam();
			
			if(UriInfo.getParamValue(reqVars,'ligneTest') == 'true')
			{
				//displayLayer();
			}
		}
	}
	
	window.Promo100 = {
		test: function()
		{
			displayLayer();
		}
	};
	
	if(window.jQuery)
	{
		jQuery(document).ready(init);
	}
})();
