﻿function WEBGetMediaList(_PortalId, _ModuleId, _GalleryId, _FolderId, _UserId, _PageNo, _PageSize) {
    jQuery('div#' + _ModuleId + '_MediaGallery').find('ul.medialist').html('').addClass("mg_ajaxloader");
    DNNCentric.JMediaGallery.MediaGalleryController.GetAllMediaInfo(_PortalId, _ModuleId, _GalleryId, _FolderId, _UserId, _PageNo, _PageSize, SucceededCallbackGetMediaList, FailedCallback);    
}

function SucceededCallbackGetMediaList(result, eventArgs)
{
    if ((result!=null))
    {
        ShowMediaList(result, thumbnailWidth, thumbnailHeight);
    }
    else    
    {
    }
    jQuery.noConflict();
    jQuery(document).ready(function()
    {
    });
}

function FailedCallback(error)
{
    alert("Failed: " +error._message.toString());
}

function SucceededCallbackWithContext(result, userContext, methodName)
{           
    if (userContext == "XmlDocument")
	{		    		
		GetWebServiceXMLResult(result);
	}
}

function WEBDeleteMedia(_PortalId, _ModuleId, _MediaId) {
    DNNCentric.JMediaGallery.MediaGalleryController.DeleteMedia(_PortalId, _ModuleId, _MediaId, SucceededCallbackModMedia, FailedCallback);
}

function WEBGetMedia(_PortalId, _ModuleId, _MediaId) {
    DNNCentric.JMediaGallery.MediaGalleryController.GetMediaInfo(_PortalId, _ModuleId, _MediaId, SucceededCallbackGetMedia, FailedCallback);
}

function SucceededCallbackGetMedia(result, eventArgs) {
    if ((result != null)) {
        jQuery.noConflict();
        jQuery(document).ready(function() {
            jQuery('#' + result.ModuleId + '_dialogEditMedia').find('#' + result.ModuleId + '_title').val(result.InfoMedia.MediaTitle);
            jQuery('#' + result.ModuleId + '_dialogEditMedia').find('#' + result.ModuleId + '_description').val(result.InfoMedia.MediaDescription);
        });
    }
}

function WEBSaveMedia(_PortalId, _ModuleId, _MediaId, _MediaTitle, _MediaDescription) {
    DNNCentric.JMediaGallery.MediaGalleryController.SaveMediaInfo(_PortalId, _ModuleId, _MediaId, _MediaTitle, _MediaDescription, SucceededCallbackModMedia, FailedCallback);
}

function SucceededCallbackModMedia(result, eventArgs) {
    if ((result != null)) {
        jQuery.noConflict();
        jQuery(document).ready(function() {
            WEBGetMediaList(result.PortalId, result.ModuleId, result.GalleryId, result.FolderId, iThisUserID,1,pageSize);
        });
    }
}


function ShowMediaList(mediaData, thmbnlWidth, thmbnlHeight) {
    jQuery.noConflict();
    jQuery(document).ready(function() {
        var strMediaItemList = "";
        var ULMedia = jQuery('div#' + mediaData.ModuleId + '_MediaGallery').find('ul.medialist');
        jQuery(ULMedia).removeClass("mg_ajaxloader");
        if (mediaData.AlMediaList.length > 0) {
            jQuery.each(mediaData.AlMediaList, function() {

                var objMedia = this;
                objMediaTemp = new Media(objMedia.MediaID, objMedia.MediaTitle, objMedia.MediaDescription, objMedia.MediaSrc, objMedia.FolderID, objMedia.MediaType, objMedia.MediaOriginalFileName, objMedia.SortOrder);
                objMediaItemTemp = new MediaItem(objMediaTemp, thmbnlWidth, thmbnlHeight, mediaData.ModuleId);
                strMediaItemList = strMediaItemList + objMediaItemTemp.getMediaItem();
            });
            jQuery(ULMedia).append(strMediaItemList);

            //if admin then attaching the jquery ui to it
            if (mediaData.ShowEdit) {
                //attaching the jqui sortable
                //jQuery('div#' + mediaData.ModuleId + '_MediaGallery').find("ul.medialist").sortable();
                jQuery('div#' + mediaData.ModuleId + '_MediaGallery').find("ul.medialist").disableSelection();
                //attaching the jqui dialogs for delete
                jQuery('#' + mediaData.ModuleId + '_dialogDeleteMedia').dialog({
                    autoOpen: false,
                    bgiframe: true,
                    resizable: false,
                    height: 150,
                    modal: true,
                    overlay: {
                        backgroundColor: '#000',
                        opacity: 0.8
                    },
                    buttons: {
                        'Delete Media': function() {
                            jQuery(this).dialog('close');
                            WEBDeleteMedia(mediaData.PortalId, mediaData.ModuleId, iMediaIdToMod);
                        },
                        Cancel: function() {
                            jQuery(this).dialog('close');
                        }
                    }
                });
                //attaching the jqui dialog for edit
                var title = jQuery('#' + mediaData.ModuleId + '_dialogEditMedia').find('#' + mediaData.ModuleId + '_title'),
			    description = jQuery('#' + mediaData.ModuleId + '_dialogEditMedia').find('#' + mediaData.ModuleId + '_description'),
			    allFields = jQuery([]).add(title).add(description),
			    tips = jQuery('#' + mediaData.ModuleId + '_dialogEditMedia').find('#' + mediaData.ModuleId + '_validateMediaTips');
                function updateTips(t) {
                    tips.text(t); //.effect("highlight", {}, 1500);
                }
                function checkLength(o, n, min, max) {
                    if (o.val().length > max || o.val().length < min) {
                        o.addClass('ui-state-error');
                        updateTips("Length of " + n + " must be between " + min + " and " + max + ".");
                        return false;
                    } else {
                        return true;
                    }
                }
                function checkRegexp(o, regexp, n) {
                    if (!(regexp.test(o.val()))) {
                        o.addClass('ui-state-error');
                        updateTips(n);
                        return false;
                    } else {
                        return true;
                    }
                }
                jQuery('#' + mediaData.ModuleId + '_dialogEditMedia').dialog({
                    autoOpen: false,
                    bgiframe: true,
                    height: 300,
                    modal: true,
					overlay: {
                        backgroundColor: '#000',
                        opacity: 0.8
                    },
                    buttons: {
                        'Save': function() {
                            var bValid = true;
                            allFields.removeClass('ui-state-error');
                            bValid = bValid && checkLength(title, "title", 1, 50);
                            if (bValid) {
                                WEBSaveMedia(mediaData.PortalId, mediaData.ModuleId, iMediaIdToMod, title.val(), description.val());
                                jQuery(this).dialog('close');
                            }
                        },
                        Cancel: function() {
                            jQuery(this).dialog('close');
                        }
                    },
                    close: function() {
                        allFields.val('').removeClass('ui-state-error');
                    }
                });
                jQuery('div#' + mediaData.ModuleId + '_MediaGallery').find("#dialogDeleteSuccess").dialog({
                    autoOpen: false,
                    bgiframe: true,
                    modal: true,
                    buttons: {
                        Ok: function() {
                            jQuery(this).dialog('close');
                        }
                    }
                });
            }
            else {
                jQuery('#' + mediaData.ModuleId + '_dialogEditMedia').hide();
                jQuery('#' + mediaData.ModuleId + '_dialogDeleteMedia').hide();
            }
            //attaching the prettyphoto to the media
            jQuery('div#' + mediaData.ModuleId + '_MediaGallery').find('.medialist a[rel^="prettyPhoto"]').prettyPhoto({
                animationSpeed: 'normal', /* fast/slow/normal */
                opacity: 0.80, /* Value between 0 and 1 */
                showTitle: true, /* true/false */
                allowresize: true, /* true/false */
                default_width: mediaData.PP_DefaultWidth,
                default_height: mediaData.PP_DefaultHeight,
                counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
                theme: 'light_rounded', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
                hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
                wmode: 'opaque', /* Set the flash wmode attribute */
                autoplay: true, /* Automatically start videos: True/False */
                modal: false /* If set to true, only the close button will close the window */
            });
            //jQuery('a[rel^="prettyPhoto"]').prettyPhoto();

            handlePaging(mediaData.ModuleId, mediaData.PageNo, mediaData.TotalPages, 0);
        }
        else {
            //nothign to show
            //show msg
            //hidepager
			jQuery(ULMedia).html("<span style=\"text-decoration:none; color:#000000;\">No Media Found!</span>");
            handlePaging(mediaData.ModuleId, mediaData.PageNo, mediaData.TotalPages,1);
        }

    });
	
}


function Media(mediaid, mediatitle, mediadescription, mediasource, folderid, mediatype, mediaoriginalfilename, sortorder) {
    this.id = mediaid;
    this.title = mediatitle;
    this.desc = mediadescription;
    this.src = mediasource;
    this.folder = folderid;
    this.type = mediatype;
    this.filename = mediaoriginalfilename;
    this.sortorder = sortorder;
}

function MediaItem(media, prmthmbnlWidth, prmthmbnlHeight, modId) {
    this.id = media.id;
    this.title = media.title;
    this.description= media.desc
    this.sortorder = media.sortorder;
    this.type = media.type;
    this.src = strMediaPath + media.src;
    this.path = 'Portals/' + iPortalId + '/' +media.src;
    var strMediaTemplate = "<img src=\"MTHUMB\" alt=\"MTITLE\"  width=\"" + prmthmbnlWidth + "px\" height=\"" + prmthmbnlHeight + "px\" >";
    this.getMediaItem = function() {
        var strMedia = "";
        if (this.type == "1") {
            strMedia = strMediaTemplate.replace(/MTHUMB/g, strModulePath + 'Thumbnail.ashx?image=' + this.path + '&size=' + prmthmbnlWidth).replace(/MTITLE/g, this.title);
            //strMedia = strMediaTemplate.replace(/MTHUMB/g, this.src).replace(/MTITLE/g, this.title);
        }
        else {
            if (this.type == "2") {
                strMedia = strMediaTemplate.replace(/MTHUMB/g, strModulePath + 'images/video-icon.jpg').replace(/MTITLE/g, this.title);
            }
        }
        var strfinalMedia = strTemplateMediaThumbNail;
        strfinalMedia = strfinalMedia.replace(/MID/g, this.id).replace(/MTITLE/g, this.title).replace(/MDESCRIPTION/g, this.description).replace(/MEDIA/g, strMedia).replace(/MSOURCE/g, this.src).replace(/MODID/g, modId);
        strfinalMedia = strfinalMedia.replace(/MLSTCLASS/g, 'ui-state-default')
        return strfinalMedia;
    }
}
	


function handlePaging(moduleId, thisPageNo, totalPages, hidePager) 
{
	
    idlbPrevText = jQuery('div#' + moduleId + '_MediaGallery').find('a#PrevText');    
    idlbPrevPrevPrevPrev = jQuery('div#' + moduleId + '_MediaGallery').find('a#PrevPrevPrevPrev');
    idlbPrevPrevPrev = jQuery('div#' + moduleId + '_MediaGallery').find('a#PrevPrevPrev');
	idlbPrevPrev=jQuery('div#' + moduleId + '_MediaGallery').find('a#PrevPrev');
	idlbPrev=jQuery('div#' + moduleId + '_MediaGallery').find('a#Prev');
	idlbCurrent=jQuery('div#' + moduleId + '_MediaGallery').find('span#Current');
	idlbNext=jQuery('div#' + moduleId + '_MediaGallery').find('a#Next');
	idlbNextNext = jQuery('div#' + moduleId + '_MediaGallery').find('a#NextNext');
	idlbNextNextNext = jQuery('div#' + moduleId + '_MediaGallery').find('a#NextNextNext');
	idlbNextNextNextNext = jQuery('div#' + moduleId + '_MediaGallery').find('a#NextNextNextNext');
	idlbNextText = jQuery('div#' + moduleId + '_MediaGallery').find('a#NextText');

	
	if(hidePager!=1)
	{
	    idlbCurrent.parents('div.mediapager').show();

	    if (((thisPageNo - 4) <= 0) || ((thisPageNo - 4) > totalPages)) {
			idlbPrevPrevPrevPrev.hide();
			idlbPrevPrevPrevPrev.parent('li').hide();
	    }
	    else {
	        idlbPrevPrevPrevPrev.show();
			idlbPrevPrevPrevPrev.parent('li').show();
	        idlbPrevPrevPrevPrev.html(thisPageNo - 4);
	        idlbPrevPrevPrevPrev.data("PageNo", thisPageNo - 4);
	        
	        
	    }

	    if (((thisPageNo - 3) <= 0) || ((thisPageNo - 3) > totalPages)) {
	        idlbPrevPrevPrev.hide();
			idlbPrevPrevPrev.parent('li').hide();
	    }
	    else {
	        idlbPrevPrevPrev.show();
			idlbPrevPrevPrev.parent('li').show();
	        idlbPrevPrevPrev.html(thisPageNo - 3);
	        idlbPrevPrevPrev.data("PageNo", thisPageNo -3);

	    }
	    
	    if(((thisPageNo - 2)<=0)|| ((thisPageNo - 2) > totalPages))
	    {
		    idlbPrevPrev.hide();
			idlbPrevPrev.parent('li').hide();
			
	    }
	    else
	    {
		    idlbPrevPrev.show();
			idlbPrevPrev.parent('li').show();
			idlbPrevPrev.html(thisPageNo - 2);
		    idlbPrevPrev.data("PageNo", thisPageNo - 2);

    		
	    }
    	
	    if (((thisPageNo - 1) <= 0 )|| ((thisPageNo - 1) > totalPages))
	    {
	        idlbPrev.hide();
			idlbPrev.parent('li').hide();
			idlbPrevText.hide();
			idlbPrevText.parent('li').hide();
	    }
	    else
	    {
	        idlbPrev.show();
			idlbPrev.parent('li').show();
			idlbPrevText.show();
			idlbPrevText.parent('li').show();
		    idlbPrev.html(thisPageNo - 1);
		    idlbPrev.data("PageNo", thisPageNo - 1);
    		
	    }
    			
	    if ((thisPageNo <= 0) || (thisPageNo > totalPages))
	    {
		    idlbCurrent.hide();
			idlbCurrent.parent('li').hide();
	    }
	    else
	    {
		    idlbCurrent.show();
			idlbCurrent.parent('li').show();
		    idlbCurrent.html(thisPageNo);
		    idlbCurrent.data("PageNo", thisPageNo);

	    }

	    if ((thisPageNo + 1) <= 0 || (thisPageNo + 1) > totalPages)
	    {
	        idlbNext.hide();
			idlbNext.parent('li').hide();
			
	        idlbNextText.hide();
			idlbNextText.parent('li').hide();
			
	    }
	    else
	    {
	        idlbNext.show();
			idlbNext.parent('li').show();
			
	        idlbNextText.show();
			idlbNextText.parent('li').show();
			
		    idlbNext.html(thisPageNo + 1);
		    idlbNext.data("PageNo", thisPageNo + 1);
    		
	    }



	    if (((thisPageNo + 2) <= 0) || ((thisPageNo + 2) > totalPages))
	    {
		    idlbNextNext.hide();
			idlbNextNext.parent('li').hide();
			
	    }
	    else
	    {
		    idlbNextNext.show();
			idlbNextNext.parent('li').show();
			
		    idlbNextNext.html(thisPageNo + 2);
		    idlbNextNext.data("PageNo", thisPageNo + 2);
		}

		if (((thisPageNo + 3) <= 0) || ((thisPageNo + 3) > totalPages)) {
		    idlbNextNextNext.hide();
			idlbNextNextNext.parent('li').hide();
			
		}
		else {
		    idlbNextNextNext.show();
			idlbNextNextNext.parent('li').show();
			
		    idlbNextNextNext.html(thisPageNo + 3);
		    idlbNextNextNext.data("PageNo", thisPageNo + 3);
		}

		if (((thisPageNo + 4) <= 0) || ((thisPageNo + 4) > totalPages)) {
		    idlbNextNextNextNext.hide();
			idlbNextNextNextNext.parent('li').hide();
			
		}
		else {
		    idlbNextNextNextNext.show();
			idlbNextNextNextNext.parent('li').show();
			
		    idlbNextNextNextNext.html(thisPageNo + 4);
		    idlbNextNextNextNext.data("PageNo", thisPageNo + 4);
		}

		idlbPrevText.data("PageNo", thisPageNo - 1);
		idlbNextText.data("PageNo", thisPageNo + 1);
	}
	else
	{
	     idlbCurrent.parents('div.mediapager').hide();
		 

	}
}


//every external Javascript file that is being referenced from ScriptManager must have a call to Sys.Application.
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();