﻿clearIntervalValue = 0;

function checkNewCategory(sender, args) {
    if (document.getElementById('ctl00_ContentPlaceHolder6_dvAddNewVideo_ddlCategoryAddNew').disabled == true)
    {
        var ddlCategoryAddNew = document.getElementById('ctl00_ContentPlaceHolder6_dvAddNewVideo_ddlCategoryAddNew');
        for (var i = 0; i <= ddlCategoryAddNew.options.length - 1; i++)
            if (ddlCategoryAddNew.options[i].text == args.Value) {
            args.IsValid = false;
            return;
        }
    }
    args.IsValid = true;
}

function checkUniqueVideoName(sender, args) {
    if (document.getElementById('ctl00_ContentPlaceHolder6_dvAddNewVideo_ddlCategoryAddNew').disabled == false) {
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        else {
            xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
        }
        var ddlCategoryAddNew = document.getElementById('ctl00_ContentPlaceHolder6_dvAddNewVideo_ddlCategoryAddNew');
        var categorySelected = ddlCategoryAddNew.value;
        var url = 'validation.aspx';
        url = url + '?v=checkUniqueVideoName&cat=' + categorySelected + '&name=' + args.Value + '&sid=' + Math.random();
        xmlhttp.open("GET", url, false);
        xmlhttp.send(null);
        if (xmlhttp.responseText == '1') {
            args.IsValid = true;
        }
        else {
            args.IsValid = false;
        }
    }
    else
    {
        args.IsValid = true;
    }
}

function checkUniqueVideoFile(sender, args) {
    var sfx = '';
    var strPrefix = sender.id.substring(0, sender.id.lastIndexOf('_') + 1);

    if (sender.id.indexOf('dvVideo') != -1) {
        sfx = 'Edit';
    }

    if (document.getElementById(strPrefix + 'fuVideoFile' + sfx).disabled == false) {
        ddlVideoFileName = document.getElementById(strPrefix + 'ddlVideoFileName' + sfx);

        for (var i = 0; i <= ddlVideoFileName.options.length - 1; i++) {
            if (ddlVideoFileName.options[i].text == args.Value.substring(args.Value.lastIndexOf('\\') + 1, args.Value.length)) {
                args.IsValid = false;
                return;
            }
        }

        args.IsValid = true;
    }
    else {
        args.IsValid = true;
    }
}

function checkUniqueIconFile(sender, args) {
    var sfx = '';
    var strPrefix = sender.id.substring(0, sender.id.lastIndexOf('_') + 1);

    if (sender.id.indexOf('dvVideo') != -1) {
        sfx = 'Edit';
    }

    if (document.getElementById(strPrefix + 'fuIconFile' + sfx).disabled == false) {
        ddlIconFileName = document.getElementById(strPrefix + 'ddlIconFileName' + sfx);

        for (var i = 0; i <= ddlIconFileName.options.length - 1; i++) {
            if (ddlIconFileName.options[i].text == args.Value.substring(args.Value.lastIndexOf('\\') + 1, args.Value.length)) {
                args.IsValid = false;
                sender.innerHTML = '*an icon named "' + args.Value.substring(args.Value.lastIndexOf('\\') + 1, args.Value.length) + '" has already been uploaded';
                return;
            }
        }

        args.IsValid = true;
    }
    else {
        args.IsValid = true;
    }
}

function switchImagePreview(sender) {
    var sfx = '';
    var currentImage = sender.options[sender.selectedIndex].text;
    var imgString = 'images\\videos\\' + currentImage;
    if (sender.id.substring(sender.id.length - 4) == 'Edit') {
        sfx = 'Edit';
    }
    document.getElementById(sender.id.substring(0, sender.id.lastIndexOf('_') + 1) + 'imgIconPreview' + sfx).src=imgString;
}

function handleFileRadioControls(controlCommand, sender) {
    var enabled;
    var sfx = '';
    var newFileInstructionsDisplay;
    var strPrefix = sender.id.substring(0, sender.id.lastIndexOf('_') + 1);

    if (sender.id.indexOf('dvVideo') != -1) {
        sfx = 'Edit';
    }
    
    var rfvNewVideoFileEdit = document.getElementById(strPrefix + 'rfvNewVideoFile' + sfx);
    var revNewFile = document.getElementById(strPrefix + 'revNewVideoFile' + sfx);
    var cvNewFile = document.getElementById(strPrefix + 'cvNewVideoFile' + sfx);

    if (controlCommand == 'existing') {
        enabled = false;
        newFileInstructionsDisplay = 'none';
    }
    else {
        enabled = true;
        newFileInstructionsDisplay = 'block';
    }
    
    document.getElementById(strPrefix + 'fuVideoFile' + sfx).disabled = !enabled;
    document.getElementById(strPrefix + 'ddlVideoFileName' + sfx).disabled = enabled;
    ValidatorEnable(rfvNewVideoFileEdit, enabled);
    ValidatorEnable(revNewFile, enabled);
    ValidatorEnable(cvNewFile, enabled);
    
    if (enabled)
        rfvNewVideoFileEdit.style.display = 'none';

    document.getElementById('maxFileSizeInfo' + sfx).style.display = newFileInstructionsDisplay;
}

function handleIconRadioControls(controlCommand, sender) {
    var enabled;
    var pnlDisplay;
    var newImageInstructionsDisplay;
    var sfx = '';
    var strPrefix = sender.id.substring(0, sender.id.lastIndexOf('_') + 1);

    if (sender.id.indexOf('dvVideo') != -1) {
        sfx = 'Edit';
    }

    var rfvNewIcon = document.getElementById(strPrefix + 'rfvNewIcon' + sfx);
    var revNewIcon = document.getElementById(strPrefix + 'revNewIcon' + sfx);
    var cvNewIcon = document.getElementById(strPrefix + 'cvNewIcon' + sfx);

    if (controlCommand == 'existing') {
        enabled = false;
        pnlDisplay = 'block';
        newImageInstructionsDisplay = 'none';
    }
    else {
        enabled = true;
        pnlDisplay = 'none';
        newImageInstructionsDisplay = 'block';
    }

    document.getElementById(strPrefix + 'fuIconFile' + sfx).disabled = !enabled;
    document.getElementById(strPrefix + 'ddlIconFileName' + sfx).disabled = enabled;
    ValidatorEnable(rfvNewIcon, enabled);
    ValidatorEnable(revNewIcon, enabled);
    ValidatorEnable(cvNewIcon, enabled);

    if (enabled)
        rfvNewIcon.style.display = 'none';

    document.getElementById(strPrefix + 'pnlIconPreview' + sfx).style.display = pnlDisplay;
    document.getElementById('imageSizeInstructions').style.display = newImageInstructionsDisplay;
}

function handleCategoryRadioControls(controlCommand, sender) {
    var enabled;
    var strPrefix = sender.id.substring(0, sender.id.lastIndexOf('_') + 1);

    var rfvNewCategory = document.getElementById(strPrefix + 'rfvNewCategory');

    if (controlCommand == 'existing') {
        enabled = false;
    }
    else {
        enabled = true;
    }
    
    document.getElementById(strPrefix + 'txtCategory').disabled = !enabled;
    document.getElementById(strPrefix + 'ddlCategoryAddNew').disabled = enabled;
    ValidatorEnable(rfvNewCategory, enabled);
    
    if (enabled)
        rfvNewCategory.style.display = 'none';
}

function enableForm() {
    document.getElementById("aspnetForm").disabled = false;
}
                
function setClearIntervalValue(theValue) {
    clearIntervalValue = theValue;
}

function destroyInterval() {
    clearInterval(clearIntervalValue);
}
                
function manageIntervals(percentComplete) {
    if (percentComplete == 100) {
        destroyInterval();
    }
}

function activateProgressBar(senderID) {
    var validationIsPassed = true;
    
    for (var i=0, len=Page_Validators.length; i<len; ++i ) {
        ValidatorValidate(Page_Validators[i]);
        if (!Page_Validators[i].isvalid)
            validationIsPassed = false;
    }

    var sfx = '';
    var strPrefix = senderID.substring(0, senderID.lastIndexOf('_') + 1);

    if (senderID.indexOf('dvVideo') != -1) {
        sfx = 'Edit';
    }
    
    if (validationIsPassed && document.getElementById(strPrefix + 'fuVideoFile' + sfx).disabled == false)
    {
        document.getElementById('progressBarContainer').style.display='block';
        intervalID = setInterval('send_request()', 2000);
        setClearIntervalValue(intervalID);
        
        disableHyperlinks(document.getElementById('sideNavigationArea'));
        disableHyperlinks(document.getElementById('headerArea'));
        disableControls(document.getElementById(senderID.substring(0, senderID.lastIndexOf('_'))));

        document.getElementById('dvVideoButtonsContainer' + sfx).style.display = 'none';

        if (sfx == 'Edit') {
            document.getElementById('ctl00_ContentPlaceHolder6_ddlVideoCategories').disabled = true;
            document.getElementById('ctl00_ContentPlaceHolder6_gvVideos').disabled = true;
        }
    }
}
    
function disableControls(el) {
    if (el.childNodes && el.childNodes.length > 0) {
        for (var x = 0; x < el.childNodes.length; x++) {
            if (el.childNodes[x].tagName != undefined) {
                if (el.childNodes[x].tagName == 'INPUT') {
                    if (el.childNodes[x].type == 'radio' && el.childNodes[x].checked == false)
                        el.childNodes[x].disabled = true;
                    else if (el.childNodes[x].type == 'radio' && el.childNodes[x].checked == true)
                        el.childNodes[x].onclick = null;
                    if (el.childNodes[x].type == 'file' || el.childNodes[x].type == 'text')
                        el.childNodes[x].readOnly = true;
                }
                if (el.childNodes[x].tagName == 'SELECT') {
                    el.childNodes[x].disabled = true;
                }
            }
            disableControls(el.childNodes[x]);
        }
    }
}

function disableHyperlinks(el) {
    if (el.childNodes && el.childNodes.length > 0) {
        for (var x = 0; x < el.childNodes.length; x++) {
            if (el.childNodes[x].tagName != undefined) {
                if (el.childNodes[x].tagName == 'A')
                    el.childNodes[x].href = '#';
            }
            disableHyperlinks(el.childNodes[x]);
        }
    }
}       
         
function send_request() {
    var progressBar = document.getElementById('progressBar');
    var nextWidth;
    var width;
    var barSlowness = 3;
    var timer;
    if (typeof send_request.counter == 'undefined') {
        send_request.counter = 0;
    }
    
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    send_request.counter++;
    nextWidth = parseInt(send_request.counter / barSlowness);
    timer = setTimeout(function() {
                            xmlhttp.abort();
                            progressBar.style.width = String (nextWidth) + '%';
                            manageIntervals(nextWidth);
                                  }, 2000);
    xmlhttp.onreadystatechange = function() {
                                    if (xmlhttp.readyState == 4) {
                                        if (timer) clearTimeout(timer);
                                        if (xmlhttp.status == 200) {
                                            actual = Number (xmlhttp.responseText);
                                            if (actual > (nextWidth)) {
                                                progressBar.style.width = String(actual) + '%';
                                                send_request.counter = Number(actual * barSlowness);
                                                manageIntervals(actual);
                                            }
                                            else {
                                                progressBar.style.width = String (nextWidth) + '%';
                                                manageIntervals(nextWidth);
                                            }
                                        }
                                        else {
                                            progressBar.style.width = String (nextWidth) + '%';
                                            manageIntervals(nextWidth);
                                        }
                                    }
                                };
    var url = 'updateNumber.aspx';
    url = url + '?sid=' + Math.random();
    xmlhttp.open("GET", url);
    xmlhttp.send(null);
}
