/* **************************************
                Object : SiteServer
--------------------------------------------------
 Version :
     1.0 - 080218 - KIG
 Description :
    Permet d'associer à l'url d'un site, l'url eRepo par défaut 
 Attributes :
    + urlSite : l'url du site
    + eRepoUrl : l'url du serveur eRepo associé
************************************** */
function SiteServer(urlSite, eRepoUrl){
    this.urlSite = urlSite ;
    this.eRepoUrl = eRepoUrl ;
}

SiteServer.prototype.getUrlSite = function(){
    if(this.urlSite){
        return this.urlSite ;
    }
    else{
        return "" ;
    }
}

SiteServer.prototype.getERepoUrl = function(){
    if(this.eRepoUrl){
        return this.eRepoUrl ;
    }
    else{
        return "" ;
    }
}

/* **************************************
                Object : SiteAmbiance
--------------------------------------------------
 Version :
     1.0 - 080218 - KIG
 Description :
    Permet d'associer à l'url d'un site, l'url eRepo par défaut 
 Attributes :
    + urlSite : l'url du site
    + eRepoUrl : l'url du serveur eRepo associé
************************************** */
function SiteAmbiance(_newAmbiance, _bgimage, _mdrimage, _mdrbgcolor, _menuhautbgcolor, _mainbgcolor, _logoAmbiance){
    this.nom = _newAmbiance ;
    this.bgImage = _bgimage ;
    this.mdOkImage = _mdrimage ;
    this.mdrSelectBgColor = _mdrbgcolor ;
    this.menuHautBgColor = _menuhautbgcolor ;
    this.bgcolor = _mainbgcolor ;
    this.logoAmbiance = _logoAmbiance ;
}

SiteAmbiance.prototype.getNomAmbiance = function(){
    if(this.nom){
        return this.nom ;
    }
    else{
        return "" ;
    }
}

SiteAmbiance.prototype.getBgImage = function(){
    if(this.bgImage){
        return this.bgImage ;
    }
    else{
        return "" ;
    }
}
SiteAmbiance.prototype.getSearchConfirmButton = function(){
    if(this.mdOkImage){
        return this.mdOkImage ;
    }
    else{
        return "" ;
    }
}

SiteAmbiance.prototype.getSearchSelectBgImage = function(){
    if(this.mdrSelectBgColor){
        return this.mdrSelectBgColor ;
    }
    else{
        return "" ;
    }
}

SiteAmbiance.prototype.getTopMenuBgColor = function(){
    if(this.menuHautBgColor){
        return this.menuHautBgColor ;
    }
    else{
        return "" ;
    }
}

SiteAmbiance.prototype.getMainBgColor = function(){
    if(this.bgcolor){
        return this.bgcolor ;
    }
    else{
        return "" ;
    }
}

SiteAmbiance.prototype.getLogoAmbiance = function(){
    if(this.logoAmbiance){
        return this.logoAmbiance ;
    }
    else{
        return "" ;
    }
}


/* **************************************
                Object : RayonObj
--------------------------------------------------
 Version :
     1.0 - 0800904 - KIG
 Description :
    Permet de creer l'objet Rayon 
 Attributes :
    + name : nom du rayon
    + url : l'url du rayon
    + multiName : mulitlingual categoy name du rayon
************************************** */
function RayonObj(name, url, multiName, nameImage3, id){
    this.name = name ;
    this.url = url ;
    this.multiName = multiName ;
    this.nameImage3 = nameImage3 ;
    this.id = id ;
}

function RayonObj(){
    this.name = "" ;
    this.url = "" ;
    this.multiName = "" ;
    this.nameImage3 = "";
    this.id = "" ;
}

RayonObj.prototype.getName = function(){
    if(this.name){
        return this.name ;
    }
    else{
        return "" ;
    }
}

RayonObj.prototype.getUrl = function(){
    if(this.url){
        return this.url ;
    }
    else{
        return "" ;
    }
}

RayonObj.prototype.getMultiName = function(){
    if(this.multiName){
        return this.multiName ;
    }
    else{
        return "" ;
    }
}

RayonObj.prototype.getNameImage3 = function(){
    if(this.nameImage3){
        return this.nameImage3 ;
    }
    else{
        return "" ;
    }
}

RayonObj.prototype.getId = function(){
    if(this.id){
        return this.id ;
    }
    else{
        return "" ;
    }
}

RayonObj.prototype.setName = function(_name){
    this.name = _name ;
}

RayonObj.prototype.setUrl = function(_url){
    this.url = _url ;
}

RayonObj.prototype.setMultiName = function(_multiname){
    this.multiName = _multiname ;
}

RayonObj.prototype.setNameImage3 = function(_nameImage3){
    this.nameImage3 = _nameImage3 ;
}

RayonObj.prototype.setId = function(_id){
    this.id = _id ;
}

/* **************************************
                Object : SSRayonObj
--------------------------------------------------
 Version :
     1.0 - 0800904 - KIG
 Description :
    Permet de creer l'objet Sous Rayon 
 Attributes :
    + name : nom du sous rayon
    + url : l'url du sous rayon
    + multiName : mulitlingual categoy name du sous rayon
************************************** */
function SSRayonObj(name, url, multiName){
    this.name = name ;
    this.url = url ;
    this.multiName = multiName ;
}

SSRayonObj.prototype.getName = function(){
    if(this.name){
        return this.name ;
    }
    else{
        return "" ;
    }
}

SSRayonObj.prototype.getUrl = function(){
    if(this.url){
        return this.url ;
    }
    else{
        return "" ;
    }
}

SSRayonObj.prototype.getMultiName = function(){
    if(this.multiName){
        return this.multiName ;
    }
    else{
        return "" ;
    }
}

SSRayonObj.prototype.setName = function(_name){
    this.name = _name ;
}

SSRayonObj.prototype.setUrl = function(_url){
    this.url = _url ;
}

SSRayonObj.prototype.setMultiName = function(_multiname){
    this.multiName = _multiname ;
}


/* **************************************
                Object : FamilleObj
--------------------------------------------------
 Version :
     1.0 - 0800904 - KIG
 Description :
    Permet de creer l'objet Famille
 Attributes :
    + name : nom de la famille
    + url : l'url de la famille
    + multiName : mulitlingual categoy name de la famille
    + codeExterne : Id masterdata de la famille
************************************** */
function FamilleObj(name, url, multiName, codeExterne, sousRayon){
    this.name = name ;
    this.url = url ;
    this.multiName = multiName ;
    this.codeExterne = codeExterne ;
    this.sousRayon = sousRayon ;
}

FamilleObj.prototype.getName = function(){
    if(this.name){
        return this.name ;
    }
    else{
        return "" ;
    }
}

FamilleObj.prototype.getUrl = function(){
    if(this.url){
        return this.url ;
    }
    else{
        return "" ;
    }
}

FamilleObj.prototype.getMultiName = function(){
    if(this.multiName){
        return this.multiName ;
    }
    else{
        return "" ;
    }
}

FamilleObj.prototype.getSousRayon = function(){
    if(this.sousRayon){
        return this.sousRayon ;
    }
    else{
        return "" ;
    }
}

FamilleObj.prototype.getCodeExterne = function(){
    if(this.codeExterne){
        return this.codeExterne ;
    }
    else{
        return "" ;
    }
}

FamilleObj.prototype.setName = function(_name){
    this.name = _name ;
}

FamilleObj.prototype.setUrl = function(_url){
    this.url = _url ;
}

FamilleObj.prototype.setMultiName = function(_multiname){
    this.multiName = _multiname ;
}

FamilleObj.prototype.setCodeExterne = function(_codeExterne){
    this.codeExterne = _codeExterne ;
}

/* **************************************
                Object : EnseigneSiteObj
--------------------------------------------------
 Version :
     1.0 - 0800919 - KIG
 Description :
    Permet de creer l'objet EnseigneSiteObj
 Attributes :
    + centrale : la centrale du pays
    + url : l'url du site enseigne
    + repository : le repository itool
************************************** */
function EnseigneSiteObj(centrale, url, repository){
    this.centrale = centrale ;
    this.url = url ;
    this.repository = repository ;
}

EnseigneSiteObj.prototype.getCentrale = function(){
    if(this.centrale){
        return this.centrale ;
    }
    else{
        return "" ;
    }
}

EnseigneSiteObj.prototype.getUrl = function(){
    if(this.url){
        return this.url ;
    }
    else{
        return "" ;
    }
}

EnseigneSiteObj.prototype.getRepository = function(){
    if(this.repository){
        return this.repository ;
    }
    else{
        return "" ;
    }
}

EnseigneSiteObj.prototype.setCentrale = function(_centrale){
    this.centrale = _centrale ;
}

EnseigneSiteObj.prototype.setUrl = function(_url){
    this.url = _url ;
}

EnseigneSiteObj.prototype.setRepository = function(_repository){
    this.repository = _repository ;
}


/* **************************************
                Object : BuGdbc
--------------------------------------------------
 Version :
     1.0 - 090223 - KIG
 Description :
    Permet d'associer à l'id d'un produit, le BU et la valeur du BU 
 Attributes :
    + _codeModele : Le code modèle
    + _cleBu : la clé du BI
    + _valeurBu : La valeur du BU
    + _imgBu : L'image du BU
    + _etoileBu : La note etoile du BU
************************************** */
function BuGdbc(_codeModele, _cleBu, _valeurBu, _imgBu, _etoileBu){
    this.codeModele = _codeModele ;
    this.cleBu = _cleBu ;
    this.valeurBu = _valeurBu ;
    this.imgBu = _imgBu ;
    this.etoileBu = _etoileBu ;    
}

BuGdbc.prototype.getCodeModele = function(){
    if(this.codeModele){
        return this.codeModele ;
    }
    else{
        return "" ;
    }
}

BuGdbc.prototype.getCleModele = function(){
    if(this.cleBu){
        return this.cleBu ;
    }
    else{
        return "" ;
    }
}

BuGdbc.prototype.getValeurModele = function(){
    if(this.valeurBu){
        return this.valeurBu ;
    }
    else{
        return "" ;
    }
}

BuGdbc.prototype.getImgModele = function(){
    if(this.imgBu){
        return this.imgBu ;
    }
    else{
        return "" ;
    }
}

BuGdbc.prototype.getEtoileModele = function(){
    if(this.etoileBu){
        return this.etoileBu ;
    }
    else{
        return "" ;
    }
}

BuGdbc.prototype.setCodeModele = function(_codeModele){
    this.codeModele = _codeModele ;
}

BuGdbc.prototype.setCleModele = function(_cleBu){
    this.cleBu = _cleBu ;
}

BuGdbc.prototype.setValeurModele = function(_valeurBu){
    this.valeurBu = _valeurBu ;
}

BuGdbc.prototype.setImgModele = function(_imgBu){
    this.imgBu = _imgBu ;
}

BuGdbc.prototype.setEtoileModele = function(_etoileBu){
    this.etoileBu = _etoileBu ;
}


/* ############################################################# */
/* #####################   Hashmap   ########################### */
/* ############################################################# */
function KeyValue( key, value ){
    this.key = key;
    this.value = value;
}


/* ############################################################
* Constructeur
*/
function Map(){
    this.array = new Array();
}

/* ############################################################
* Méthode put
* param :
*     key : clé
*     value : valeur
*/
Map.prototype.put = function( key, value ){
    if( ( typeof key != "undefined" ) && ( typeof value != "undefined" ) )
    {
        this.array[this.array.length] = new KeyValue( key, value );
    }
}

/* ############################################################
* Méthode get
* param :
*     key : clé
* return :
*     String	    
*/
Map.prototype.get = function( key ){
    for( var k = 0 ; k < this.array.length ; k++ )
    {
        if( this.array[k].key == key ) {
            return this.array[k].value;
        }
    }
    return "";
}

/* ############################################################
* Méthode remove
* param :
*     key : clé
* return :
*     String	    
*/
Map.prototype.remove = function( key ){
    for( var k = 0 ; k < this.array.length ; k++ )
    {
        if( this.array[k].key == key ) {
            this.array[k] = "" ;
            return k ;
        }
    }
    return -1 ;
}


/* ############################################################
* Méthode length
* return :
*     String	    
*/
Map.prototype.length = function(){
    return this.array.length;
}



/* ############################################################## */
/* #####################   ArrayList  ########################### */
/* ############################################################## */
function ArrayList(){
    this.arraylist = new Array();
}

/* ############################################################
* Méthode add
* param :
*     value : valeur à ajouter
*/
ArrayList.prototype.add = function(value){
    if( typeof value != "undefined" )
    {
        this.arraylist[this.arraylist.length] = value ;
    }
}

/* ############################################################
* Méthode get
* param :
*     index : index de la valeur à retourner
* return :
*     String	    
*/
ArrayList.prototype.get = function(index){
    if(this.arraylist[index]){
        return this.arraylist[index] ;    
    }
    else{
        return "" ;
    }
}

/* ############################################################
* Méthode length
* return :
*     String	    
*/
ArrayList.prototype.length = function(){
    return this.arraylist.length;
}

/* ############################################################
* Méthode contains
* param :
*     value : valeur à rechercher
* return :
*     boolean	    
*/
ArrayList.prototype.contains = function(value)
{
    for( var k = 0 ; k < this.arraylist.length ; k++ )
    {
        if( this.arraylist[k] == value ) {
            return k ;
        }
    }
    return -1 ;
}


/* **************************************
                Object : LinkStore
--------------------------------------------------
 Version :
     1.0 - 100305 - KIG
 Description :
     Permet de creer l'objet de liage vers le site enseigne
 Attributes :
    + _language : La langue du site
    + _idModel : Le code modele pour lequel on fait un liage
************************************** */

/**
* Permet d'associer une URL de liage vers l'enseigne en fonction du code pays
*/
function setMapUrlEnseigne(){
    var map = new Map() ;
    
    map.put("FR", "http://www.decathlon.fr/-id_") ;
    //map.put("EN", "http://www.decathlon.co.uk/-id_") ;
    //map.put("ES", "http://www.decathlon.es/-id_") ;
    //map.put("IT", "http://www.decathlon.it/-id_") ;
    
    return map ;
}

//Variable global avec la map contenant l'url de liage en fonction du code pays
var _mapUrlLiageEnseigne = setMapUrlEnseigne() ;

function LinkStore(_language, _idModel){
    this._idModel = _idModel ;
    this._language = _language ;
}

LinkStore.prototype.getUrlLiage = function(){        
    if(this._idModel){
        var currentUrlLiage = "" ; 
        var valueCookieCountry = getCookie("country") ;
        
        if(valueCookieCountry){
            currentUrlLiage = _mapUrlLiageEnseigne.get(valueCookieCountry) ;
        }
        else{
            currentUrlLiage = _mapUrlLiageEnseigne.get(this._language) ;
        }
        
        if(currentUrlLiage != null && currentUrlLiage != ''){
            return currentUrlLiage + this._idModel + ".html" ;
        }
        else{
            return null ;
        }
    }
    else{
        return null ;
    }
}