﻿// Загрузка страницы
window.onload = PageLoad;

// Загрузка страницы
function PageLoad() {
    //LoadSamplesList();
    LoadPublicsList();
}


// Загрузка списка опубликованных файлов
function  LoadPublicsList() {
    PageMethods.GetPublicsExistingFileNames(GetPublicsExistingFileNames_CallBack);
}

    // Обратный вызов загрузки списка опубликованных файлов
    function GetPublicsExistingFileNames_CallBack(files) {
        var filesCount = files.length;
        
        var leftDivCount, centerDivCount, rightDivCount;
        if (filesCount < 3) {
            leftDivCount = filesCount;
            centerDivCount = rightDivCount = 0;
        }
        else {
            var rest = filesCount % 3;
            filesCount -= rest;
            
            leftDivCount = (filesCount / 3) + rest;
            centerDivCount = rightDivCount = filesCount / 3;
        }
        
        var leftDiv = $get("leftPublicsListDiv");
        var centerDiv = $get("centerPublicsListDiv");
        var rightDiv = $get("rightPublicsListDiv");
        
        var i;
        for (i = 0; i < leftDivCount; i++) {
            var publicFileHyperlink = FileHyperlink(files[i].FileName, publicFileLinkIDPrefix);
            AddLinkToDiv(publicFileHyperlink, files[i].CreationTime, leftDiv);
        }
        for (i = leftDivCount; i < leftDivCount+centerDivCount; i++) {
            var publicFileHyperlink = FileHyperlink(files[i].FileName, publicFileLinkIDPrefix);
            AddLinkToDiv(publicFileHyperlink, files[i].CreationTime, centerDiv);
        }
        for (i = leftDivCount+centerDivCount; i < leftDivCount+centerDivCount+rightDivCount; i++) {
            var publicFileHyperlink = FileHyperlink(files[i].FileName, publicFileLinkIDPrefix);
            AddLinkToDiv(publicFileHyperlink, files[i].CreationTime, rightDiv);
        }
    }


// Возвращает гиперссылку на файл
function FileHyperlink(fileName, linkIDPrefix) {
    var fileHyperLink = document.createElement("a");
    
    fileHyperLink.href = wdeHref + fileNameParam + fileName;
    fileHyperLink.target = linkIDPrefix + fileName;
    fileHyperLink.innerHTML = fileName;
    fileHyperLink.id = linkIDPrefix + fileName;
    
    var altText;
    switch (linkIDPrefix) {
        case sampleFileLinkIDPrefix:
            altText = "Пример " + fileName + "\n";
            break;
        case publicFileLinkIDPrefix:
            altText = "Опубликованный пользователем файл " + fileName + "\n";
            break;
    }
    fileHyperLink.title = altText;
    
    return fileHyperLink;
}

// Префикс ID гиперссылки на опубликованный файл
var publicFileLinkIDPrefix = "publicFileLink_";
// Префикс ID гиперссылки на пример
var sampleFileLinkIDPrefix = "sampleFileLink_";

// Префикс ID метки с датой создания
var fileCreationTimeIDPrefix = "fileCreationTimeIDPrefix_";

// Приставка к ID окна с файлом
var fileWindowIDPrefix = "fileWindowIDPrefix_";


// адрес компилятора
var wdeHref = "http://pascalabc.net/WDE/";

// разделитель параметра
var fileNameParam = "?file=";


// Добавляет ссылку [newFileLink] на блок [filesDiv]
function AddLinkToDiv(newFileLink, creationTime, filesDiv) {
    var br = document.createElement("br");
    
    filesDiv.appendChild(newFileLink);
    
    var creationTimeLabel = document.createElement("label");
    creationTimeLabel.innerHTML = " (" + getRusDateString(creationTime.toDateString()) + ")";
    creationTimeLabel.id = fileCreationTimeIDPrefix + newFileLink.innerHTML;
    creationTimeLabel.style.fontSize = "10px";
    
    filesDiv.appendChild(creationTimeLabel);
    
    filesDiv.appendChild(br);
}


    // Возвращает русифицированную строку даты
    function getRusDateString(dateString){
        var dateArr = dateString.split(" ");
        
        var day = getRusDay(dateArr[0]);
        var month = getRusMonth(dateArr[1]);
        
        /* Меняем формат из <дань_недели><месяц><число><год> 
         * в <дань_недели><число><месяц><год> */
        dateArr[0] = day;
        dateArr[1] = dateArr[2];
        dateArr[2] = month;
        
        return dateArr.join(" ");
    }
    
        // Возвращает русское представление дня недели по английскому
        function getRusDay(enDay){
            switch (enDay){
                case "Mon" : return "Пн";
                case "Tue" : return "Вт";
                case "Wed" : return "Ср";
                case "Thu" : return "Чт";
                case "Fri" : return "Пт";
                case "Sat" : return "Сб";
                case "Sun" : return "Вс";
            }
        }
        
        // Возвращает русское представление месяца по английскому
        function getRusMonth(enMonth){
            switch (enMonth){
                case "Jan" : return "Янв";
                case "Feb" : return "Фев";
                case "Mar" : return "Мар";
                case "Apr" : return "Апр";
                case "May" : return "Май";
                case "Jun" : return "Июн";
                case "Jul" : return "Июл";
                case "Aug" : return "Авг";
                case "Sep" : return "Сен";
                case "Oct" : return "Окт";
                case "Nov" : return "Ноя";
                case "Dec" : return "Дек";
            }
        }


/*// Загрузка списка примеров
function  LoadSamplesList() {
    PageMethods.GetSamplesExistingFileNames(GetSamplesExistingFileNames_CallBack);
}*/

    /*// Обратный вызов загрузки списка примеров
    function GetSamplesExistingFileNames_CallBack(fileNames) {
        var filesCount = fileNames.length;
        
        var leftDivCount, centerDivCount, rightDivCount;
        if (filesCount < 3) {
            leftDivCount = filesCount;
            centerDivCount = rightDivCount = 0;
        }
        else {
             var rest = filesCount % 3;
            filesCount -= rest;
            
            leftDivCount = (filesCount / 3) + rest; 
            centerDivCount = rightDivCount = filesCount / 3;
        }
        
        var leftDiv = $get("leftSamplesListDiv");
        var centerDiv = $get("centerSamplesListDiv");
        var rightDiv = $get("rightSamplesListDiv");
        
        var i;
        for (i = 0; i < leftDivCount; i++) {
            var sampleHyperLink = FileHyperlink(fileNames[i], sampleFileLinkIDPrefix);
            AddLinkToDiv(sampleHyperLink, leftDiv);
        }
        for (i = leftDivCount; i < leftDivCount+centerDivCount; i++) {
            var sampleHyperLink = FileHyperlink(fileNames[i], sampleFileLinkIDPrefix);
            AddLinkToDiv(sampleHyperLink, centerDiv);
        }
        for (i = leftDivCount+centerDivCount; i < leftDivCount+centerDivCount+rightDivCount; i++) {
            var sampleHyperLink = FileHyperlink(fileNames[i], sampleFileLinkIDPrefix);
            AddLinkToDiv(sampleHyperLink, rightDiv);
        }
    }*/
