// $Id Adrien Felipe
// This file should be cleaned to be the unique banner javascript file.

$(document).ready(function() {
	// Check if the banner is contained.
	if (target = $('.product.coupon.banner'))
	{
		// Coupon elements zones.
		var header = target.find('.header');
		var content = target.find('.content');
		
		// Content is not needed while the form is opened as a popup.
		content.hide();
//		$('.coupon .content .webform').load('/Pics/YCommons/couponing/webforms/' + $('.coupon .content .webform').attr("rel"));
				
		// Add header interaction functions if it does not have one already.
		if (!header.attr("onclick")) header.click(function()
		{
			clickBanner($(this));
		});	
	}
});

function clickBanner (header) {
	// Main banner div.
	var target = header.parent();
	
	// Get parameters.
	var lang = target.attr('lang');
	var type = target.attr('rel');
	var category = target.attr('label');
	
//	if (type == "001-freeTry" || lang == 'fr')
	if (type)
		openPopup_v4('http://os.onedirect.'+ lang +'/couponing/'+ type +'/'+ lang, category);
	else
		openPopup_v2('http://www.onedirect.'+lang+'/Pics/YCommons/couponing/001-freeTry/'+lang+'/cp.htm');
}

// Return the product name and the page category.
function findSource () {
	var label, product;
	
	// Search page
	if (document.location.href.search("/search")+1) {
		label = 'Search page';
		product = $('.fl h2 b').text();
	}
	else {	
		try	{
			// Product page
			if ($('.productInfosRight h1').text()) {
				label = 'Pdt: ' + $('.productInfosRight h1').text();
				product = $('.productInfosRight h1').text();
			}
			else throw(e1);
		} catch (e1) { try {
			// Rubric page
			label = 'Rubric page';
			product = $(".ttl_page_body h2").text();
			if (!label) throw(e2);
		} catch (e2) {
			label = '';
			product = '';
		}}
	}

	label = escape(label);
	product = escape(product);
	label = (label).replace(/^\s*|\s*$/g,'');
	product = (product).replace(/^\s*|\s*$/g,'');
	
	return {'label':label, 'category':false, 'product':product};
}



function openPopup_v4(linkURL, category) {
	
	if (typeof(linkURL) == 'string') href=linkURL;
	else href=linkURL.href;
	
	// Get language from the domain extention.
	var ext = document.domain.replace('www.onedirect.', '');
	ext = ext.replace('onedirect.', '');
	// Correct language for .com
	var lang = (ext == 'com')? 'de' : ext;
	
	// Get coupon type.
	cp_trans = {'freeTry':'freetry', 'moreInfo':'002', 'vozTelecom':'003', 'freeQuote':'004'};
	for (var str in cp_trans) {
		if (href.match(str)) {
			var type = cp_trans[str];
			break;
		}
	}
	
	// Rebuild URL.
	href = '#popup/'+ type;// +'?lang='+ lang;

	// Array that contains the page source data of the banner.
	// This way we can localize it.
	coupon_source = findSource();
	if (category) coupon_source.category = category
	
	//href += '&product='+ coupon_source.product + '&source='+ coupon_source.label;
	
	// Calling Google code in ga.js
	//_gaq.push(['_trackEvent', coupon_source.category, 'coupon clic (site)', coupon_source.label]);
	
	window.location = href;
	window.reload;
}





// All needed for compatibility.




function openPopup_v2(href) {
	// Make sure href is a string.
	if (typeof(href) != 'string') href=href.href;

	// Convert old URL into new ones.
	href = href.replace('www.onedirect', 'os.onedirect');
	href = href.replace('Pics/YCommons/', '');
	href = href.replace('cp.htm', '');
	
	// Last open popup script version.
	openPopup_v4(href);
	
	// Avoid onclic page redirection.
	return false;
}

function openPopup_v3(linkURL)
{
	if (! window.focus)return true;
	
	var href;
	var w = 750; var h = 600;
	var screenWidth=screen.width; var screenHeight=screen.height ;
	var params = 'width='+w+',height='+h+',left='+(screenWidth-w)/2+',top='+(screenHeight-h)/2+',toolbar=no,location=no,titlebar=no,directories=no,status=no,scrollbars=no,resizable=no,copyhistory=no,menuBar=no';
	
	if (typeof(linkURL) == 'string') href=linkURL;
	else href=linkURL.href;
	
	window.open(href, '_blank', params);
	return false;
}

function resizeCenterPage(w, h)
{
	var screenWidth=screen.width; var screenHeight=screen.height;

	if (document.getElementById("popupContainer"))
	{
		w = document.getElementById("popupContainer").clientWidth + 10;
		h = document.getElementById("popupContainer").clientHeight + 90;
	}

	if (!getQueryStringByName("popup"))
	{
		w = w + 24;
		h = h + 130;
	}

	if (getQueryStringByName("popup"))
	{
		window.moveTo((screenWidth-w)/2, (screenHeight-h)/2);
		window.resizeTo(w, h);
	}
}



function redirectPage(URL)
{
	window.location = URL + window.location.search;
}

function couponLoaded()
{
	loaderContainer.style.display = "none";
	popupContainer.style.display = "block";
	resizeCenterPage();
}


<!-- Dolist -->

// -----------------------------------------------------------------------------------------
// -------------------Verification de la validité de l'adresse mail ------------------------
// ------------------------------- Ne pas modifier -----------------------------------------
// -----------------------------------------------------------------------------------------
function verifMail(a){
  testm = false;
  reg = new RegExp("^[A-Za-z0-9]+([_\\.\\-][A-Za-z0-9]+)*@[A-Za-z0-9]+([_\\.\\-][A-Za-z0-9]{1,})*\\.([A-Za-z]{2,}){1}$", "");
  var ResultEmail = reg.test(a);
  
  if (ResultEmail)
    testm=true;

  return testm;
}

function CheckDate(d) {
  // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
  // Le séparateur est défini dans la variable separateur
  var amin=1901; // année mini
  var amax=2100; // année maxi
  var separateur="/"; // separateur entre jour/mois/annee
  var j=(d.substring(0,2));
  var m=(d.substring(3,5));
  var a=(d.substring(6));
  var ok=1;

  if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
    ok=0;
  }
  if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
    ok=0;
  }
  if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
    ok=0;
  }
  if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
    alert("Les séparateurs de date doivent être des "+separateur); ok=0;
  }
  if (ok==1) {
    var d2=new Date(a,m-1,j);
    j2=d2.getDate();
    m2=d2.getMonth()+1;
    a2=d2.getFullYear();
    if (a2<=100) {a2=1900+a2}
    if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
      alert("La date "+d+" n'existe pas !");
      ok=0;
    }
  }
  return ok;
}

// ------------------------------------
// Traductions

var Errors = {
	de :
	{	
		caption : "Bitte folgende Felder ausfuellen:",
		emailInvalid : "E-Mail Adresse ist ungueltig",
		email : "E-Mail Adresse",
		company : "Firma",
		city : "Stadt",
		lastname : "Name",
		phone : "Telefon",
		interest_6 : "Mitarbeiter"
	},
	es :
	{
		caption : "Por favor corrija los problemas siguientes:",
		emailInvalid : "Dirección de E-mail incorrecta",
		email : "Rellenar el campo E-mail",
		company : "Rellenar el campo Empresa",
		city : "Rellenar el campo Ciudad",
		lastname : "Rellenar el campo Apellido",
		phone : "Rellenar el campo Telefono",
		interest_6 : "Selecionar la plantilla"
	},
	fr :
	{
		caption : "Veuillez corriger les problemes suivants :",
		emailInvalid : "Adresse e-mail invalide",
		email : "Remplir le champ e-mail",
		company : "Remplir le champ Societe",
		city : "Remplir le champ ville",
		lastname : "Remplir le champ Nom",
		phone : "Remplir le champ Telephone",
		interest_6 : "Selectionner les employes"
	},
	it :
	{
		caption : "Si prega di correggere il seguente errore:",
		emailInvalid : "Indirizzo e-mail non valido",
		email : "Riempire il campo con l'indirizzo e-mail",
		company : "Riempire il campo: Societa",
		city : "Riempire il campo: Citta",
		lastname : "Riempire il campo: Cognome",
		phone : "Riempire il campo: Telefono",
		interest_6 : "Selezionare N dipendenti"
	},
	pt :
	{
		caption : "Por favor corrija os problemas seguintes:",
		emailInvalid : "Direcção de E-mail incorrecta",
		email : "Preencher o campo E-mail",
		company : "Preencheer o campo Empresa",
		city : "Preencher o campo Cidade",
		lastname : "Preencher o campo Apelido",
		phone : "Preencher o campo Telefone",
		interest_6 : "Seleccionar o quadro"
	}
};

/*

var Captions = {
	de :
	{	
		email : "E-Mail:",
		salutationId : "Anrede:",
		firstname : "Vorname:",
		lastname : "Name:",
		company : "Firma:",
		address1 : "Straße:",
		zipcode : "PLZ:",
		city : "Stadt:",
		phone : "Tel:",
		interest_6 : "Mitarbeiter:"
	},
	es :
	{
		email : "E-mail:",
		salutationId : "Trato:",
		firstname : "Nombre:",
		lastname : "Apellido:",
		company : "Empresa:",
		address1 : "Dirección:",
		zipcode : "Código Postal:",
		city : "Ciudad:",
		phone : "Teléfono:",
		interest_6 : "Plantilla:"
	},
	fr :
	{
		email : "E-mail :",
		salutationId : "Civilité :",
		firstname : "Prénom :",
		lastname : "Nom :",
		company : "Société :",
		address1 : "Adresse :",
		zipcode : "Code Postal :",
		city : "Ville :",
		phone : "Téléphone :",
		interest_6 : "Nb. employés :"
	}
};
*/

// End Traductions
// ------------------------------------


// -----------------------------------------------------------------------------------------
// -------------------- Verification des champs obligatoires -------------------------------
// Pour rajouter des champs obligatoires, copier coller le code suivant et modifier les noms
// -----------------------------------------------------------------------------------------


function valid(id, lang)
{
  var collectElements=document.forms["coupon_form"].elements;
  var testUtil = 1; 
  var form = document.coupon_form;
  
  var MessErreur = Errors[lang]['caption'] + "\n \n";

  var obj = "email";
  if(eval("form."+obj) && eval("form."+obj).value != ""){ 
    if (verifMail(eval("form."+obj).value) == true) // a enlever si le champs n'est pas l'email             
      testUtil = eval(testUtil&1); // Ne pas modifier cette ligne
    else {
      MessErreur = MessErreur+"\t - " + Errors[lang]['emailInvalid'] + " \n";
      testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
    }
  }
  else{
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }

  var obj = "company";
  if(eval("form."+obj) && eval("form."+obj).title == "force" && eval("form."+obj).value.replace(/(^\s*)|(\s*$)/g,'') == ""){ 
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }
  
  var obj = "city";
  if(eval("form."+obj) && eval("form."+obj).title == "force" && eval("form."+obj).value.replace(/(^\s*)|(\s*$)/g,'') == ""){ 
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }

  var obj = "lastname";
  if(eval("form."+obj) && eval("form."+obj).title == "force" && eval("form."+obj).value.replace(/(^\s*)|(\s*$)/g,'') == ""){ 
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }

  var obj = "phone";
  if(eval("form."+obj) && eval("form."+obj).title == "force" && eval("form."+obj).value.replace(/(^\s*)|(\s*$)/g,'') == ""){ 
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }

  var obj = "interest_6";
  if(eval("form."+obj) && eval("form."+obj).title == "force" && eval("form."+obj).value.substr(0,1) == "0"){ 
    MessErreur = MessErreur+"\t - " + Errors[lang][obj] + " \n";
    testUtil = eval(testUtil&0); // Ne pas modifier cette ligne
  }
  
// --------- Verification de la syntaxe des champs date et des champs numeriques -----------
// ------------------------------- NE PAS MODIFIER -----------------------------------------
  for(i=0;i<collectElements.length;i++){
    // Verification du contenu des champs numériques
    if(collectElements[i].name.substr(0,9) == "customint"){
      if(collectElements[i].value != ""){
        if(isNaN(collectElements[i].value)){
          MessErreur= MessErreur+"\t - "+collectElements[i].value+" n'est pas un chiffre \n";
          testUtil = eval(testUtil&0);
          //break;
        }
      }
    }

    // Verification du contenu des champs date
    if(collectElements[i].name.substr(0,10) == "customdate"){
      if(collectElements[i].value != ""){
        if(CheckDate(collectElements[i].value) == 0){
          MessErreur= MessErreur+"\t - "+collectElements[i].value+" n'est pas de la forme JJ/MM/AAAA \n";
          testUtil = eval(testUtil&0);
        }
      }
    }

    // Verification du champ birthdate      
    if(collectElements[i].name == "birthdate"){
      if(collectElements[i].value != ""){
        if(CheckDate(collectElements[i].value) == 0){
          MessErreur= MessErreur+"\t - "+collectElements[i].value+" n'est pas de la forme JJ/MM/AAAA \n";
          testUtil = eval(testUtil&0);
        }
      }
    }
  }
// -------- Fin Verification de la syntaxe des champs date et des champs numeriques --------

// ----------------------- Ne pas modifier la partie ci-dessous ----------------------------
  if(testUtil == 1){
    document.coupon_form.submit();
    return false;
  }
  else 
    alert(MessErreur);
}

function limite(zone,max) {
  if(zone.value.length>=max){zone.value=zone.value.substring(0,max);}
}


//----------------------
// **********************************
// * Nom du script : querystring_fonc v1.0
// * Auteur: Frédéric REMISE (Derf)
// * Date de création: 23/01/2003
// * Email : 
// **********************************

// Récupération de la requête contenue dans l'URL (sans le ?)
var req = window.location.search.substr(1,window.location.search.length);

// Récupération des paires paramètre=valeur
var dbl = req.split('&');

var aPrm = new Array();    // Pour stock. le nom des paramètres
var aVal = new Array();    // Pour stock. la valeur des paramètres
var objQS = new Object();  // Objet pour stock. le nom des paramètres

for (i=0;i < dbl.length;i++) {
  // Recup. le nom des parametres (Attention : elem.1 du tab. = param.1)
  aPrm[i+1] = dbl[i].substring(0,dbl[i].indexOf('='));
  
  // Recup. la valeur des parametres (Attention : elem.1 du tab. = val.param.1)
  aVal[i+1] = unescape(dbl[i].substring(dbl[i].indexOf('=')+1,dbl[i].length));
  
  // Stock la valeur des paramètres sous forme de propriété
  objQS[aPrm[i+1]] = aVal[i+1];
}

// Renvoie la valeur d'un parametre par son nom
function getQueryStringByName(pname) 
{
  return eval("objQS." + pname);
}

// Renvoie la valeur d'un paramètre par sa position dans la requete
// Attention : le premier paramètre de la requete est le 1 etc..
function getQueryStringByPos(ppos)
{
  return aVal[ppos];
}

// Renvoie le nom d'un paramètre par sa position dans la requete
// Attention : le premier paramètre de la requete est le 1 etc..
function getParamNameByPos(ppos)
{
  return aPrm[ppos];
}

function product_defined_in_query(href) {
	if (href.indexOf('product=')+1) {
		start = href.indexOf('product=') + String('product=').length;
		end = href.indexOf('&', start);
		if (end+1) product = href.substr(start, end-start);
		else product = href.substr(start);
		
		return product;
	}
	return false;
}
