﻿var introManager = new function()
{
    this.page = { playlist: 'playlistkey', widget: 'widgetkey', players: 'playerskey', media: 'mediakey' }
    this.introContainer = '.intro';
    this.init = function(pageId)
    {
        var show = $.cookie(pageId);
        if (show != '0')
            $(introManager.introContainer).fadeIn('slow');
        
    };
    this.close = function(pageId)
    {
        $(introManager.introContainer).fadeOut('slow');
        $.cookie(pageId, '0');
    }
};
var ajaxFile = null;
/// Core function for sending ajax requests.
function callAjaxPostBack(value, pageUrl, successCB, failCB, isAsync, type) {
    var load = '';
    if (typeof (type) == 'undefined' || type.toLowerCase() == "post" || type.toLowerCase() != 'get') {
        type = 'POST';
        load = $.toJSON(value);
    }
    else {
        type = "GET";
        load: $.trim(value);
    }
    if (typeof (failCB) != 'function')
        failCB = function() { };
    response = $.ajax({
        type: type,
        data: load,
        url: pageUrl,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        contentLength: load.length,
        async: isAsync,
        success: successCB,
        error: failCB
    });
    if (response.readyState == 4) {
        if (response.responseText.toLowerCase() == 'true')
            return true;
        else
            return false;
    }
}

function callAjaxFileUpload(fileId, pageUrl, successMethod, failMethod) {

    ajaxFile = $.ajaxFileUpload({
        url: pageUrl,
        secureuri: false,
        fileElementId: fileId,
        dataType: 'json',
        contentType: "application/json",
        async: false,
        success: successMethod,
        error: failMethod
    });
}
function cancelFileUpload() {
    window.location.reload();
    popup.IsOk = true;
}
function configureExpiryDate(id) {

}

function configureBirthDate(id) {
    var today = serverDate;
    var minYear = today.getFullYear() - 100;
    var maxYear = today.getFullYear() - 13;
    var minDate = new Date(minYear, today.getMonth(), today.getDate());
    var maxDate = new Date(maxYear, today.getMonth(), today.getDate());
    setDatePicker(id, minDate, maxDate, 'Date of Birth');
}
function setDatePicker(id, mindate, maxdate, tooltip, beforeshowfunction) {
    var maxiDate;

    if (mindate == serverDate) {
        var maxYear = mindate.getFullYear() + 5;
        maxiDate = new Date(maxYear, mindate.getMonth(), mindate.getDate());
    }
    else
        maxiDate = maxdate;

    $('#' + id).datepicker({
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonText: tooltip,
        buttonImage: '../app_themes/blue/images/calendar.gif',
        buttonImageOnly: true,
        yearRange: mindate.getFullYear() + ':' + maxiDate.getFullYear(),
        minDate: mindate,
        maxDate: maxiDate,
        showButtonPanel: true,
        beforeShow: beforeshowfunction,
        closeText: 'Close',
        onChangeMonthYear: function(year, month, control) {
            var date = month + '/' + control.selectedDay + '/' + year;
            if ($.trim($('#' + id).val()) != '')
                $('#' + id).val(date);
        }
    });
}

function isEmpty(id) {
    return $.trim($("#" + id).val()) == '';
}

//disables enter key.
function disableEnterKey(e, callback) {
    var key;

    if (window.event) {
        key = window.event.keyCode;     //IE
        //window.event.cancelBubble = true;
    }
    else
        key = e.which;     //firefox

    if (key == 13) {

        if (callback) {
            callback();
        }
        return false;

    }
    else
        return true;
}

function showSessionExpiredMessage() {
    showError(messages.sessionexpiry);
}

var jqGridHistory = new function() {
    this.seljqrows = '';
    this.restore = function(gridId) {
        var ids = $.trim(this.seljqrows.replace(/-/g, ''));
        ids = ids.slice(0, ids.lastIndexOf(','));
        ids = ids.split(',');
        var grid = jQuery(gridId);
        var curIds = ',' + grid.getDataIDs() + ',';
        var id;
        for (var index = 0; index < ids.length; index++) {
            id = ',' + ids[index] + ',';
            if (ids[index] != '' && !isNaN(ids[index]) && curIds.match(id)) {
                grid.setSelection(ids[index], true);
            }
        }
    };
    this.setRows = function(ids, selected) {
        for (var index = 0; index < ids.length; index++) {
            this.setRow(ids[index], selected);
        }
    };
    this.setRow = function(id, selected) {
        var id = '-' + id + '-,';
        if (selected) {
            if (!this.seljqrows.match(id)) {
                this.seljqrows += id;
            }
        }
        else {
            this.seljqrows = this.seljqrows.replace(id, '');
        }
    };
    this.getRows = function() {
        if ($.trim(this.seljqrows) == '')
            return new Array();
        var rows = this.seljqrows.slice(0, this.seljqrows.lastIndexOf(',') - 1);
        return rows.replace(/-/g, '').split(',');
    };
    this.reset = function() { this.seljqrows = ''; };

};

var ptvPlayer = new function()
{
    this.preview = function(details)
    {
        if (details.Id == 2)
        {
            showWarning('Full Player Categories Left to be implemented.');
        }
        else
        {
            if (details.IsInline)
                details.Content = details.DivContainer;
            else
                details.Content = details.DivContainer + "content";
            var width = details.Width;
            var height = details.Height;
            if (details.FlashVars.freewheel && ($.trim(details.FlashVars.freewheel) == '' || $.trim(details.FlashVars.freewheel) == '0'))
            {
                details.FlashVars.freewheel = null;
                details.FlashVars.sitesection = null;
            }
            sessionManager.deactivate(true);
            swfobject.embedSWF(details.PreloaderSWF, details.Content, width, height, "9.0.0", "#000000", details.FlashVars, details.FlashParams);
            if (details.IsInline == false)
            {
                showPanel(details.DivContainer, details.Content, 'close', height + 30, width + 10, function() { ptvPlayer.close(details.DivContainer) });
            }

        }
    }
    this.close = function(id)
    {

        var parent = document.getElementById(id);
        var child = document.getElementById(id + 'content');
        if (child.tagName.toLowerCase() == "object")
        {
            parent.removeChild(child);
            child = document.createElement("div");
            child.id = id + 'content';
            parent.appendChild(child);
        }
        else
        {
            child.src = "";
        }
        sessionManager.activate();
    };

    this.viewWidget = function(widgetUrl, width, height, widgetName, isInline)
    {
        sessionManager.deactivate(true);
        var playerHeight = height;
        var playerWidth = width;
        var widgetcontent = document.getElementById(widgetName + "content");
        widgetcontent.style.margin = "0px"
        widgetcontent.height = height + 10;
        widgetcontent.width = width + 5;
        widgetcontent.src = widgetUrl;
        if (!isInline)
            showPanel(widgetName, widgetcontent.id, 'close', height + 30, width + 10, function() { ptvPlayer.close(widgetName) });
        else
            $('#' + widgetName).css('display', 'inline');
    }
};

function isDate(dateStr, showalert) {
    var datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
    var date = Date.parse(dateStr);
    var isValid = !isNaN(date);
    if (isValid)
        isValid = matchArray != null;

    if (isValid) {
        month = matchArray[1] - 1; // p@rse date into variables
        day = matchArray[3];
        year = matchArray[5];
        date = new Date(dateStr);
        isValid = date.getDate() == day && date.getMonth() == month && date.getFullYear() == year;
    }
    if (!isValid && showalert)
        showWarning("Please enter date in mm/dd/yyyy format.");
    return isValid; // date is valid
}

function mask(str, textbox, loc, delim, event) {
    var inputKey = 0;
    if (event != 'undefined' && event != null)
        inputKey = event.keyCode;
    if ((inputKey > 47 && inputKey < 58) || (inputKey > 96 && inputKey < 105)) // numbers
    {

        str = maskConverter(str, loc, delim)
        textbox.value = str
    }

}
function maskConverter(str, loc, delim) {
    var locs = loc.split(",");
    for (var i = 0; i <= locs.length; i++) {
        for (var k = 0; k <= str.length; k++) {
            if (k == locs[i]) {
                if (str.substring(k, k + 1) != delim) {
                    str = str.substring(0, k) + delim + str.substring(k, str.length)
                }
            }
        }
    }
    return str;
}