

var esf = 
{
	defaultLanguage	: 'FRA',	
	URL             : 'http://www.vente-en-ligne-esf.com/corner.jsp',
	useOnlyThisCard	: null,
	
	hote :
	{
		hash     : document.location.hash,
		host     : document.location.host,
		hostname : document.location.hostname,
		href     : document.location.href,	
		pathname : document.location.pathname,
		port     : document.location.port,
		protocol : document.location.protocol,
		search   : document.location.search
	},

	iframeInfos :
	{
		id        : 'esf-iframe',
		width     : 770,
		height    : 550,
		scrolling : 'no',
		border    : 0
	},

	cardtype : 
	{
		useOnly: false // define here a card type name
	},

	Parameter :
	{
		create : function (name, value)
		{
			var param 	= new Object();
			param.name 	= name;
			param.value = value;

			return param;
		},

		add : function (parameters, name, value)
		{
			parameters.push (esf.Parameter.create (name, value));
		},

		remove : function (parameters, name)
		{
			var value;
			var found = false;
			
			var l = parameters.length;
			
			
			
			for (var i = 0 ; i < l ; i++)
			{
				if (found)
				{
					parameters[i - 1] = parameters[i];
				}
				else if (parameters[i].name == name)
				{
					value = parameters[i].value;
					found = true;
				}
			}

			if (found)
			{
				parameters.length--;
			}

			return value;
		},

		parse : function(search)
		{
			var parameters = new Array();
			
			if (!search)
			{
				return parameters;
			}

			if (search.indexOf ('?') == 0)
			{
				search = search.substring (1);
			}

			var couples = search.split ('&');
			for ( var i = 0 ; i < couples.length ; i++ )
			{
				var nameValue = couples[i].split ('=');
				esf.Parameter.add
				(
					parameters, 
					nameValue[0], 
					unescape(nameValue[1])
				);
			}

			return parameters;
		},

		serialize : function (parameters)
		{
			if (!parameters.length)
			{
				return new String();
			}
			
			var s = '?';
			for (var i = 0 ; i < parameters.length ; i++)
			{
				s += (i > 0 ? '&' : '') + parameters[i].name + "=" + escape (parameters[i].value);
			}

			return s;
		}
	},

	open : function (ecoleid, hoteid, language)
	{
		var src = esf.getIframeSource (ecoleid, hoteid, language);

		var iframe = esf.getIframe();
		if (iframe)
		{
			esf.updateIframe (iframe, src);
		}
		else
		{
			esf.writeNewIframe (src);
		}
		
	},

	getIframe : function()
	{
		return document.getElementById (esf.iframeInfos.id);
	},

	writeNewIframe : function(src)
	{
		var iframe;
		iframe  = '<' + 'iframe';
		iframe += ' src="'         + src + '"';
		iframe += ' id="'          + esf.iframeInfos.id + '"';
		iframe += ' width="'       + esf.iframeInfos.width + '"';
		iframe += ' height="'      + esf.iframeInfos.height + '"';
		iframe += ' scrolling="'   + esf.iframeInfos.scrolling + '"';
		iframe += ' frameborder="' + esf.iframeInfos.border + '"';
		iframe += '></' + 'iframe>';

		document.write(iframe);
	},
	
	updateIframe : function(iframe, src)
	{
		iframe.src = src; 
	},
	
	getIframeSource : function(ecoleid, hoteid, language)
	{
		var hoteParams		= esf.getHoteParameterArray();
		var iframeParams	= new Array();

		esf.Parameter.add(iframeParams, 'ecoleid', ecoleid);
		esf.Parameter.add(iframeParams, 'hoteid',  hoteid);
		esf.Parameter.add(iframeParams, 'langue',  language);
		
		if (esf.cardtype.useOnly)
		{
			esf.Parameter.add (iframeParams, 'useOnlyThisCard', esf.cardtype.useOnly);
		}

		return (esf.URL + esf.Parameter.serialize(iframeParams));
	},

	getCallback : function(parameters)
	{
		var callback;
		callback  = esf.hote.protocol + '//';
		callback += esf.hote.host + esf.hote.pathname;
		callback += esf.Parameter.serialize(parameters);
		callback += esf.hote.hash;

		return callback;
	},

	getHoteParameterArray : function()
	{
		return esf.Parameter.parse (esf.hote.search);
	},

	getEsfParamAndRemoveIt : function(parameters)
	{
		return esf.Parameter.remove (parameters, 'esf.param');
	}
};



