var googleAds = {
	google_client_account: 'pub-9532649869618418',
	google_ad_channel: '',
	google_afs_channel: '',

	initAdsense: function(label_google_ads, language, type, max_num_ads, keyword){
		// callback method
		google_ad_request_done = function(g_ads) {
			for (var i=0; i<g_ads.length; i++) {
				var ad = g_ads[i];
				if (ad.type==="text") {
					googleAds.text.ad_list.push(ad);
				}
			}
			googleAds.text.label_google_ads = label_google_ads;
			googleAds.text.ad_ready = true;
		};

		// initial parameters
		google_ad_client = googleAds.google_client_account;
		google_ad_channel = googleAds.google_ad_channel;
		google_feedback = 'on';
		google_ad_output = 'js';
		google_language = language;
		google_encoding = 'utf8';
		google_ad_type = type;
		google_image_size = '200x200';
		google_max_num_ads = max_num_ads;

		// ajout du script pour l'appel
		document.write("<script type='text/javascript' src='http://pagead2.googlesyndication.com/pagead/show_ads.js'></script>");
	},

	initAdsenseForSearch: function(label_google_ads, language, query, num_ads_wide, num_ads_narrow){
		// callback method
		var in_label_google_ads = label_google_ads;
		var in_language = language;
		var in_num_ads = num_ads_wide + num_ads_narrow;
		google_afs_request_done = function(g_ads) {
			// si pas de pub on affiche des adsenses normales
			if (g_ads.length===0) {
				googleAds.text.afs_no_ads = true;
				googleAds.initAdsense(in_label_google_ads, in_language, 'text', in_num_ads);
			}
			
			for (var i=0; i<g_ads.length; i++) {
				var ad = g_ads[i];
				if (ad.type==="text/narrow") {
					googleAds.text.afs_list_narrow.push(ad);
				} else if (ad.type==="text/wide") {
					googleAds.text.afs_list_wide.push(ad);
				}
			}
			googleAds.text.label_google_ads = in_label_google_ads;
			googleAds.text.afs_ready = true;
		};

		// initial parameters
		google_afs_query = query;
		google_afs_ad = 'w' + num_ads_wide + 'n' + num_ads_narrow;
		google_afs_client = googleAds.google_client_account;
		google_afs_channel = googleAds.google_afs_channel;
		google_afs_adsafe = 'high';
		google_afs_hl = language;
		google_afs_ie = 'utf8';
		google_afs_oe = 'utf8';

		// ajout du script pour l'appel
		document.write("<script type='text/javascript' src='http://www.google.com/afsonline/show_afs_ads.js'></script>");
	}
};
googleAds.text = {
	ad_list: [], // adsense ads list
	ad_ready: false, // adsense ready

	afs_no_ads: false, // true if "adsense for search" retrieves no ads
	afs_list_narrow: [], // "adsense for search" narrow ads list
	afs_list_wide: [], // "adsense for search" wide ads list
	afs_ready: false,// "adsense for search" ready

	label_google_ads: '',

	addInNews: function(trId, format, isAdsForSearch, options){
		var tr = document.getElementById(trId);
		var td = tr.getElementsByTagName('td')[1];
		this.addInElement(td, format, tr, isAdsForSearch, options);
	},
	addInElementById: function(elementId, format, elementToShowId, isAdsForSearch, options){
		var element = document.getElementById(elementId);
		var elementToShow = elementToShowId ? document.getElementById(elementToShowId) : element;
		this.addInElement(element, format, elementToShow, isAdsForSearch, options);
	},
	addInElement: function(element, format, elementToShow, isAdsForSearch, options){
		if(!element) return;

		if( (isAdsForSearch && !this.afs_ready) || (!isAdsForSearch && !this.ad_ready)){
			var in_arguments = arguments;
			var in_this = this;
			setTimeout(function(){in_arguments.callee.call(in_this, element, format, elementToShow, isAdsForSearch, options);},200);
		}else{
			var printAd = function(ad, wide){
				var s = "";
				s += "<a href='" + ad.url + "' class='line1' target='_blank'>" + ad.line1 + "</a>";
				if(ad.line2) {
					//s += "<br /><a href='" + ad.url + "' class='line2'>" + ad.line2 + "</a>";
					s += "<br /><span class='line3'>" + ad.line2 + "</span>";
				}
				if(ad.line3) {
					s += !wide ? "<br />" : " ";
					//s += "<a href='" + ad.url + "' class='line3'>" + ad.line3 + "</a>";
					s += "<span class='line3'>" + ad.line3 + "</span>";
				}
				if(wide) {
					s += " <a href='" + ad.url + "' class='url' target='_blank'>" + ad.visible_url + "</a>";
				} else {
					s += "<br /><a href='" + ad.url + "' class='url' target='_blank'>" + ad.visible_url + "</a>";
				}
				return s;
			};
			var s = "";
			var wide = options && options.wide;
			var rows = 0;
			var cols = 0;
			if(format.indexOf('x')>0){
				rows = format.split("x")[0];
				cols = format.split("x")[1];
			} else if (format==1) {
				rows = 1;
				cols = 1;
			} else if (format==2) {
				rows = 1;
				cols = 2;
			} else if (format==3) {
				rows = 2;
				cols = 1;
			} else if (format==4) {
				rows = 3;
				cols = 1;
			}
			
			// la liste à utiliser
			var list = isAdsForSearch ? (wide ? this.afs_list_wide : this.afs_list_narrow) : this.ad_list;
			
			// vérification qu'il y a des pubs à afficher
			if(list.length===0){
				if(isAdsForSearch && this.afs_no_ads) {
					// affichage de pub adsense meme s'il n'y a pas de adwords
					// commenter la ligne suivante pour désactiver le ciblage contenu si pas de résultat AFS
					arguments.callee.call(this, element, format, elementToShow, false, options);
				}
				return;
			}
			
			//ajout de annonces google
			if(options && options.fontcolor && options.fontcolor!='' && options.fontcolor!='null') {
				var fontColor = options.fontcolor;
				var linkGoogleAds = "<a href='" + (isAdsForSearch ? "http://services.google.com/feedback/online_hws_feedback" : google_info.feedback_url) + "' class='adsFeedback' style='color:"+fontColor+"'>" + this.label_google_ads + "</a>";
			} else {
				var linkGoogleAds = "<a href='" + (isAdsForSearch ? "http://services.google.com/feedback/online_hws_feedback" : google_info.feedback_url) + "' class='adsFeedback'>" + this.label_google_ads + "</a>";
			}
			if(options && options.googleAdsLinkContainerId){
				document.getElementById(options.googleAdsLinkContainerId).innerHTML = linkGoogleAds;
			}else{
				s += linkGoogleAds;
			}
			
			// affichage des pubs
			if(options && options.color && options.color!='' && options.color!='null') {
				var borderColor = options.color;
				s += "<table class='adsgoogle' style='border: 1px solid "+borderColor+";'>";
			} else {
				s += "<table class='adsgoogle'>";
			}
						
			for(var i=0; i<rows; i++){
				// vérification qu'il y a un nb suffisant de pubs pour remplir les lignes (sauf la premiere dans laquelle on affiche ce que l'on peut)
				if(i>0 && list.length<cols) {
					break;
				} else {
					s += "<tr>";
					for(var j=0; j<cols; j++){
						var ad = list.shift();
						if(ad){
							s += "<td>";
							s += printAd(ad, wide);
							s += "</td>";
						}else{
							break;
						}
					}
					s += "</tr>";
				}
			}
			s += "</table>";
			
			// alimentation
			element.innerHTML = s; 
			elementToShow.style.display='';
		}
	}
};