var getJSONFragment = function(json, type) {
	return (typeof json == 'object' && json[type]) ? json[type] : null;
};

var getRandomNumber = function(min, max) {
	return Math.floor(Math.random() * max + min);
};

var makeTemplateLink = function(datas) {
	var tpl = '<a href="' + datas.url + '" target="_top"';
	if (datas.title) {
		tpl += ' title="' + datas.title + '"';
	}
	if (datas.xiti) {
		tpl += ' onclick="xt_med(' + datas.xiti + ');"';
	}
	if (datas.cls) {
		tpl += ' class="' + datas.cls + '"';
	}
	tpl += '>' + datas.content + '</a>';
	return tpl;
};

var makeTemplateImage = function(datas) {
	datas.width = datas.width || 180;
	datas.height = datas.height || 100;
	var tpl = '<img src="' + datas.src + '" width="' + datas.width + '" height="' + datas.height + '" alt="';
	if (datas.alt) {
		tpl += datas.alt;
	}
	tpl += '" />';
	return tpl;
};

var compileTemplate = function(tplType, datas) {
	if($('tpl_'+tplType)) {
		var lg, xiti, tpl, tmp;
		if(tplType == 'destHL') {
			lg = $('tpl_destHL').className.replace('lang:', '');
			xiti = "'C'," + lg + ",'business::agencies::navigation::news_destinations','N'";
			tpl = '<div class="highlightDEA-noh"><div class="visuel-noh">';
			if (datas.image) {
				tmp = makeTemplateImage({'src': datas.image, 'alt': datas.titre});
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': tmp, 'xiti': xiti, 'title': datas.titre});
				} else {
					tpl += tmp;
				}
			}
			tpl += '</div><div class="content-noh">';
			if (datas.titre) {
				tpl += '<h2>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.titre, 'xiti': xiti});
				} else {
					tpl += datas.titre;
				}
				tpl += '</h2>';
			}
			if (datas.texte) {
				tpl += '<p>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.texte, 'xiti': xiti});
				} else {
					tpl += datas.texte;
				}
				tpl += '</p>';
			}
			if (datas.lien2) {
				tpl += makeTemplateLink({'url': datas.lien1, 'content': $$('#tpl_tradeshows a.learnDEA-noh')[0].innerHTML, 'xiti': xiti, 'cls':'learnDEA-noh'});
			}
			tpl += '</div></div>';
		}
		if(tplType == 'tradeshows') {
			lg = $('tpl_tradeshows').className.replace('lang:', '');
			xiti = "'C'," + lg + ",'business::agencies::navigation::news_tradeshows','N'";
			tpl = '<div class="highlightDEA-noh"><div class="visuel-noh">';
			if (datas.image) {
				tmp = makeTemplateImage({'src': datas.image, 'alt': datas.titre});
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': tmp, 'xiti': xiti, 'title': datas.titre});
				} else {
					tpl += tmp;
				}
			}
			tpl += '</div><div class="content-noh">';
			if (datas.datedeb || datas.datefin) {
				tpl += '<p class="tradeDate-noh">';
				if (datas.datedeb && !datas.datefin) {
					tmp = datas.datedeb;
				} else if (!datas.datedeb && datas.datefin) {
					tmp = datas.datefin;
				} else {
					tmp = $('from-noh').innerHTML + datas.datedeb + $('to-noh').innerHTML + datas.datefin;
				}
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': tmp, 'xiti': xiti});
				} else {
					tpl += tmp;
				}
				tpl += '</p>';
			}
			if (datas.titre) {
				tpl += '<h2>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.titre, 'xiti': xiti});
				} else {
					tpl += datas.titre;
				}
				tpl += '</h2>';
			}
/* 			if (datas.texte) {
				tpl += '<p>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.texte, 'xiti': xiti});
				} else {
					tpl += datas.texte;
				}
				tpl += '</p>';
			} */
			if (datas.lien2) {
				tpl += makeTemplateLink({'url': datas.lien2, 'content': $$('#tpl_tradeshows a.learnDEA-noh')[0].innerHTML, 'xiti': xiti, 'cls':'learnDEA-noh'});
			}
			tpl += '</div></div>';
		}
		if(tplType == 'opens') {
			lg = $('tpl_opens').className.replace('lang:', '');
			xiti = "'C'," + lg + ",'business::agencies::navigation::news_network','N'";
			tpl = '<div class="openDEA-noh">';
			if (datas.image) {
				tmp = makeTemplateImage({'src': datas.image, 'alt': datas.titre});
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': tmp, 'xiti': xiti, 'title': datas.titre});
				} else {
					tpl += tmp;
				}
			}
			if (datas.mention) {
				tpl += '<h2>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.mention, 'xiti': xiti});
				} else {
					tpl += datas.mention;
				}
				tpl += '</h2>';
			}
			if (datas.titre) {
				tpl += '<p>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.titre, 'xiti': xiti});
				} else {
					tpl += datas.titre;
				}
				tpl += '</p>';
			}
			if (datas.date) {
				tpl += '<p>';
				if (datas.lien1) {
					tpl += makeTemplateLink({'url': datas.lien1, 'content': datas.date, 'xiti': xiti});
				} else {
					tpl += datas.date;
				}
				tpl += '</p>';
			}
			if (datas.lien2) {
				tpl += makeTemplateLink({'url': datas.lien2, 'content': $$('#tpl_opens a.networkLearn-noh')[0].innerHTML, 'xiti': xiti, 'cls':'networkLearn-noh'});
			}
			tpl += '</div>';
		}
	}
	return tpl;
};

var addTemplateToPage = function(options) {
	addDomReadyListener(function() {
		var dom = $(options.insertTo);
		if (dom) {
			new Ajax.Request(options.url + '?time=' + new Date().getTime(), {
				method: 'get',
				onSuccess: function(request) {
					var json = request.responseText;
					if (typeof json == 'string') {
						json = eval('(' + json + ')');
					}
					if (typeof json == 'object') {
						var fragment;
						if (options.code_pays) {
							fragment = getJSONFragment(json, options.code_pays);
							if (!fragment){
							fragment = getJSONFragment(json, 'DEF'); 
							}
						} else {
							fragment = getJSONFragment(json, 'DEF');
						}
						fragment = getJSONFragment(fragment || json, options.type);
						if (fragment.length) {
							options.number = options.number || 1;
							if (fragment.length < options.number) {
								options.number = fragment.length;
							}
							for (i = 0; i < options.number; i++) {
								var n = getRandomNumber(0, fragment.length);
								var tpl = compileTemplate(options.type, fragment[n]);
								fragment = fragment.without(fragment[n]);
								dom.insert(tpl);
							}
						}
					}
					if (auto_height_iframe) {
						auto_height_iframe();
					}
				}
			});
		}
	});
};