/*
* FCKeditor - The text editor for Internet - http://www.fckeditor.net
* Copyright (C) 2003-2009 Frederico Caldeira Knabben
*
* == BEGIN LICENSE ==
*
* Licensed under the terms of any of the following licenses at your
* choice:
*
*  - GNU General Public License Version 2 or later (the "GPL")
*    http://www.gnu.org/licenses/gpl.html 
*
*  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
*    http://www.gnu.org/licenses/lgpl.html
*
*  - Mozilla Public License Version 1.1 or later (the "MPL")
*    http://www.mozilla.org/MPL/MPL-1.1.html
*
* == END LICENSE ==
*
* Scripts related to the Flash dialog window (see fck_flash.html).
*/

var dialog = window.parent;
var oEditor = dialog.InnerDialogLoaded();
var FCK = oEditor.FCK;
var FCKLang = oEditor.FCKLang;
var FCKConfig = oEditor.FCKConfig;
var FCKTools = oEditor.FCKTools;

//#### Dialog Tabs

// Set the dialog tabs.
dialog.AddTab('Info', oEditor.FCKLang.DlgInfoTab);

if (FCKConfig.FlashUpload)
    dialog.AddTab('Upload', FCKLang.DlgLnkUpload);

if (!FCKConfig.FlashDlgHideAdvanced)
    dialog.AddTab('Advanced', oEditor.FCKLang.DlgAdvancedTag);

// Function called when a dialog tag is selected.
function OnDialogTabChange(tabCode) {
    ShowE('divInfo', (tabCode == 'Info'));
    ShowE('divUpload', (tabCode == 'Upload'));
    ShowE('divAdvanced', (tabCode == 'Advanced'));
}

// Get the selected flash embed (if available).
var oFakeImage = dialog.Selection.GetSelectedElement();
var oEmbed;

if (oFakeImage) {
    if (oFakeImage.tagName == 'IMG' && oFakeImage.getAttribute('_fckflash'))
        oEmbed = FCK.GetRealElement(oFakeImage);
    else
        oFakeImage = null;
}

window.onload = function () {
    // Translate the dialog box texts.
    oEditor.FCKLanguageManager.TranslatePage(document);

    // Load the selected element information (if any).
    LoadSelection();

    // Show/Hide the "Browse Server" button.
    GetE('tdBrowse').style.display = FCKConfig.FlashBrowser ? '' : 'none';

    // Set the actual uploader URL.
    if (FCKConfig.FlashUpload)
        GetE('frmUpload').action = FCKConfig.FlashUploadURL;

    dialog.SetAutoSize(true);

    // Activate the "OK" button.
    dialog.SetOkButton(true);

    SelectField('txtUrl');
}

function LoadSelection() {  
    if (!oEmbed) return;

    GetE('txtUrl').value = GetAttribute(oEmbed, 'src', '');
    GetE('txtWidth').value = GetAttribute(oEmbed, 'width', '');
    GetE('txtHeight').value = GetAttribute(oEmbed, 'height', '');

    // Get Advances Attributes
    GetE('txtAttId').value = oEmbed.id;
    GetE('chkAutoPlay').checked = GetAttribute(oEmbed, 'play', 'true') == 'true';
    GetE('chkLoop').checked = GetAttribute(oEmbed, 'loop', 'true') == 'true';
    GetE('chkMenu').checked = GetAttribute(oEmbed, 'menu', 'true') == 'true';
    GetE('cmbScale').value = GetAttribute(oEmbed, 'scale', '').toLowerCase();

    GetE('txtAttTitle').value = oEmbed.title;

    if (oEditor.FCKBrowserInfo.IsIE) {
        GetE('txtAttClasses').value = oEmbed.getAttribute('className') || '';
        GetE('txtAttStyle').value = oEmbed.style.cssText;
    }
    else {
        GetE('txtAttClasses').value = oEmbed.getAttribute('class', 2) || '';
        GetE('txtAttStyle').value = oEmbed.getAttribute('style', 2) || '';
    }

    UpdatePreview();
}

var 音频文件验证管理 = {
    ext: function (filePath) {

        var index = filePath.indexOf("?");

        if (index != -1) {
            filePath = filePath.substring(0, index);
        }

        var ext = RegExp("\.[^\.]+$").exec(filePath) || {};
        return (ext[0] || "").toLowerCase();
    }
}

//#### The OK button was hit.
function Ok() {
    if (GetE('txtUrl').value.length == 0) {
        dialog.SetSelectedTab('Info');
        GetE('txtUrl').focus();

        alert(oEditor.FCKLang.DlgAlertUrl);

        return false;
    }

//    var ext = 音频文件验证管理.ext(GetE('txtUrl').value);

//    if (ext != ".mp3" && ext != ".wma") {

    //        alert("音频文件格式不正确，请添加mp3,wav,wma格式的文件");

//        return false;
//    }

    oEditor.FCKUndo.SaveUndoStep();
    if (!oEmbed) {
        oEmbed = FCK.EditorDocument.createElement('EMBED');
        oFakeImage = null;
    }
    UpdateEmbed(oEmbed);

    if (!oFakeImage) {
        oFakeImage = oEditor.FCKDocumentProcessor_CreateFakeImage('FCK__Flash', oEmbed);
        oFakeImage.setAttribute('_fckflash', 'true', 0);
        oFakeImage = FCK.InsertElement(oFakeImage);
    }

    oEditor.FCKEmbedAndObjectProcessor.RefreshView(oFakeImage, oEmbed);

    return true;
}

function UpdateEmbed(e) {
    SetAttribute(e, 'type', 'application/x-shockwave-flash');
    SetAttribute(e, 'pluginspage', 'http://www.macromedia.com/go/getflashplayer');

    SetAttribute(e, 'src', GetE('txtUrl').value);
    SetAttribute(e, "width", GetE('txtWidth').value || '300'); //"width", '300'
    SetAttribute(e, "height", GetE('txtHeight').value || '45');  //"height", '45'

    // Advances Attributes

    SetAttribute(e, 'id', GetE('txtAttId').value);
    SetAttribute(e, 'scale', GetE('cmbScale').value);

    SetAttribute(e, 'play', GetE('chkAutoPlay').checked ? 'true' : 'false');
    SetAttribute(e, 'loop', GetE('chkLoop').checked ? 'true' : 'false');
    SetAttribute(e, 'menu', GetE('chkMenu').checked ? 'true' : 'false');

    SetAttribute(e, 'title', GetE('txtAttTitle').value);

    SetAttribute(e, 'autostart', 'false');

    if (oEditor.FCKBrowserInfo.IsIE) {
        SetAttribute(e, 'className', GetE('txtAttClasses').value);
        e.style.cssText = GetE('txtAttStyle').value;
    }
    else {
        SetAttribute(e, 'class', GetE('txtAttClasses').value);
        SetAttribute(e, 'style', GetE('txtAttStyle').value);
    }
}

var ePreview;

function SetPreviewElement(previewEl) {
    ePreview = previewEl;

    if (GetE('txtUrl').value.length > 0)
        UpdatePreview();
}

function UpdatePreview() {
    if (!ePreview)
        return;

    while (ePreview.firstChild)
        ePreview.removeChild(ePreview.firstChild);

    if (GetE('txtUrl').value.length == 0)
        ePreview.innerHTML = '&nbsp;';
    else {
        var oDoc = ePreview.ownerDocument || ePreview.document;
        var e = oDoc.createElement('EMBED');

        SetAttribute(e, 'src', GetE('txtUrl').value);
        SetAttribute(e, 'type', 'application/x-shockwave-flash');
        SetAttribute(e, 'width', '100%');
        SetAttribute(e, 'height', '100%');

        ePreview.appendChild(e);
    }
}

// <embed id="ePreview" src="fck_flash/claims.swf" width="100%" height="100%" style="visibility:hidden" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">

function BrowseServer() {
    OpenFileBrowser(FCKConfig.FlashBrowserURL, FCKConfig.FlashBrowserWindowWidth, FCKConfig.FlashBrowserWindowHeight);
}

function SetUrl(url, width, height) {
    GetE('txtUrl').value = url;

    if (width)
        GetE('txtWidth').value = width;

    if (height)
        GetE('txtHeight').value = height;

    UpdatePreview();

    dialog.SetSelectedTab('Info');
}

function OnUploadCompleted(errorNumber, fileUrl, fileName, customMsg) {
    // Remove animation
    window.parent.Throbber.Hide();
    GetE('divUpload').style.display = '';

    switch (errorNumber) {
        case 0: // No errors
            alert('您的文件已经成功上传');
            break;
        case 1: // Custom error
            alert(customMsg);
            return;
        case 101: // Custom warning
            alert(customMsg);
            break;
        case 201:
            alert('在当前文件夹中已有一个相同名称的文件。上传的文件名称已更改为 "' + fileName + '"');
            break;
        case 202:
            alert('文件格式无效，请重新选择.');
            return;
        case 203:
            alert("安全性错误。您可能没有足够的权限来上传。请联系在线客服.");
            return;
        case 500:
            alert('connector 被禁用.');
            break;

        /* 自定义错误代码 */
        case 1001:
            alert('上传的文件不能超过20M');
            break;

        default:
            alert('文件上传发生错误。错误号: ' + errorNumber);
            return;
    }

    SetUrl(fileUrl);
    GetE('frmUpload').reset();
}

var oUploadAllowedExtRegex = new RegExp(FCKConfig.FlashUploadAllowedExtensions, 'i');
var oUploadDeniedExtRegex = new RegExp(FCKConfig.FlashUploadDeniedExtensions, 'i');

function CheckUpload() {
    var sFile = GetE('txtUploadFile').value;

    if (sFile.length == 0) {
        alert('请选择的一个您要上传的多媒体文件');
        return false;
    }

    if ((FCKConfig.FlashUploadAllowedExtensions.length > 0 && !oUploadAllowedExtRegex.test(sFile)) ||
		(FCKConfig.FlashUploadDeniedExtensions.length > 0 && oUploadDeniedExtRegex.test(sFile))) {
        OnUploadCompleted(202);
        return false;
    }

    // Show animation
    window.parent.Throbber.Show(100);
    GetE('divUpload').style.display = 'none';

    return true;
}
