﻿var skySymbolBasePath = 'symbols/sky';
var windsymbolBasePath = 'symbols/wind';
var symbolType = { PNG : '.png', JPG : '.jpg', GIF : '.gif' };
var symbolSize = { Small : 'S', Medium : 'M', Large : 'L' };
var windSymbol = { NoWind : 'no_wind'};

var knopFactor = 1.9438;

function getSkySymbolPath(skySymbolNumber)
{
    return variables.themePath + skySymbolBasePath + "/" + symbolSize.Medium + "/" + skySymbolNumber + symbolType.PNG;
}

function getWindSymbolPath(windDirection, windSpeed)
{
    if(windSpeed == 0)
    return variables.themePath + windsymbolBasePath + "/" + symbolSize.Small + "/" + windSymbol.NoWind + symbolType.PNG;
    return variables.themePath + windsymbolBasePath + "/" + symbolSize.Small + "/" + getWindDirectionId(windDirection) + getWindSpeedArrowId(windSpeed) + symbolType.PNG;
}

function getWindSymbolText(windDirection, windSpeed) {
    if(windSpeed == 0)
        return getWindSymbolSpeedText(getWindSpeedTextId(windSpeed));
    else
        return getWindSymbolSpeedText(getWindSpeedTextId(windSpeed)) + " " + getWindSymbolDirectionText(getWindDirectionId(windDirection));
}

function getSkySymbolText(skySymbolNumber)
{
    return lists.skySymbolsText[parseInt(skySymbolNumber)-1].Text;    
}

function getWindSymbolDirectionText(windDirectionId)
{
    return find(lists.windSymbolDirectionText, windDirectionId);  
}

function getWindSymbolSpeedText(windSpeedArrowId)
{
    return find(lists.windSymbolSpeedText, windSpeedArrowId);  
}

function find(collection, itemId)
{
    for(var i in collection)
    {
        if(collection[i].Name == itemId) return collection[i].Text;
    }
}

function getWindDirectionId(windDirection) 
{
    if (windDirection > -1) {
        if (windDirection <= 22) return "N";
        else if (windDirection <= 67) return "NE";
        else if (windDirection <= 112) return "E";
        else if (windDirection <= 157) return "SE";
        else if (windDirection <= 202) return "S";
        else if (windDirection <= 247) return "SW";
        else if (windDirection <= 292) return "W";
        else if (windDirection <= 347) return "NW";
        else if (windDirection <= 360) return "N";
    }
    return string.Empty;
}

function getWindSpeedArrowId(windSpeed) 
{
    var knopSpeed = windSpeed * knopFactor;

    if (knopSpeed >= 0 && knopSpeed < 2.5) return '00';
    else if (knopSpeed < 7.5) return '05';
    else if (knopSpeed < 12.5) return '10';
    else if (knopSpeed < 17.5) return '15';
    else if (knopSpeed < 22.5) return '20';
    else if (knopSpeed < 27.5) return '25';
    else if (knopSpeed < 32.5) return '30';
    else if (knopSpeed < 37.5) return '35';
    else if (knopSpeed < 42.5) return '40';
    else if (knopSpeed < 47.5) return '45';
    else if (knopSpeed < 52.5) return '50';
    else if (knopSpeed < 57.5) return '55';
    else if (knopSpeed < 62.5) return '60';
    else if (knopSpeed < 67.5) return '65';
    else
        return '';
}

function getWindSpeedTextId(windSpeed) 
{
    //uses meter per second
    if (windSpeed >= 0 && windSpeed < 0.3) return '00';
    else if (windSpeed < 1.6) return '05';
    else if (windSpeed < 3.4) return '10';
    else if (windSpeed < 5.5) return '15';
    else if (windSpeed < 8.0) return '20';
    else if (windSpeed < 10.8) return '25';
    else if (windSpeed < 13.9) return '30';
    else if (windSpeed < 17.2) return '35';
    else if (windSpeed < 20.8) return '40';
    else if (windSpeed < 24.5) return '45';
    else if (windSpeed < 28.5) return '50';
    else if (windSpeed < 32.6) return '55';
    else if (windSpeed < 35) return '60';
    else
        return '';
}