﻿//
// General.js
//

function cancelDialog()
{
    ajaxPost('/Template/CancelDialog');
    return false;
}

function getDragImage(sizeDiv)
{
    var sizeImg = sizeDiv.children().first();
    if (sizeImg.Length)
    {
        var id = sizeImg.attr('id');
        if (id && id.substr(0, 4) == 'img.')
        {
            return sizeImg;
        }
    }
    return jQuery();
}

var currentTextEditor;

function getTextEditArea()
{
    WYSIWYG.updateTextArea(currentTextEditor.attr('id'))
    return currentTextEditor.val();
}

function handleEvent(eventHandler)
{
    eventHandler = jQuery(eventHandler);
    if (eventHandler.length)
    {
        eval(eventHandler.val());
    }
}

var linkToPagePrefix = '/Vyrole/ShowPage/';

function linkToPage(page)
{
    var vyroleCampaignId = jQuery('#vyroleCampaignId');
    if (vyroleCampaignId.length)
    {
        if (jQuery('#campaignBuilderContent').length)
        {
            linkTo('/Edit/Edit/' + vyroleCampaignId.val() + '?tabNr=3&page=' + page);
            return false;
        }
        linkTo('/View/' + vyroleCampaignId.val() + '/' + page);
        return false;
    }

    if (jQuery('#campaignBuilderContent').length)
    {
        ajaxPost('/Edit/ItemLink/' + page);
        return false;
    }

    linkTo(linkToPagePrefix + page);
    return false;
}

function sendForm(formName, url, extra)
{
    var form = jQuery(formName);
    var inputs = form.find('.bfInput');
    var prefix = form.attr('id') + '_';
    var text = '';
    for (var x = 0; x < inputs.length; x++)
    {
        var control = inputs[x];
        if (control.id.substr(0, prefix.length) != prefix)
        {
            continue;
        }

        var value = jQuery.trim(control.value);
        if (control.tagName.toLowerCase() == 'input')
        {
            switch (control.type.toLowerCase())
            {
                case 'radio':
                    if (!control.checked)
                    {
                        continue;
                    }
                    break;

                case 'checkbox':
                    value = control.checked ? 'true' : 'false';
                    break;
            }
        }
        text += '&' + control.id.substr(prefix.length) + '=' + encodeURIComponent(value);
    }
    if (extra && extra != '')
    {
        if (extra.substr(0, 1) != '&')
        {
            extra = '&' + extra;
        }
        text += extra; ;
    }
    ajaxPost(url, text.substr(1));
}

function setAutoFocus(id)
{
    setFocus(id + ' .bfFocus');
}

function setFocus(control)
{
    jQuery(control).focus().select();
}

function setPanelFlexSize(div, panelWidth)
{
    var items = jQuery(div).children();
    var width = 0;
    var flex = jQuery();
    for (var i = 0; i < items.length; i++)
    {
        div = jQuery(items[i]);
        if (!flex.length && div.hasClass('panelFlex'))
        {
            flex = div;
            continue;
        }
        if (!div.hasClass('clearFloat'))
        {
            width += div.width();
        }
    }
    if (flex.length)
    {
        flex.width(panelWidth - width);
    }
}

function setPanelSize(panel)
{
    panel = jQuery(panel);
    var panelWidth = panel.width();
    panel.children().each(function() { setPanelFlexSize(this, panelWidth); });
}

function setTextEditArea(name, settings)
{
    WYSIWYG.attach(name.substr(1), settings ? settings : full);
    currentTextEditor = jQuery(name);
    return currentTextEditor;
}

function setTextEditStyle(div, settings)
{
    var bgColor = setTextEditStyleProp(div, 'background-color', '#ffffff');
    var color = setTextEditStyleProp(div, 'color', '#000000');
    var font = setTextEditStyleProp(div, 'font-family', 'Arial');
    var fontSize = setTextEditStyleProp(div, 'font-size', '13px');

    settings.DefaultStyle = 'background-color: ' + bgColor + ';color: ' + color + ';font-family: ' + font + ';font-size: ' + fontSize + ';';
}

function setTextEditStyleProp(div, prop, val)
{
    var bgColor = '#ffffff';
    for (var el = jQuery(div); el; el = el.parent())
    {
        var propVal = el.css(prop)
        if (propVal && propVal != 'transparent')
        {
            return propVal;
        }
    }
    return val;
}

function showDialog()
{
    var popup = popupShow();
    showPopup(popup);
}

function showMessage()
{
    var popup = popupShow();
    showPopup(popup);
}

function showPopup(dialog)
{
    var title = dialog.find('.panelHeader .panelFlex');
    var bottom = dialog.find('.panelFooter .panelFlex');
    title.width(0);
    bottom.width(0);
    var titleText = dialog.find('.dialogTitle');
    if (titleText.length)
    {
        title.html(titleText.val());
    }

    setPanelSize(dialog);
}

function submit(form)
{
    jQuery(form).submit();
}

//
//  popup menus
//

var currentMenu;
var currentMenuPopup;
var timerMenuPopup;

function closeMenuPopup()
{
    if (currentMenuPopup)
    {
        currentMenuPopup.css('visibility', 'hidden');
        currentMenuPopup = null;
    }
}

function enterMenuPopup()
{
    if (timerMenuPopup)
    {
        window.clearTimeout(timerMenuPopup);
        timerMenuPopup = null;
    }
}

function leaveMenuPopup()
{
    timerMenuPopup = window.setTimeout(closeMenuPopup, 500);
}

function openMenuPopup(menuItemThis, offset, popup)
{
    // turn DOM object into mootools object
    currentMenu = jQuery(menuItemThis);

    // cancel any pending menu close timer
    enterMenuPopup();

    if (!offset)
    {
        offset = 0;
    }

    // popup for a menu item has same id as menu followed by Popup
    if (popup)
    {
        popup = jQuery(popup);
    }
    else
    {
        popup = jQuery(currentMenu.attr('id') + 'Popup');
    }
    if (popup != currentMenuPopup)
    {
        // hide any other visible popup
        closeMenuPopup();

        // place menu popup directly underneath menu item
        var position = currentMenu.offset();
        popup.offset({
            top: position.top + currentMenu.height(),
            left: position.left + offset
        });

        if (currentMenu.attr('id') != '')
        {
            setPanelSize('#' + currentMenu.attr('id') + 'Popup');
        }
        popup.css('visibility', 'visible');
        currentMenuPopup = popup;
    }
}


/*
function checkWebAddress(url)
{
return url.match(/^((https?):\/\/)?(\w[\w-]*\.)*\w[\w-]*\.[a-z]{2,6}(\/|(\/[\w#!:.?+=&%@!-]+))?/i);
}

function checkEmailAddress(email)
{
return email.match(/^\w[\w+.-]*@(\w[\w-]*\.)*\w[\w-]*\.[a-z]{2,6}$/i);
}

function colorPicker(el)
{
el = $(el);
var prefix = el.id.substr(4);
var id = prefix + 'Picker';
var picker = $(id);
if (picker)
{
picker.dispose();
}
var input = $('config.' + prefix);
var hex = input.value;
var display = $('display.' + prefix);
display.setStyle('background-color', hex);
var color = [parseInt(hex.substr(1, 2), 16),
parseInt(hex.substr(3, 2), 16),
parseInt(hex.substr(5, 2), 16)];
new MooRainbow(el.id,
{
startColor: color,
id: id,
imgPath: '/Images/MooRainbow/',
zOffset: 6666,
onChange: function(color)
{
// reload template css
},
onComplete: function(color)
{
input.value = color.hex;
display.setStyle('background-color', color.hex);
}
});
}

function uploadError(error)
{
hideProcessingIndicator();
ajaxPost('/Template/Message', 'text=' + encodeURIComponent(error));
}

//
// YouTube interfacing
//

// This function is automatically called by the player once it loads
function onYouTubePlayerReady(playerId)
{
var ytplayer = $(playerId);
ytplayer.addEventListener('onError', 'ytError');
ytplayer.cueVideoById(playerId.substr(2));
}

function ytError(errorCode)
{
alert("An error occured of type:" + errorCode);
}

function ytGetPlayer(playerId)
{
return $('yt' + playerId);
}

function ytLoadPlayer(playerId, xSize, ySize)
{
//    var playerUrl = 'http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=yt' + playerId;
//    var params = { allowScriptAccess: 'always', wmode: 'transparent' };
//    var atts = { id: 'yt' + playerId };
//    SWFObject.embedSWF(playerUrl, playerId, xSize, ySize, '8', null, null, params, atts);

var so = new SWFObject('/Scripts/Common/jwplayer/jwp57.swf', 'yt' + playerId, '470', '320', '9');
so.addParam('allowfullscreen', 'true');
so.addParam('allowscriptaccess', 'always');
so.addParam('wmode', 'transparent');
so.addVariable('file', 'http://www.youtube.com/watch?v=' + playerId);
so.addVariable('provider', 'youtube');
so.write(playerId);
}

function ytMute(playerId)
{
ytGetPlayer(playerId).mute();
}

function ytPause(playerId)
{
ytGetPlayer(playerId).pauseVideo();
}

function ytPlay(playerId)
{
ytGetPlayer(playerId).play();
}

function ytReset(playerId)
{
var ytplayer = ytGetPlayer(playerId);
if (ytplayer.getPlayerState() == 1)
{
ytplayer.seekTo(0);
}
else
{
ytplayer.seekTo(0);
ytplayer.pauseVideo();
}
}

function ytStop(playerId)
{
ytGetPlayer(playerId).stopVideo();
}

function ytUnmute(playerId)
{
ytGetPlayer(playerId).unMute();
}
*/

