﻿// JScript File
function classLanguageDisplay()
{
    var _self=this;
    
    //Properties
    _self.Language='NL';
    
    try
    {
        initialize();
        buildContentArticle();
        showHideElement(document.body);
    }
    catch(ex)
    {
        alert('classLanguageDisplay : '+ex.message);
    }
    
    //Private Methods
    
    function initialize()
    {
        try
        {
            //Get language from queryString
            var queryString=window.location.search.replace('?','');
            if(queryString!='')
                readParameters(queryString.split('&'));
        }
        catch(ex)
        {
            alert('classLanguageDisplay.initialize : '+ex.message);
        }
    }
    
    function readParameters(parameterList)
    {
        try
        {
            for(var counter=0;counter<parameterList.length;counter++)
            {
                parameterParts=parameterList[counter].split('=');
                switch(parameterParts[0].toLowerCase().replace(' ',''))
                {
                    case 'language':
                        _self.Language=parameterParts[1].toUpperCase();
                        break;
                }
            }
        }
        catch(ex)
        {
            alert('classLanguageDisplay.readParameters : '+ex.message);
        }
    }
    
    function buildContentArticle()
    {
        try
        {
            var articleTBody=document.getElementById('Content.Articles.List.'+_self.Language).tBodies[0];
            for(categoryId in Categories)
            {
                var category=Categories[categoryId]
                articleTBody.appendChild(renderCategoryRow(category));
                articleTBody.appendChild(renderSpacerRow('Small'));
                for(var counter=0; counter<category.Articles.length; counter++)
                {
                    var article=category.Articles[counter];
                    if(counter%2==0)
                    {
                        var trArticle=document.createElement('TR');
                        articleTBody.appendChild(trArticle);
                        articleTBody.appendChild(renderSpacerRow('Small'));
                    }
                    trArticle.appendChild(renderArticleImage(article));
                    trArticle.appendChild(renderArticle(article));
                }
                articleTBody.appendChild(renderSpacerRow('Small'));
            }
        }
        catch(ex)
        {
            alert('classLanguageDisplay.buildContentArticle : '+ex.message);
        }
    }
    
    function renderCategoryRow(category)
    {
        var returnValue=null;
        try
        {
            returnValue=document.createElement('TR');
            
            var tdDescription=document.createElement('TD');
            tdDescription.colSpan=4;
            tdDescription.className='Category';
            tdDescription.appendChild(document.createTextNode(category.Text[_self.Language].Description));
            
            returnValue.appendChild(tdDescription)
        }
        catch(ex)
        {
            alert('classLanguageDisplay.renderCategory : '+ex.message);
        }
        return returnValue
    }
    
    function renderSpacerRow(size)
    {
        var returnValue=null;
        try
        {
            returnValue=document.createElement('TR');
            
            var tdDescription=document.createElement('TD');
            tdDescription.colSpan=4;
            tdDescription.className='Spacer'+size;
            tdDescription.appendChild(document.createElement('BR'));
            
            returnValue.appendChild(tdDescription)
        }
        catch(ex)
        {
            alert('classLanguageDisplay.renderSpacerRow : '+ex.message);
        }
        return returnValue
    }
    
    function renderArticleImage(article)
    {
        var returnValue=null;
        try
        {
            returnValue=document.createElement('TD');
            returnValue.className='ArticleImg';
            
            var imgArticle=document.createElement('IMG');
            imgArticle.src=article.ImageUrl;
            imgArticle.alt=article.Text[_self.Language].Title;
            imgArticle.width=150;
            imgArticle.height=175;

            returnValue.appendChild(imgArticle);
        }
        catch(ex)
        {
            alert('classLanguageDisplay.renderArticleImage : '+ex.message);
        }
        return returnValue
    }
    
    function renderArticle(article)
    {
        var returnValue=null;
        try
        {
            returnValue=document.createElement('TD');
            returnValue.className='Article';
            
            var divArticle=document.createElement('DIV');
            divArticle.className='Article';
            
            var tableTitlePrice=document.createElement('TABLE');
            tableTitlePrice.cellSpacing=0;
            tableTitlePrice.cellPadding=0;
            tableTitlePrice.style.width='100%';
            var tbodyTitlePrice=document.createElement('TBODY');
            var trTitlePrice=document.createElement('TR');
            var tdTitle=document.createElement('TD');
            tdTitle.className='ArticleTitle';
            tdTitle.appendChild(document.createTextNode(article.Text[_self.Language].Title));
            var tdPrice=document.createElement('TD');
            tdPrice.className='ArticlePrice';
            if(article.Price!=null)
                tdPrice.appendChild(document.createTextNode(valueToPrecision(article.Price,2)+'€'));
            trTitlePrice.appendChild(tdTitle);
            trTitlePrice.appendChild(tdPrice);
            tbodyTitlePrice.appendChild(trTitlePrice);
            tableTitlePrice.appendChild(tbodyTitlePrice);
            
            var spanDescription=document.createElement('SPAN')
            spanDescription.innerHTML=article.Text[_self.Language].Description;
            
            divArticle.appendChild(tableTitlePrice);
            divArticle.appendChild(spanDescription);
            
            returnValue.appendChild(divArticle);
        }
        catch(ex)
        {
            alert('classLanguageDisplay.renderArticle : '+ex.message);
        }
        return returnValue
    }
    
    function showHideElement(element)
    {
        if(element.nodeType==1) //Only check element Nodes
        {
            if(element.getAttribute('language'))
            {
                if(element.getAttribute('language')==_self.Language)
                { element.style.display=''; }
                else
                { element.style.display='none'; }
            }
            
            for(var counter=0;counter<element.childNodes.length;counter++)
            { showHideElement(element.childNodes[counter]); }
        }
    }
    
    function valueToPrecision(value,numberOfDecimal)
    {
        var valueRounded=Math.round(value*Math.pow(10,numberOfDecimal))/Math.pow(10,numberOfDecimal);
        var valueTextParts=valueRounded.toString().split('.');
        
        if(valueTextParts.length == 1)
            valueTextParts.push('');
            
        while(valueTextParts[1].length < numberOfDecimal)
            valueTextParts[1]+='0';
            
        return valueTextParts[0]+','+valueTextParts[1];
    }
    
    //End Private Methods
}