﻿// ---------------------------------------------------------------------------------------------------
// Klasse			: ClassArticle
// Beschreibung		: Stellt Funktionen für die Artikeldarstellung zur Verfügung
// Erstellt von		: Simon Andreas Schild, Arcmedia AG
// Erstellt am		: 29.04.2008
// Parameter		: - keine -
// Geändert von		:
// Geändert am		:
// Änderungen		:
// ---------------------------------------------------------------------------------------------------
ClassArticle = function()
{
    // ---------------------------------------------------------------------------------------------------
    // Öffentliche Eigenschaften
    // ---------------------------------------------------------------------------------------------------
    this.articleImageClassObject;
    this.articleData = new Array();
    this.articleId = 0;
    this.articleColorId = 0;
    this.articleSizeId = 0;
    this.articleColorValue = "";
    this.articleSizeValue = "";
    this.articleColorName = "";
    this.articleSizeName = "";
    this.articleStockQuantity = 0;
    this.articleVariationId = 0;
    this.articleNrAddon = "";
    this.textImageNotAvaiable = "No Image";
    
    // ---------------------------------------------------------------------------------------------------
    // Lokale Variablen
    // ---------------------------------------------------------------------------------------------------
    var intLastArticleId = 0;
    var intLastIndex = 0;
    var intMaxIndex = 0;
        
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.addNewArticleData
    // Beschreibung		: Fügt neue Artikeldaten hinzu
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 29.04.2008
    // Parameter		: pintId: Artikel Id
    //                  : pintVariationId: Artikel Variation Id
    //                  : pstrNrAddon: Zusatz Artikel Nummer
    //                  : pintColorId: Farb Id
    //                  : pintSizeId: Grössen Id
    //                  : pstrColorValue: Farb Wert
    //                  : pstrSizeValue: Grössen Wert
    //                  : pstrColorName: Farbname
    //                  : pstrSizeName: Grössenname
    //                  : pintStockQuantity: Anzahl verfügbaren Einheiten
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.addNewArticleData = function(pintId, pintVariationId, pstrNrAddon, pintColorId, pintSizeId, pstrColorValue, pstrSizeValue, pstrColorName, pstrSizeName, pintStockQuantity)
    {
        try
        {
            // Objekt instanzieren
            var objArticle = new ClassArticle();
            
            // Objekt füllen
            objArticle.articleId = pintId;
            objArticle.articleVariationId = pintVariationId;
            objArticle.articleNrAddon = pstrNrAddon;
            objArticle.articleColorId = pintColorId;
            objArticle.articleSizeId = pintSizeId;
            objArticle.articleColorValue = pstrColorValue;
            objArticle.articleSizeValue = pstrSizeValue;
            objArticle.articleColorName = pstrColorName;
            objArticle.articleSizeName = pstrSizeName;
            objArticle.articleStockQuantity = pintStockQuantity;
            
            // Objekt in Datenset hinzufügen
            this.articleData.push(objArticle);
        }
        catch(e)
        {
            alert("Error while using article library." + "\r\n\r\n" + e.message);
        }
    }
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.changeArticleSize
    // Beschreibung		: Ändert die Artikelgrösse
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 29.04.2008
    // Parameter		: - keine -
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.changeArticleSize = function(pintSizeId)
    {
        var intCount = 0;
        
        try
        {            
            // Screen updaten
            this.updateScreen();
            
            return false;
        }
        catch(e)
        {
            alert("Error while using article library." + "\r\n\r\n" + e.message);
        }
    }
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.changeArticleColor
    // Beschreibung		: Ändert die Artikelfarbe
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 29.04.2008
    // Parameter		: pintColorId: Neue Farb Id
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.changeArticleColor = function(pintColorId)
    {
        var intCount = 0;
        
        try
        {
            intMaxIndex = this.articleData.length;
            
            while(intCount < intMaxIndex)
            {
                if(this.articleData[intCount].articleColorId == pintColorId)
                {   
                    // Hex Wert abspeichern
                    if(document.getElementById('txtSelectedColor'))
                        document.getElementById('txtSelectedColor').value = this.articleData[intCount].articleColorId;
                        
                    // Farbwert anzeigen
                    if(document.getElementById('layColorChoice'))
                        document.getElementById('layColorChoice').innerHTML = this.articleData[intCount].articleColorName;
                        
                    // Evtl. Bild ändern.
                    this.articleImageClassObject.changeImage(pintColorId, 0);
                        
                    if(this.articleImageClassObject.foundImageByColor == false)
                        document.getElementById('layColorChoice').innerHTML = this.articleData[intCount].articleColorName + "<br />(" + this.textImageNotAvaiable + ")";
                    
                    // Screen updaten
                    this.updateScreen();
                    
                    // Exit While
                    intCount = intMaxIndex;
                    break;
                }
            
                // Index nach oben zählen
                intCount++;
            }
            
            intLastIndex = intCount;
            return false;
        }
        catch(e)
        {
            alert("Error while using article library." + "\r\n\r\n" + e.message);
        }
    }
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.updateScreen
    // Beschreibung		: Aktualisiert den Screen
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 29.04.2008
    // Parameter		: - keine -
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.updateScreen = function()
    {
        var intCount = 0;
        var intSizeId = 0;
        var intDataId = 0;
        var strColor = "";
        var bolSize = false;
        var bolColor = false;
    
        try
        {
            if(document.getElementById('cboSizeVariation'))
            {
                intSizeId = document.getElementById('cboSizeVariation').value;
                bolSize = true;
            }
            
            if(document.getElementById('txtSelectedColor'))
            {
                strColor = document.getElementById('txtSelectedColor').value;
                bolColor = true;
            }
            
            while(intCount < this.articleData.length)
            {
                if(bolSize == true && bolColor == true)
                {
                    if(intSizeId == this.articleData[intCount].articleSizeId && strColor == this.articleData[intCount].articleColorId)
                    {                        
                        // Artikelvariation speichern sowie Zusatz Artikelnummer anzeigen                        
                        document.getElementById('txtArticleVariation').value = this.articleData[intCount].articleVariationId;
                        document.getElementById('layArticleAddonNr').innerHTML = this.articleData[intCount].articleNrAddon;
                        
                        intDataId = intCount;
                    }
                }
                
                if(bolSize == true && bolColor == false)
                {
                    if(intSizeId == this.articleData[intCount].articleSizeId)
                    {
                        // Artikelvariation speichern sowie Zusatz Artikelnummer anzeigen                        
                        document.getElementById('txtArticleVariation').value = this.articleData[intCount].articleVariationId;
                        document.getElementById('layArticleAddonNr').innerHTML = this.articleData[intCount].articleNrAddon;
                        
                        intDataId = intCount;
                    }
                }
                
                if(bolSize == false && bolColor == true)
                {
                    if(strColor == this.articleData[intCount].articleColorId)
                    {
                        // Artikelvariation speichern sowie Zusatz Artikelnummer anzeigen                        
                        document.getElementById('txtArticleVariation').value = this.articleData[intCount].articleVariationId;
                        document.getElementById('layArticleAddonNr').innerHTML = this.articleData[intCount].articleNrAddon;
                        
                        intDataId = intCount;
                    }
                }
                
                intCount++;
            }
            
            if(this.articleData[intDataId].articleStockQuantity <= 0)
            {
                if(document.getElementById('layOrderButtons'))
                    document.getElementById('layOrderButtons').style.display = 'none';
                    
                if(document.getElementById('layArticleNotAvailable'))
                    document.getElementById('layArticleNotAvailable').style.display = 'block';
            }
            else
            {
                if(document.getElementById('layOrderButtons'))
                    document.getElementById('layOrderButtons').style.display = 'block';
                    
                if(document.getElementById('layArticleNotAvailable'))
                    document.getElementById('layArticleNotAvailable').style.display = 'none';
            }
        }
        catch(e)
        {
            alert("Error while using article library." + "\r\n\r\n" + e.message);
        }
    }
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.getStoredData
    // Beschreibung		: Gibt die gespeicherten Daten aus
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 05.05.2008
    // Parameter		: - keine -
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.getStoredData = function()
    {
        var intCount = 0;
        var strReturn = "";
        
        try
        {
            while(intCount < this.articleData.length)
            {
                strReturn += this.articleData[intCount].articleId + ";" + 
                             this.articleData[intCount].articleVariationId + ";" + 
                             this.articleData[intCount].articleNrAddon + ";" +
                             this.articleData[intCount].articleColorId + ";" +
                             this.articleData[intCount].articleSizeId + ";" +
                             this.articleData[intCount].articleColorValue + ";" +
                             this.articleData[intCount].articleSizeValue + ";" +
                             this.articleData[intCount].articleColorName + ";" +
                             this.articleData[intCount].articleSizeName + ";" +
                             this.articleData[intCount].articleStockQuantity + ";" +
                             "\r\n";
                intCount++;
            }
            
            alert(strReturn);
        }
        catch(e)
        {
            alert("Error while using article library." + "\r\n\r\n" + e.message);
        }
    }
}


// ---------------------------------------------------------------------------------------------------
// Klasse			: ClassArticleImages
// Beschreibung		: Stellt Funktionen für die Artikelbilder zur Verfügung
// Erstellt von		: Simon Andreas Schild, Arcmedia AG
// Erstellt am		: 29.04.2008
// Parameter		: - keine -
// Geändert von		:
// Geändert am		:
// Änderungen		:
// ---------------------------------------------------------------------------------------------------
ClassArticleImages = function()
{
    // ---------------------------------------------------------------------------------------------------
    // Öffentliche Eigenschaften
    // ---------------------------------------------------------------------------------------------------
    this.imageData = new Array();
    this.imageId = 0;
    this.imagePath = "";
    this.imageColorId = 0;
    this.imageAltText = "";   
    this.foundImageByColor = false;
    this.lastCheckedImageSelectorId = 0;
    this.lastIndex = 0;
    
    // ---------------------------------------------------------------------------------------------------
    // Lokale Variablen
    // ---------------------------------------------------------------------------------------------------
    var intMaxIndex = 0;

    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticleImages.addNewArticleImage
    // Beschreibung		: Fügt ein neues Artikelbild hinzu
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 29.04.2008
    // Parameter		: pintImageId: Image Id
    //                  : pstrImagePath: Pfad für das Bild in der mittleren Auflösung
    //                  : pintColorId: Farbcode id wenn vorhanden
    //                  : pstrAltText: Alttext fürs Bild
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.addNewArticleImage = function(pintImageId, pstrImagePath, pintColorId, pstrAltText)
    {
        try
        {
            // Objekt instanzieren
            var objArticleImage = new ClassArticleImages();
            
            // Objekt füllen
            objArticleImage.imageId = pintImageId;
            objArticleImage.imagePath = pstrImagePath;
            objArticleImage.imageColorId = pintColorId;
            objArticleImage.imageAltText = pstrAltText;
            
            // Objekt in Datenset hinzufügen
            this.imageData.push(objArticleImage);
        }
        catch(e)
        {
            alert("Error while using articleImage library." + "\r\n\r\n" + e.message);
        }
    }
    
    
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticleImages.changeImage
    // Beschreibung		: Ändert das Anzeigebild
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 06.05.08
    // Parameter		: pintColorId: Farb Id
    //                  : pintImageId: Optional Image Id
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.changeImage = function(pintColorId, pintImageId)
    {
        var intCount = 0;
        var strOldPath = "";
        
        try
        {
            // Variablen neu setzen
            this.foundImageByColor = false;
            intMaxIndex = this.imageData.length;
            
            if(this.lastIndex >= intMaxIndex)
                this.lastIndex = 0;
                
            if(document.getElementById('imgArticle'))
                strOldPath = document.getElementById('imgArticle').src.toString();
        
            if(pintImageId != 0)
            {
                for(intCount = 0; intCount < intMaxIndex; intCount++)
                {
                    if(this.imageData[intCount].imageId == pintImageId && this.imageData[intCount].imagePath != strOldPath)
                    {
                        this.foundImageByColor = true;
                        fadeOut("imgArticle", 100, 15, 10, false, this.imageData[intCount].imagePath);
                        this.lastIndex = intCount;
                    }
                }
            }
            else
            {
                for(intCount = 0; intCount < intMaxIndex; intCount++)
                {
                
                    // Wenn es sich um die gleiche Farbe handelt, dann Bild wechseln.
                    if(this.imageData[this.lastIndex].imageColorId == pintColorId && this.foundImageByColor == false && this.imageData[intCount].imagePath != strOldPath)
                    {
                        this.foundImageByColor = true;
                        fadeOut("imgArticle", 100, 15, 10, false, this.imageData[this.lastIndex].imagePath);
                    }
                    
                    if(this.foundImageByColor == false)
                    {
                        // Nächter Datensatz
                        if(this.lastIndex < intMaxIndex - 1)
                            this.lastIndex++;
                        else
                            this.lastIndex = 0;
                    }
                }
            }
            
            // Link neu formatieren
            if(this.foundImageByColor == true && document.getElementById("lnkImage_" + this.imageData[this.lastIndex].imageId))
            {
                if(document.getElementById("lnkImage_" + this.lastCheckedImageSelectorId))
                    document.getElementById("lnkImage_" + this.lastCheckedImageSelectorId).style.backgroundColor = "#999999";
                    
                document.getElementById("lnkImage_" + this.imageData[this.lastIndex].imageId).style.backgroundColor = "#00ADEF";
                this.lastCheckedImageSelectorId = this.imageData[this.lastIndex].imageId;
            }
            
            if(this.foundImageByColor == true)
                this.lastIndex++;
            
            return false;
        }
        catch(e)
        {
            alert("Error while using articleImage library." + "\r\n\r\n" + e.message);
        }
    }
    
    // ---------------------------------------------------------------------------------------------------
    // Funktion			: ClassArticle.getStoredData
    // Beschreibung		: Gibt die gespeicherten Daten aus
    // Erstellt von		: Simon Andreas Schild, Arcmedia AG
    // Erstellt am		: 05.05.2008
    // Parameter		: - keine -
    // Geändert von		:
    // Geändert am		:
    // Änderungen		:
    // ---------------------------------------------------------------------------------------------------
    this.getStoredData = function()
    {
        var intCount = 0;
        var strReturn = "";
        
        try
        {
            while(intCount < this.imageData.length)
            {
                strReturn += this.imageData[intCount].imageId + ";" + 
                             this.imageData[intCount].imagePath + ";" + 
                             this.imageData[intCount].imageColorId + ";" +
                             this.imageData[intCount].imageAltText + ";" +
                             "\r\n";
                intCount++;
            }
            
            alert(strReturn);
        }
        catch(e)
        {
            alert("Error while using articleImage library." + "\r\n\r\n" + e.message);
        }
    }
}