window.TRANSCODING_STATUS = new Object();

var PROGRESS_INFO = [
                        {
                             status:        MEDIA_RESOURCE_STATUS_UPLOADING,
                             progressWidth: 1
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_UNPACKING,
                             progressWidth: 0.1
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_START_TRANSCODING,
                             progressWidth: 0.1
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_COLLECTING,
                             progressWidth: 0.05
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_PROCESSING,
                             progressWidth: 0.75
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_SWF_WRITING,
                             progressWidth: 0
                        },
                        {
                             status:        MEDIA_RESOURCE_STATUS_COMPLETE,
                             progressWidth: 0
                        }
                    ];

var PLAYBACK_MODES = new Object();
PLAYBACK_MODES.POWERPOINT_LIKE = "pplike";
PLAYBACK_MODES.VIDEO_LIKE = "videolike";

var PRESENTATION_OPTIONS_DEFAULT = new Object();
PRESENTATION_OPTIONS_DEFAULT.MINIMAL_SLIDE_DURATION = "5.0";
PRESENTATION_OPTIONS_DEFAULT.PLAYBACK_MODE = PLAYBACK_MODES.POWERPOINT_LIKE;
PRESENTATION_OPTIONS_DEFAULT.SCREEN_RESOLUTION = "1024x768";
PRESENTATION_OPTIONS_DEFAULT.SCREEN_WIDTH = "1024";
PRESENTATION_OPTIONS_DEFAULT.SCREEN_HEIGHT = "768";
PRESENTATION_OPTIONS_DEFAULT.IMAGE_COMPRESSION = "85";
PRESENTATION_OPTIONS_DEFAULT.AUDIO_BITRATE = "128";

var replaceMode = false;

var g_serverUrl = null;

function SetUploadFile(fileName, fileSize)
{
    GetElement("upload_resource").value = fileName;
    if (fileSize == 0)
    {
        DisableButton("btnUpload");
        DoAlert(ERR_MSG_FILE_EMPTY);
    }
    else if (fileSize > MAX_UPLOAD_FILE_SIZE)
    {
        DisableButton("btnUpload");
        DoAlert(ERR_MSG_FILE_TOO_LARGE);
    }
    else
    {
        EnableButton("btnUpload");
    }
}

function SetUploadProgressValue(bytesCompleted, bytesTotal)
{
    TRANSCODING_STATUS.status = MEDIA_RESOURCE_STATUS_UPLOADING;
    TRANSCODING_STATUS.displayStatus = MEDIA_RESOURCE_STATUS_UPLOADING;
    TRANSCODING_STATUS.valueComplete = bytesCompleted;
    TRANSCODING_STATUS.valueTotal = bytesTotal;

    OutputStatus();
}

function SetUploadCompleted()
{
    window.isTranscoding = true;
    SetProgressRefreshTimeout();
}

/**
 * Handles upload error event.
 */
function OnUploadError()
{
    SetUploadProgress("" + MEDIA_RESOURCE_STATUS_INTERRUPTED);
}

function IsStartsWith(start, str)
{
    if (start.length > str.length)
    {
        return false;
    }

    return str.substr(0, start.length) == start;
}

function EndTranscoding()
{
    JsLog("EndTranscoding");
    if (!replaceMode)
    {
        window.isTranscoding = false;
        EnableButton("btnUpload");
        RemoveLinkCaptureHandler();
    }
    else
    {
        $("#upload_Button").hide();
        $("#upload_ViewPresentation").show();
    }
}

function StartResourceReplaceUpload()
{
    replaceMode = true;
    DisableButton("btnViewPresentation");
    DisableButton("btnUploadAnother");
    $("#upload_Button").hide();
    $("#upload_ViewPresentation").show();
    StartResourceUpload();
}

function StartResourceUpload()
{
    JsLog("StartResourceUpload");
    HideErrors();
    DisableButton("btnUpload");
    EnableButton("btnUpdatePresentation");
    GetElement("updatePresentationIndicator").style.display = 'none';
    RegisterResourceId();
}

function DisableCancelLink()
{
    GetElement("cancelUploadLink").style.display = 'none';
}

function CancelResourceUpload()
{
    JsLog("CancelResourceUpload");
    if (TRANSCODING_STATUS.status == MEDIA_RESOURCE_STATUS_UPLOADING)
    {
        GetFlashApp("uploader").cancelUpload();
    }

    var uploadId = window.generatedId;
    var loginKey = window.loginKey;
    var cancelScript = REMOVE_RESOURCE_SCRIPT_NAME;
    var cancelScriptUrl = g_serverUrl + cancelScript + "?id_resource=" + uploadId + "&loginkey=" + loginKey;
    ajaxpage(cancelScriptUrl, OnResourceUploadCancelled, null, true);
}

function OnResourceUploadCancelled(description)
{
    EndTranscoding();
    OutputError(ERR_TRANSC_CANCELLED);
}

function RegisterResourceId()
{
    JsLog("RegisterResourceId");
    var fileName = GetElement("upload_resource").value;

    if (fileName.length == 0)
    {
        DoAlert(ERR_MSG_FILE_NOT_SELECTED);
        EnableButton("btnUpload");
        return;
    }

    window.uploadedFile = fileName;

    var parameterNames  = ["upload_resource", "id_resource"];
    var parameterValues = [fileName, window.generatedId ];

    var privateKeyField = GetElement("private_key");
    if ( privateKeyField )
    {
        parameterNames.push( "private_key" );
        parameterValues.push( privateKeyField.value );
    }

    var queryString = UriSerialize(parameterNames, parameterValues);
    queryString += "&" + GetPresentationParamsUri();

    var initScript = INIT_UPLOAD_SCRIPT_URL;

    ajaxpage(initScript, DoInitialScriptLoad, queryString);
}

function SetStatus(status, onlyDisplay)
{
    JsLog("SetStatus: " + status);
    TRANSCODING_STATUS.displayStatus = status;
    if (!onlyDisplay)
    {
        TRANSCODING_STATUS.status = status;
    }
    OutputStatus();
}

function SetStatusesNumbers(complete, total)
{
    JsLog("SetStatutesNumbers: complete = " + complete + ", total = " + total);
    TRANSCODING_STATUS.valueTotal       = total;
    TRANSCODING_STATUS.valueComplete    = complete;
}

function DoInitialScriptLoad(description)
{
    JsLog('DoInitialScriptLoad: ' + description);

    var queryStringResult = ParseQueryString(description);
    var returnCode = parseInt(GetQueryStringParam(queryStringResult, "code"));

    switch(returnCode)
    {
        case RESPONSE_ERR_INVALID_FILE_TYPE:
        {
            EndTranscoding();
            var fileType = GetQueryStringParam(queryStringResult, "fileType");
            PrepareIncorrectFileTypeError(fileType);
            OutputError(ERR_INCORRECT_FILE_TYPE);

            return;
        }
        case RESPONSE_ERR_INVALID_CAPTCHA:
        {
            EndTranscoding();
            OutputError(ERR_INVALID_CAPTCHA);
            RefreshCaptcha();
            return;
        }
        case RESPONSE_OK:
        {

            if (IsQueryStringParam(queryStringResult, COOKIE_LOGIN_KEY_VAR))
            {
                WritePersistentCookie(COOKIE_LOGIN_KEY_VAR, GetQueryStringParam(queryStringResult, COOKIE_LOGIN_KEY_VAR));
            }

            var uploadLocation = GetQueryStringParam(queryStringResult, "upload_location");
            var idResource = parseInt(GetQueryStringParam(queryStringResult, "id_resource"));
            var loginKey = GetQueryStringParam(queryStringResult, "login_key");

            var additionalParams = [
                ["has_privileges", "has_backup_privileges", "screen_width", "screen_height", "audio_bitrate", "image_quality", "minimal_slide_duration", "change_slides_auto", "th"],
                [GetQueryStringParam(queryStringResult, "has_privileges"),
                 GetQueryStringParam(queryStringResult, "has_backup_privileges"),
                 GetQueryStringParam(queryStringResult, "screen_width"),
                 GetQueryStringParam(queryStringResult, "screen_height"),
                 GetQueryStringParam(queryStringResult, "audio_bitrate"),
                 GetQueryStringParam(queryStringResult, "image_quality"),
                 GetQueryStringParam(queryStringResult, "minimal_slide_duration"),
                 GetQueryStringParam(queryStringResult, "change_slides_auto"),
                 GetQueryStringParam(queryStringResult, "th")]
            ];

            var title = GetQueryStringParam(queryStringResult, "title");
            GetElement("title").value = title;

            StartFileUpload(uploadLocation, idResource, loginKey, additionalParams);
            return;
        }
        default:
        {
            OutputError();
            return;
        }
    }
}


function StartFileUpload(uploadLocation, generatedId, loginKey, additionalParams)
{
    SetVisibility("errorForm", false);
    $("#upload_Settings").hide();
    $("#upload_CaptchaContainer").hide();
    $("#upload_Info").hide();
    $("#upload_Progress").show();
    $("#upload_PresentationDescription").show();
    $("#uploadFormHeading").text(LNG_UPLOAD_FORM.UPLOADING_PRESENTATION);

    uploadLocation += "&" + UriSerialize(additionalParams[0], additionalParams[1]);

    SetUploadProgressValue(0, 0);

    //for some reason startUpload function name doesn't work
    GetFlashApp("uploader").startUpload1(uploadLocation);

    window.generatedId = generatedId;
    window.loginKey = loginKey;
    window.resourceConverted = false;
    window.resourceSubmitted = false;
}

function RefreshProgress()
{
    JsLog("RefreshProgress");
    if (window.generatedId)
    {
        var uploadId = window.generatedId;
        var progressScript = SCRIPT_GET_TRANSCODING_STATUS;

        var progressScriptUrl = g_serverUrl + progressScript + "?id_resource=" + uploadId;

        ajaxpage(progressScriptUrl, SetUploadProgress, null, true);
    }
}

function SetProgressRefreshTimeout()
{
    JsLog("SetProgressRefreshTimeout");
    if (window.isTranscoding)
    {
        TRANSCODING_STATUS.refresh_progress_timeout = window.setTimeout("RefreshProgress()", PROGRESS_REFRESH_PERIOD);
    }
}

function ClearProgressTimeout()
{
    JsLog("ClearProgressTimeout");
    if (TRANSCODING_STATUS.refresh_progress_timeout)
    {
        window.clearTimeout(TRANSCODING_STATUS.refresh_progress_timeout);
        TRANSCODING_STATUS.refresh_progress_timeout = null;
    }
}

function SetUploadProgress(description)
{
    JsLog("SetUploadProgress: " + description);
    if (!description || !description.length)
    {
        SetProgressRefreshTimeout();
        return;
    }

    var statusInfo = description.split(PROGRESS_NUMBERS_DELIMETER);
    var status = parseInt(statusInfo[0]);

    var isSetTimeout = true;

    switch (status)
    {
        case MEDIA_RESOURCE_STATUS_ONLINE:
        case MEDIA_RESOURCE_STATUS_UNPUBLISHED:
            isSetTimeout = false;

            EndTranscoding();
            EnableButton("btnViewPresentation");
            EnableButton("btnUploadAnother");
            SetCompleteMessage();
            window.resourceConverted = true;
            if (window.resourceSubmitted)
            {
                DisableCancelLink();
            }
            break;

        case MEDIA_RESOURCE_STATUS_INTERRUPTED:
            isSetTimeout = false;

            TRANSCODING_STATUS.status = MEDIA_RESOURCE_STATUS_INTERRUPTED;
            TRANSCODING_STATUS.displayStatus = MEDIA_RESOURCE_STATUS_INTERRUPTED;
            OutputStatus();
            EndTranscoding();

            var errorCode = parseInt(statusInfo[3]);
            OutputError(errorCode);
            return;

    }

    switch (status)
    {
        case MEDIA_RESOURCE_STATUS_START_TRANSCODING:
        case MEDIA_RESOURCE_STATUS_COLLECTING:
        case MEDIA_RESOURCE_STATUS_PROCESSING:
        case MEDIA_RESOURCE_STATUS_SWF_WRITING:
            RemoveLinkCaptureHandler();
            break;
    }

    var valueReady = parseInt(statusInfo[1]);
    var valueTotal = parseInt(statusInfo[2]);

    var updateValues = CheckStatusUpdate(TRANSCODING_STATUS.status, status);
    if (TRANSCODING_STATUS.status == status)
    {
        updateValues = updateValues && (valueTotal >= TRANSCODING_STATUS.valueTotal) && (valueReady >= TRANSCODING_STATUS.valueComplete);
    }

    if (updateValues)
    {
        SetStatusesNumbers(valueReady, valueTotal);
        SetStatus(status, false);
    }
    else
    {
        SetStatus(status, true);
    }


    if (isSetTimeout)
    {
        SetProgressRefreshTimeout();
    }
}

function CheckStatusUpdate(oldStatus, newStatus)
{
    oldStatusPosition = ArraySearch(oldStatus, STATUSES_ORDER);
    newStatusPosition = ArraySearch(newStatus, STATUSES_ORDER);

    if (oldStatusPosition != -1 && newStatusPosition != -1)
    {
        return newStatusPosition >= oldStatusPosition;
    }

    return true;
}

function OutputError(errorCode)
{
    HideErrors();

    var errorContainer = "errorContainer";
    if (errorCode == ERR_TRANSC_PRESENTATION_ENCRYPTED ||
        errorCode == ERR_TRANSC_FAILED_OPEN_FILE ||
        errorCode == ERR_TRANSC_FILE_TOO_LARGE ||
        errorCode == ERR_INCORRECT_FILE_TYPE ||
        errorCode == ERR_TRANSC_CANCELLED ||
        errorCode == ERR_TRANSC_REPLACE_PRESENTATION_FAILED ||
        errorCode == ERR_INVALID_CAPTCHA
        )
        errorContainer += errorCode;

    SetVisibility(errorContainer, true);
    SetVisibility("errorForm", true);

    //clear resource id
    window.generatedId = 0;

    ShowEnabledUploadForm();
}

function ShowEnabledUploadForm()
{
    $("#upload_ViewPresentation").hide();
    SetVisibility("upload_Progress", false);
    SetVisibility("upload_PresentationDescription", false);
    SetVisibility("upload_Info", true);
    SetVisibility("upload_Settings", true);
    EnableButton("btnUpload");
    GetFlashApp("uploader").activate();

    RefreshCaptcha();
    $("#upload_CaptchaContainer").show();
}

function PrepareIncorrectFileTypeError(fileType)
{
    var invalidFileType = GetElement("invalidFileType");
    if (invalidFileType)
    {
        invalidFileType.innerHTML = fileType;
    }
    SetVisibility("errorForm", false);
}

function HideErrors()
{
    var tblError = GetElement("errorForm");
    if (tblError && tblError.rows.length > 0)
    {
        for(var i = 0; i < tblError.rows.length; ++i)
        {
            tblError.rows[i].style.display = 'none';
        }
    }

    $("#privateLimitExceed").hide();
}

function OutputStatus()
{
    JsLog("output status");
    var currentStatus = TRANSCODING_STATUS.status;
    var currentDisplayStatus = TRANSCODING_STATUS.displayStatus;
    var message = "";
    var progress = 0;

    if (currentStatus == MEDIA_RESOURCE_STATUS_INTERRUPTED)
    {
        message = "Intrerrupted.";
        ClearProgressTimeout();
    }
    else
    {
        var currentStatusPosition = ArraySearch(currentDisplayStatus, STATUSES_ORDER);
        if (currentStatusPosition == -1)
            return;

        var statusInfo = STATUSES_DISPLAY[currentStatusPosition];
        message = statusInfo[0];

        var valueComplete = TRANSCODING_STATUS.valueComplete;
        var valueTotal    = TRANSCODING_STATUS.valueTotal;
        var partWidth     = GetOverallProgressPartWidth(currentStatus);

        if (valueComplete && valueTotal)
            currentProgress = partWidth * valueComplete / valueTotal;
        else
            currentProgress = 0;

        progress = currentProgress + GetOverallProgressOffset(currentStatus);
        if (progress > 1)
        {
            progress -= 1;
        }
    }

    var spanMessage = GetElement("lblUploadMessage");
    var spanProgress = GetElement("lblUploadProgress");

    spanMessage.innerHTML = message;
    spanProgress.innerHTML = Math.round(progress * 100) + "%";

    SetProgressBarProgress("progressBar", progress);
}

function GetOverallProgressOffset(status)
{
    var resultProgress = 0;

    for ( var i = 0; i < PROGRESS_INFO.length; ++i )
    {
        var progressInfoItem = PROGRESS_INFO[i];
        if (progressInfoItem.status == status)
        {
            return resultProgress;
        }
        else
        {
            resultProgress += progressInfoItem.progressWidth || 0;
        }
    }

    return 0;
}

function GetOverallProgressPartWidth(status)
{
    for ( var i = 0; i < PROGRESS_INFO.length; ++i )
    {
        var progressInfoItem = PROGRESS_INFO[i];
        if (progressInfoItem.status == status)
        {
            return progressInfoItem.progressWidth;
        }
    }

    return 0;
}

function SetCaptureLinkHandler()
{
    document.onclick = OnLinkClickBrowserSpecific;
    document.ignoreFirst = true;
}

function RemoveLinkCaptureHandler()
{
    document.onclick = function ()
    {
        return true;
    };
}

function OnLinkClickBrowserSpecific(ev)
{
    if (ev)
    {
        return OnLinkClick(ev.target);
    }
    else
    {
        return OnLinkClick(window.event.srcElement);
    }
}

function OnLinkClick(srcObject)
{
    if (document.ignoreFirst)
    {
        document.ignoreFirst = false;
        return true;
    }

    if (srcObject.tagName == "A" || srcObject.tagName == "INPUT")
    {
        return window.confirm(MSG_QUESTION_INTERRUPT_UPLOAD);
    }
    return false;
}

function RedirectAfterTranscoding()
{
    var vars    = ["ID_RESOURCE"];
    var values  = [window.generatedId];
    var url = GetParametrizedString(SCRIPT_GET_RESOURCE_URL, vars, values);
    ajaxpage(url, RedirectViewScript, null);
}

function RedirectViewScript(url)
{
    window.location.href = url;
}

function RefreshUploadFrame()
{
}

function OnPrivatePresentationLimitExceed()
{
    EnableButton("btnUpdatePresentation");
    $("#updatePresentationIndicator").hide();

    $("#privateLimitExceed").show();
}

function CheckPrivatePresentationsLimit(idResource, onSuccessCallback, onLimitExceedCallback)
{
    function OnCheckPrivatePresentationsLimit(description)
    {
        var queryStringResult = ParseQueryString(description);
        var returnCode = parseInt(GetQueryStringParam(queryStringResult, "code"));

        switch (returnCode)
        {
            case RESPONSE_ERR_PRIVATE_PRESENTATIONS_LIMIT_EXCEED:
                if (onLimitExceedCallback && jQuery.isFunction(onLimitExceedCallback))
                {
                    onLimitExceedCallback();
                }
                break;

            case RESPONSE_OK:
                if (onSuccessCallback && jQuery.isFunction(onSuccessCallback))
                {
                    onSuccessCallback();
                }
                break;
        }
    }

    var initScript = "/check_private_presentations_limit.php";
    var params = UriSerialize(["id_resource"], [idResource]);
    ajaxpage(initScript, OnCheckPrivatePresentationsLimit, params);
}

function SendUpdatePresentationQuery(parameterNames, parameterValues)
{
    var queryString = UriSerialize(parameterNames, parameterValues);
    var initScript = "/update_presentation.php";

    ajaxpage(initScript, OnUpdatePresentationDescription, queryString);
}

function UpdatePresentationDescription()
{
    $("#privateLimitExceed").hide();

    var title                = Trim(GetElementValue("title"));
    var description          = Trim(GetElementValue("description_field"));
    var tags                 = Trim(GetElementValue("tags"));
    var category             = GetElementValue("category");
    var publishFlag          = GetElement("publish_flag").checked ? 1 : 0;
    var allowDownload        = GetElement("allow_download").checked ? 1 : 0;
    var language             = GetElementValue("language");
    var allowEmbed           = GetElement("allow_embed").checked ? 1 : 0;

    var postToContestElement = GetElement("post_to_contest_group");
    var postToContestGroup   = (postToContestElement && postToContestElement.checked) ? 1 : 0;

    if (title.length == 0)
    {
        DoAlert(ERR_MSG_EMPTY_TITLE);
        return;
    }

    if (!category || isNaN(category))
    {
        DoAlert(ERR_MSG_INCORRECT_CAT_ID);
        return;
    }

    var parameterValues =
    [
        window.generatedId,
        description,
        title,
        category,
        tags,
        publishFlag,
        allowDownload,
        language,
        allowEmbed,
        postToContestGroup
    ];

    var parameterNames =
    [
        "id_resource",
        "description",
        "title",
        "id_category",
        "tags",
        "publish_flag",
        "allow_download",
        "language",
        "allow_embed",
        "post_to_contest_group"
    ];

    DisableButton("btnUpdatePresentation");
    $("#updatePresentationIndicator").show();

    if (!publishFlag)
    {
        CheckPrivatePresentationsLimit
        (
            window.generatedId,

            function ()
            {
                SendUpdatePresentationQuery(parameterNames, parameterValues);
            },

            OnPrivatePresentationLimitExceed
        );
    }
    else
    {
        SendUpdatePresentationQuery(parameterNames, parameterValues);
    }
}

function OnUpdatePresentationDescription(description)
{
    var queryStringResult = ParseQueryString(description);
    var returnCode = parseInt(GetQueryStringParam(queryStringResult, "code"));

    switch(returnCode)
    {
        case RESPONSE_ERR_INVALID_TAGS:
            DoAlert(MSG_INCORRECT_UPLOAD_TAGS);
            break;

        case RESPONSE_ERR_INVALID_TITLE:
            DoAlert(MSG_INCORRECT_UPLOAD_TITLE);
            break;

        case RESPONSE_ERR_INVALID_DESCRIPTION:
            DoAlert(MSG_INCORRECT_UPLOAD_DESCRIPTION);
            break;

        case RESPONSE_ERR_PRIVATE_PRESENTATIONS_LIMIT_EXCEED:
            OnPrivatePresenationsLimitExceed();
            break;

        case RESPONCE_ERR_GUEST_SET_PUBLIC_PRESENTATION:
            OutputError(RESPONCE_ERR_GUEST_SET_PUBLIC_PRESENTATION);
            DoAlert(MSG_GUEST_CAN_NOT_PUBLISH_PRESENTATION);
            break;

        case RESPONSE_OK:
            $("#upload_PresentationDescription").hide();
            $("#upload_ViewPresentation").show();
            window.resourceSubmitted = true;
            if (window.resourceConverted)
            {
                DisableCancelLink();
            }
            break;
    }
}

function SetCompleteMessage()
{
    TRANSCODING_STATUS.status = MEDIA_RESOURCE_STATUS_COMPLETE;
    TRANSCODING_STATUS.displayStatus = MEDIA_RESOURCE_STATUS_COMPLETE;
    TRANSCODING_STATUS.valueComplete = 100;
    TRANSCODING_STATUS.valueTotal = 100;
    OutputStatus();
}

function JsLog(msg)
{
}

function AddPresentationOptionHighlight()
{
    $("#presentationOptionsTitle").attr("class", "comboBoxHighlightTitle");
}

function RemovePresentationOptionHighlight()
{
    $("#presentationOptionsTitle").attr("class", "comboBoxTitle");
}

function ToggleOptions(contentId, buttonId)
{
    $(contentId).toggle();

    if ( $(contentId).is(":visible") )
    {
        $(buttonId).attr("src", "/images/opened_icon.gif");
    }
    else
    {
        $(buttonId).attr("src", "/images/closed_icon.gif");
    }
}

function SwitchPrivacyOptions()
{
    ToggleOptions("#upload_PrivacyOptions", "#btnPrivacyOptions");
}

function UpdatePrivacyOptionsHeader()
{
    var isPublic   = GetElement("publish_flag").checked;
    var isDownload = GetElement("allow_download").checked;
    var isEmbed    = GetElement("allow_embed").checked;

    GetElement("lblPublicStatus").innerHTML   = isPublic   ? "yes" : "no";
    GetElement("lblDownloadStatus").innerHTML = isDownload ? "yes" : "no";
    GetElement("lblEmbedStatus").innerHTML    = isEmbed    ? "yes" : "no";
}

function UpdatePrivacyOptions()
{
    if (GetElement("post_to_contest_group").checked)
    {
        GetElement("publish_flag").checked = true;
        UpdateAllowEmbedOption();
    }
}

function UpdateAllowEmbedOption()
{
    var isPublic = GetElement("publish_flag").checked;

    var allowEmbedCheckbox = GetElement("allow_embed");
    if (!isPublic)
    {
        allowEmbedCheckbox.checked  = false;
        allowEmbedCheckbox.disabled = true;
    }
    else
        allowEmbedCheckbox.disabled = false;
}

function SwitchPresentationOptions()
{
    ToggleOptions("#presentationOptionsContent", "#btnPresentationOptions");
}

function OnChangePlaybackOptions()
{
    var playbackMode = $("#playbackMode").val();
    if ( playbackMode == PLAYBACK_MODES.VIDEO_LIKE )
    {
        $("#videolikeOptions").show();
    }
    else
    {
        $("#videolikeOptions").hide();
    }
}

function GetPresentationParamsUri()
{
    var minimalSlideDuration = $("#minimalSlideDuration").val();
    var screenResolution = $("#screenResolution").val();
    var imageCompression = $("#imageCompression").val();
    var audioBitrate = $("#audioBitrate").val();
    var playbackMode = $("#playbackMode").val();

    var screenWidth = PRESENTATION_OPTIONS_DEFAULT.SCREEN_WIDTH;
    var screenHeight = PRESENTATION_OPTIONS_DEFAULT.SCREEN_HEIGHT;

    var screenArray = screenResolution.split("x");
    if (screenArray.length == 2)
    {
        screenWidth = screenArray[0];
        screenHeight = screenArray[1];
    }

    var params = ['minimal_slide_duration', 'screen_width', 'screen_height', 'image_quality', 'audio_bitrate', 'playback_mode'];
    var values = [minimalSlideDuration, screenWidth, screenHeight, imageCompression, audioBitrate, playbackMode];

    return UriSerialize(params, values);
}

function GetPlaybackStatus()
{
    var status = "default";

    var minimalSlideDuration = $("#minimalSlideDuration").val();
    if (minimalSlideDuration != PRESENTATION_OPTIONS_DEFAULT.MINIMAL_SLIDE_DURATION)
    {
        status = "custom";
    }
    var playbackMode = $("#playbackMode").val();
    if (playbackMode != PRESENTATION_OPTIONS_DEFAULT.PLAYBACK_MODE)
    {
        status = "custom";
    }

    return status;
}

function OnChangeQualityOptions()
{
}

function GetQualityStatus()
{
    var status = "default";

    var screenResolution = $("#screenResolution").val();
    var imageCompression = $("#imageCompression").val();
    var audioBitrate = $("#audioBitrate").val();

    if (screenResolution != PRESENTATION_OPTIONS_DEFAULT.SCREEN_RESOLUTION
        || imageCompression != PRESENTATION_OPTIONS_DEFAULT.IMAGE_COMPRESSION
        || audioBitrate != PRESENTATION_OPTIONS_DEFAULT.AUDIO_BITRATE)
    {
        status = "custom";
    }

    return status;
}

function SetDefaultPlaybackOptions()
{
    $("#minimalSlideDuration").val(PRESENTATION_OPTIONS_DEFAULT.MINIMAL_SLIDE_DURATION);
    $("#playbackMode").val(PRESENTATION_OPTIONS_DEFAULT.PLAYBACK_MODE);

    OnChangePlaybackOptions();
}

function SetDefaultQualityOptions()
{
    $("#screenResolution").val(PRESENTATION_OPTIONS_DEFAULT.SCREEN_RESOLUTION);
    $("#imageCompression").val(PRESENTATION_OPTIONS_DEFAULT.IMAGE_COMPRESSION);
    $("#audioBitrate").val(PRESENTATION_OPTIONS_DEFAULT.AUDIO_BITRATE);
}

/**
 * Resets form fields values.
 */
function ResetForm()
{
    $( "#title" ).val( "" );
    $( "#description_field" ).val( "" );
    $( "#tags" ).val( "" );
    $( "#category" ).find( "option:first-child" ).attr( "selected", "selected" );
    $( "#publish_flag" ).attr( "checked", "checked" );
    $( "#allow_download" ).attr( "checked", "" );
    $( "#allowEmbed" ).attr( "checked", "" );
    $( "#language" ).find( "option:first-child" ).attr( "selected", "selected" );
}

/**
 * Handles upload another presentation button click. Showes form for upload new presentation.
 */
function UploadAnotherPresentationClickHandler()
{
    replaceMode = false;
    ResetForm();
    $( "#upload_resource" ).val( "" )

    $( "#upload_ViewPresentation" ).hide();
    DisableButton("btnViewPresentation");
    DisableButton("btnUploadAnother");

    $( "#upload_Progress" ).hide();
    $( "#upload_Info" ).show();
    $("#upload_Settings").show();

    RefreshCaptcha();
    $("#upload_CaptchaContainer").show();

    $( "#upload_presentation_options" ).show();
    $( "#btnUpload" ).show();
    if ( $("#presentationOptionsContent").is(":visible") )
    {
        SwitchPresentationOptions();
    }
    window.generatedId = 0;
    GetFlashApp("uploader").activate()
}

$(function (){
    g_serverUrl = $("#serverUrl").val();
    var counterLabel = $("#counterLabel").val();
    var descriptionCharLimit = $("#descriptionCharLimit").val();
    var titleCharLimit = $("#titleCharLimit").val();

    $("#description_field").setLimit(descriptionCharLimit).setCounter(counterLabel);
    $("#title").setLimit(titleCharLimit).setCounter(counterLabel);

    $("#cancelResourceUploadLink").click( CancelResourceUpload );
    $("#publish_flag").click( UpdateAllowEmbedOption );

});
