﻿// JScript File

///
/// Met à jour la liste des ConsumerCategorys en fonction des éléments sélectionnés :
///
/// dpeConsumerCategorys_ClientID : ClientID du panel qui recevra la réponse du WebService
/// portail_id : Valeur sélectionnée du Portail
/// client_id : Valeur sélectionnée du Canal de vente
/// priceCategory_id : Valeur sélectionnée du Groupe tarifaire
/// productCategory_id : Valeur sélectionnée du Domaine
/// validityCategory_id : Valeur sélectionnée de la durée
/// orderItem_validfrom : Date de ski
/// hidconsumerCategory_idSelected : 
/// intOrder : 
/// intOrderItem : 
///
function UpdateConsumerCategorysContactFiche(dpeConsumerCategorys_ClientID, portail_id, client_id, priceCategory_id, productCategory_id, validityCategory_id, orderItem_validfrom, hidconsumerCategory_idSelected, intOrder, intOrderItem)
{
    DynamicPopulate(dpeConsumerCategorys_ClientID, portail_id + ';' + client_id + ';' + priceCategory_id + ';' + productCategory_id + ';' + validityCategory_id + ';' + orderItem_validfrom + ';' + hidconsumerCategory_idSelected + ';' + intOrder + ';' + intOrderItem);
}
///
/// Met à jour le numéro de KeyCard sélectionné
///
/// labKeyCardNumber_Client_id : ClientID du panel qui recevra la réponse de la mise à jour
/// intOrder : 
/// intOrderItem : 
/// intSousOrderItem : 
/// contact_firstName_ClientID : ClientID du TextBox contenant le firstName
/// contact_lastName_ClientID : ClientID du TextBox contenant le lastName
/// contact_birthdate_ClientID : ClientID du TextBox contenant le birthdate
///
function UpdateOrderItem_ValidFrom(dpeResultOrderItem_validfromChangeBehaviorID, intOrder, datOrderItem_validFrom)
{
    DynamicPopulate(dpeResultOrderItem_validfromChangeBehaviorID, intOrder + ';' + datOrderItem_validFrom);
}
///
/// Met à jour le numéro de KeyCard sélectionné
///
/// labKeyCardNumber_Client_id : ClientID du panel qui recevra la réponse de la mise à jour
/// intOrder : 
/// intOrderItem : 
/// intSousOrderItem : 
/// contact_firstName_ClientID : ClientID du TextBox contenant le firstName
/// contact_lastName_ClientID : ClientID du TextBox contenant le lastName
/// contact_birthdate_ClientID : ClientID du TextBox contenant le birthdate
///
function UpdateDCDNumber(labKeyCardNumber_Client_id, DCD_chipID_client_id, DCD_serialNumber_client_id, DCD_luhnNumber_client_id)
{
    SetLabelText(labKeyCardNumber_Client_id, 's/n : ' + TextBoxText(DCD_chipID_client_id) + '-' + TextBoxText(DCD_serialNumber_client_id) + '-' + TextBoxText(DCD_luhnNumber_client_id));
}
///
/// Met à jour Nom, prénom et date de naissance d'un contact.
///
/// dpeBlocDonneesSkieurUpdateTextBox : BehaviourId du Panel qui recevra la réponse du webService.
/// intOrder : 
/// intOrderItem : 
/// intSousOrderItem : 
/// contact_firstName_ClientID : ClientID du TextBox contenant le firstName
/// contact_lastName_ClientID : ClientID du TextBox contenant le lastName
/// contact_birthdate_ClientID : ClientID du TextBox contenant le birthdate
///
function UpdateContactNameAndBirthdate(dpeBlocDonneesSkieurUpdateTextBox, intOrder, intOrderItem, intSousOrderItem, contact_firstName_ClientID, contact_lastName_ClientID, contact_birthdate_ClientID)
{
    DynamicPopulate(dpeBlocDonneesSkieurUpdateTextBox, intOrder + ';' +  intOrderItem + ';' +  intSousOrderItem + ';' + TextBoxText(contact_firstName_ClientID) + ';' + TextBoxText(contact_lastName_ClientID) + ';' + TextBoxText(contact_birthdate_ClientID));
}
///
/// Permet de cacher une ModalPopUp qui aurait été ouverte du côté client.
///
/// behaviourID : BehaviourId du ModalPopUp à fermer.
///
function CloseModalPopUp(behaviourID)
{
    $find(clientID).hide();
}

function RadioButtonListSelectedValue(clientID)
{
	var radio = document.getElementsByName(clientID);
    var result = '';
    for (var j = 0; j < radio.length; j++)
    {
        if (radio[j].checked)
            result = (radio[j].value);
    }
    return result;
}

///
/// Permettant de récupérer dans la page la valeur sélectionnée d'un DropDownList depuis son ClientID :
///
/// clientID : clientID du DropdownList
///
function DropDownListSelectedValue(clientID) 
{
    if (document.getElementById(clientID) != null)
    {
        var result = '';
        if (document.getElementById(clientID).options.length > 0 && document.getElementById(clientID).selectedIndex != -1)
            result = document.getElementById(clientID).options[document.getElementById(clientID).selectedIndex].value;
        
        return result;
    }
    else
    {
        return '';
    }
}
///
/// Permettant de récupérer dans la page la première valeur d'un DropDownList depuis son ClientID :
///
/// clientID : clientID du DropdownList
///
function DropDownListFirstValue(clientID) 
{
    if (document.getElementById(clientID) != null)
    {
        if (document.getElementById(clientID).options.length > 0)
            return document.getElementById(clientID).options[0].value;
        else
            return '';
    }
    else
        return '';
}
///
/// Permettant de récupérer dans la page la valeur sélectionnée d'un champ caché depuis son ClientID :
///
/// clientID : clientID du champ caché
///
function HiddenFieldValue(clientID) 
{
    if (document.getElementById(clientID) != null)
        return document.getElementById(clientID).value;
    else
        return '';
}
///
/// Permettant de remplir dans la page la valeur sélectionnée d'un champ caché depuis son ClientID :
///
/// clientID : clientID du champ caché
///
function SetHiddenFieldValue(clientID, value) 
{
    if (document.getElementById(clientID) != null)
        document.getElementById(clientID).value = value;
}
///
/// Permettant de récupérer dans la page la valeur sélectionnée d'un TextBox depuis son ClientID :
///
/// clientID : clientID du TextBox
///
function TextBoxText(clientID) 
{
    if (document.getElementById(clientID) != null)
        return document.getElementById(clientID).value;
    else
        return '';
}
///
/// Permettant de remplir dans la page la valeur sélectionnée d'un TextBox depuis son ClientID :
///
/// clientID : clientID du TextBox
///
function SetTextBoxText(clientID, value) 
{
    if (document.getElementById(clientID) != null)
        document.getElementById(clientID).value = value;    
}
///
/// Permettant de récupérer dans la page la valeur sélectionnée d'un Label depuis son ClientID :
///
/// clientID : clientID du Label
///
function LabelText(clientID) 
{
    if (document.getElementById(clientID) != null)
        return document.getElementById(clientID).innerHTML;
    else
        return '';
}
///
/// Permettant de remplir dans la page la valeur sélectionnée d'un Label depuis son ClientID :
///
/// clientID : clientID du Label
///
function SetLabelText(clientID, value)
{
    if (document.getElementById(clientID) != null)
        document.getElementById(clientID).innerHTML = value;    
}
///
/// Permet de tester le numéro d'une KeyCard et d'afficher une image indiquant si le numéro est valide ou non.
///
/// namebehavior : BehaviorID du panel qui contiendra le résultat de l'appel au web service qui va générer l'image indiquant si l'image est valide ou non.
/// value : Valeur envoyée au WebService qui devra être de ce format :
///         Numéro de KeyCard;intOrder;intOrderItem;intSousOrderItem
///
function TestKeyCardValide(namebehavior, value)
{
    var behavior = $find(namebehavior);
    if (behavior) {
        behavior.populate(value);
    }
}


//Permet d'utiliser le composant Dynamic Populate sur toutes les pages
function DynamicPopulate(namebehavior, value)
{
    var behavior = $find(namebehavior);
    if (behavior) {
        behavior.populate(value);
    }  
                      
}

///
/// Renvoie la liste des éléments sélectionnés dans une ListBox donnée par son ClientID
///
/// selectId : ClientID de la ListBox
///
/// return : Chaine de caractère sous ce format : [value;]*
///
function GetListValue(selectId)
{
    var result = '';
    var j = 0;
    var elmt = document.getElementById(selectId);
    if (elmt != null)
    {
        for(var i=0; i< elmt.options.length; i++)
        {
            if(elmt.options[i].selected == true)
            {
                if (j== 0)
                    result = elmt.options[i].value; 
                else
                    result = result + ';' +elmt.options[i].value;
                j++;
            }
        }
    }
    return result;
}
///
/// Affiche ou cache un objet dans la page en fonction de son ClientID
///
/// selectId : ClientID de l'objet à afficher ou cacher
/// value : booléen indiquant s'il faut cacher ou non l'objet.
///
function UpdateDisplayForComponent(selectId, value)
{
    if (value)
        document.getElementById(selectId).style.display='none';
    else
        document.getElementById(selectId).style.display='';
    
}
///
/// Modifie le contextKey d'un objet dans la page
///
/// selectId : ClientID de l'objet qui contient un contextKey
/// value : Nouveau contextKey
///
function UpdateContextKey(selectId, value)
{
    $find(selectId).set_contextKey(value);
    
}
///
/// Permet de gérer la suppression d'un consumerCategory (hors pass famille)
///
/// qteClientID : ClientID d'une div contenant la quantitée actuellement sélectionnée.
/// unitPrice : Prix unitaire d'un forfait.
/// resultPriceClientID : ClientId d'une div contenant le prix total de la commande (Quantitée x Prix unitaire).
/// qteMin : Quantitée minimum de forfaits pour le consumerCategorie en question.
///
function ConsumerCategoryDecremente(qteClientID, unitPrice, resultPriceClientID, qteMin)
{
    var qte = parseFloat(LabelText(qteClientID));
    if (qte > 0 && qte - 1 >= qteMin)
        qte = qte - 1;
    SetLabelText(qteClientID, qte);
    SetLabelText(resultPriceClientID, (qte * parseFloat(unitPrice)) + '€');
    
}
///
/// Permet de gérer la suppression d'un consumerCategory pour un pass famille
///
/// qteClientID : ClientID d'une div contenant la quantitée actuellement sélectionnée.
/// unitPrice : Prix de base pour les 4 forfaits obligatoires.
/// unitPriceJunior : Prix unitaire d'un forfait additionnel.
/// resultPriceClientID : ClientId d'une div contenant le prix total de la commande (Quantitée x Prix unitaire).
/// qteMin : Quantitée minimum de forfaits pour le consumerCategorie en question.
///
function ConsumerCategoryFamilleDecremente(qteClientID, unitPrice, unitPriceJunior, resultPriceClientID, qteMin)
{
    var qte = parseFloat(LabelText(qteClientID));
    if (qte > 0 && qte - 1 >= qteMin)
        qte = qte - 1;
    SetLabelText(qteClientID, qte);
    SetLabelText(resultPriceClientID, (parseFloat(unitPrice) + ((qte - parseFloat(qteMin)) * parseFloat(unitPriceJunior))) + '€');
    
}
///
/// Permet de gérer l'ajout d'un consumerCategory pour un pass famille
///
/// qteClientID : ClientID d'une div contenant la quantitée actuellement sélectionnée.
/// unitPrice : Prix de base pour les 4 forfaits obligatoires.
/// unitPriceJunior : Prix unitaire d'un forfait additionnel.
/// resultPriceClientID : ClientId d'une div contenant le prix total de la commande (Quantitée x Prix unitaire).
/// qteMax : Quantitée maximum de forfaits pour le consumerCategorie en question.
///
function ConsumerCategoryIncremente(qteClientID, unitPrice, resultPriceClientID, qteMax)
{
    var qte = parseFloat(LabelText(qteClientID));
    if (qte + 1 <= qteMax)
        qte = qte + 1;
    SetLabelText(qteClientID, qte);
    SetLabelText(resultPriceClientID, (qte * parseFloat(unitPrice)) + '€');
    
}
///
/// Permet de gérer l'ajout d'un consumerCategory pour un pass famille
///
/// qteClientID : ClientID d'une div contenant la quantitée actuellement sélectionnée.
/// unitPrice : Prix de base pour les 4 forfaits obligatoires.
/// unitPriceJunior : Prix unitaire d'un forfait additionnel.
/// resultPriceClientID : ClientId d'une div contenant le prix total de la commande (Quantitée x Prix unitaire).
/// qteMin : Quantitée minimum de forfaits pour le consumerCategorie en question.
/// qteMax : Quantitée maximum de forfaits pour le consumerCategorie en question.
///
function ConsumerCategoryFamilleIncremente(qteClientID, unitPrice, unitPriceJunior, resultPriceClientID, qteMin, qteMax)
{
    var qte = parseFloat(LabelText(qteClientID));
    if (qte + 1 <= qteMax)
        qte = qte + 1;
    SetLabelText(qteClientID, qte);
    SetLabelText(resultPriceClientID, (parseFloat(unitPrice) + ((qte - parseFloat(qteMin)) * parseFloat(unitPriceJunior))) + '€');
    
}

function UpdateConsumerCategoryPrice(qte, unitprice, resultPriceClientID)
{
    SetLabel(resultPriceClientID, (qte * unitprice) + '€');
}