HEX
Server: LiteSpeed
System: Linux server257.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: salhiscp (12590)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /home/salhiscp/salhab360photos.com/wp-content/plugins/fwdsisc/js/playlist_manager.js
/**
 * Galleries manager.
 *
 * @package fwdsisc
 * @since fwdsisc 1.0
 */
 
jQuery(document).ready(function($){

	'use strict';

	// Get data array.
	fwdsiscMainPlaylistsAr = unescapeHtml(fwdsiscMainPlaylistsAr);
  	if(fwdsiscMainPlaylistsAr == 'null'){
		fwdsiscMainPlaylistsAr = []
	}else{
		fwdsiscMainPlaylistsAr = JSON.parse(fwdsiscMainPlaylistsAr);
	}
  	if(!fwdsiscMainPlaylistsAr) fwdsiscMainPlaylistsAr = [];
  

	// Initialize sortable and accordion.
	$("#main_playlists").accordion({
		header: ".playlist-header",
		collapsible: true,
		heightStyle: "content",
		active: false
	}).sortable({
		axis: "x,y",
		handle: ".playlist-header-sort",
		start: startPlaylistsOrder,
		update: updatePlaylistsOrder
	});       
	
	$(".pls").accordion({
		header: ".playlist-header",
    	collapsible: true,
    	heightStyle: "content",
    	active: false
    }).sortable({
        axis: "x,y",
        handle: ".playlist-header-sort",
        start: startPlaylistsOrder,
        update: updatePlaylistsOrder
    });
	
	$(".fwd-playlist").mouseover(function(){
		$(this).addClass("pl_over");
		$(this).find(".pl-header").css("color", "#212121");
	});
	
	$(".fwd-playlist").mouseout(function(){
		$(this).removeClass("pl_over");
		$(this).find(".pl-header").css("color", "#555555");
	});
	
	var newimageOrderId;
	var imgPath = fwdsiscIconsPath + "normal-icon.png";
	var img = "<img src='" + imgPath + "' class='galleries-icon'>";
	
	$(".playlist > h3").prepend(img);
	
	$(".images").sortable({
        axis: "x,y",
        handle: ".image-header",
        start: startimageesOrder,
        update: updateimageesOrder
    });

	$(".fwd-image").mouseover(function(){
		$(this).addClass("image_over");
		$(this).find(".image-header").css("color", "#212121");
	});
	
	$(".fwd-image").mouseout(function(){
		$(this).removeClass("image_over");
		$(this).find(".image-header").css("color", "#555555");
	});
	
	if ($("#main_playlists .playlist-count").length > 0){
		$("#mp_em").hide();
	}
	
	$("img").fwdTooltip({});
	
	function startPlaylistsOrder(ev, ui){
		var allMpimages = $(this).sortable("toArray");	
		curPlOrderId = allMpimages.indexOf($(ui.item).attr("id"));
	}
	
	function updatePlaylistsOrder(ev, ui){
		var allMpimages = $(this).sortable("toArray");
   		newPlOrderId = allMpimages.indexOf($(ui.item).attr("id"));
   		
   		var curimage = fwdsiscMainPlaylistsAr.splice(curPlOrderId, 1)[0];
   	    fwdsiscMainPlaylistsAr.splice(newPlOrderId, 0, curimage);
	};
	
	function startimageesOrder(ev, ui){
		var allimageimages = $(this).sortable("toArray");
		curimageOrderId = allimageimages.indexOf($(ui.item).attr("id"));
	}
	
	function updateimageesOrder(ev, ui){
		var allimageimages = $(this).sortable("toArray");
		
   		newimageOrderId = allimageimages.indexOf($(ui.item).attr("id"));
   		var allPlimages = $("#main_playlists").sortable("toArray");
   		var plParent = $(this).closest(".playlist");
   		curPlOrderId = allPlimages.indexOf($(plParent).attr("id"));
		
   		var curimage = fwdsiscMainPlaylistsAr[curPlOrderId].images.splice(curimageOrderId, 1)[0];
		fwdsiscMainPlaylistsAr[curPlOrderId].images.splice(newimageOrderId, 0, curimage);
	}
	
 
	// Galleries dialogs.
	$("#add_main_playlist_btn").click(function(e){
		e.preventDefault();
        $("#add-playlist-dialog").dialog("open");
    });
	
	var curPlOrderId;
	var newPlOrderId;
	var cur_pl_id;
	var curImageWidth;
	var curImageHeight;
	var cur_image_id;
	var curimageOrderId;
	var pl_source = $("#pl_source");
    var pl_type = $("#pl_type");
	var allFieldsPl = $([]).add(pl_source)
	var pl_source_edit = $("#pl_source_edit");
    var pl_type_edit = $("#pl_type_edit");
	var pl_source_edit = $("#pl_source_edit");
	var allFieldsPlEdit = $([]).add(pl_source_edit)
	
	$("#add-playlist-dialog").dialog({
		autoOpen: false,
		width: 380,
	    height: 210,
	    dialogClass:"fwdsisc",
	    modal: true,
	    buttons:[{
	        text:fwdsicAddGallery__,
	        click: function(){
	         	
				var fValid = true;
	         	var tips = $("#add_pl_tips");
	         	
	          	allFieldsPl.removeClass("ui-state-error");
				fValid = fValid && checkLength(tips, pl_source, "gallery name", 1, 64);
				
				if (fValid){
					
					var pid = $("#main_playlists .playlist-count").length;
	          		var plsIdsAr = [];
	          		
	          		if (pid > 0){
	          			$.each(fwdsiscMainPlaylistsAr, function(i, el){
							plsIdsAr.push(el.id);
						});
    	          		for (var i=0; i<fwdsiscMainPlaylistsAr.length; i++){
    	          			if($.inArray(i, plsIdsAr) == -1){
    	          				pid = i;
    	          				break;
    	          			}
    	          		}
	          		}else{
	          			$("#mp_em").hide();
	          		}
					
	          		
					$("#main_playlists").append("<div id='pl" + pid + "' class='playlist playlist-count'>"
						+ "<h3 class='playlist-header-sort playlist-header'><span class='gallery-name'>" + pl_source.val().replace(/"/g, "'") + "</span></h3>"
						+ "<div>"
						+ "<div id='pl" + pid + "_images' class='images'></div>"
						+ "<button class='add_image_btn' id='pl" + pid + "_btn' >" + fwdsicAddImage__ + "</button>"
						+ "<button class='add_bulk_btn' id='pl" + pid + "_bulk_btn'>" + fwdsicAddBulkImages__ + "</button>"
						+ "<button class='edit_playlist_btn' id='pl" + pid + "_edit_btn'>" + fwdsicEditGallery__ + "</button>"
						+ "<button class='delete_playlist_btn' id='pl" + pid + "_del_btn'>" + fwdsicDeleteGallery__ + "</button>"
						+ "</div>"
					+ "</div>");
					
					var imgPath = fwdsiscIconsPath + "normal-icon.png";
					var img = "<img src='" + imgPath + "' class='galleries-icon'>";
					
					$("#pl" + pid + " > h3").prepend(img);
				
					$(".add_image_btn").click(function(e){
						var reg_exp = /pl[0-9]+_/;
						
						cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
						
						$("#add-image-dialog").dialog("open");
						return false;
					});
					
					$(".add_bulk_btn").click(function(e){
						var reg_exp = /pl[0-9]+_/;
					
						cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
						openBulkUploader(e, cur_pl_id);
						return false;
					});
					
					$(".edit_playlist_btn, .edit_playlist_btn2").click(function(e){
					e.preventDefault();
				
					var reg_exp1 = /pl[0-9]+_/;
				
					cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
					
					var allMpimages = $("#main_playlists").sortable("toArray");
					curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
					
					$("#edit-playlist-dialog").dialog("open");
				});
				
				$(".delete_playlist_btn, .delete_playlist_btn2").click(function(e){
					e.preventDefault();
				
					var reg_exp = /pl[0-9]+_/;
					cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
					
					$("#delete-playlist-dialog").dialog("open");
				});
				
				$("#pl" + pid + "_images").sortable({
					axis: "x,y",
					handle: ".image-header",
					start: startimageesOrder,
					update: updateimageesOrder
				});

				$("#main_playlists").sortable("refresh");
				$("#main_playlists").accordion("refresh");
				
				var newPl ={
					id:pid,
					name: pl_source.val().replace(/"/g, "'"),
					pl_source: pl_source.val().length > 0 ? pl_source.val().replace(/"/g, "'") : undefined,
					pl_type: $("#pl_type").val(),
					images: []
				};
	
				fwdsiscMainPlaylistsAr.push(newPl);
				
				$(this).dialog("close");
				}
	         	 
	        }},
	        {
	        text: fwdsiscCancel__,
	        click: function() {
	        	$(this).dialog("close");
	        }}
	    ],
	    close: function(){
		    allFieldsPl.removeClass("ui-state-error");  
		    $("#add_pl_tips").removeClass("fwd-error");
	    },
	    open: function(){
	    	$("#pl_source").val("");
			$("#pl_type").val("normal");
			$("#pl_source").val("");
			$("#pl_source_div").hide();
	    	$("#add_pl_tips").text("The gallery name is required.");
	    	$('.ui-widget-overlay').addClass('fwdsisc');
		}
	});
	
	$(".add_playlist_btn").click(function(e){
		e.preventDefault();
		var reg_exp = /mp[0-9]+_/;
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
        $("#add-playlist-dialog").dialog("open");
    });
    
	$("#edit-playlist-dialog").dialog({
		autoOpen: false,
		width: 380,
	    height: 210,
	    dialogClass:"fwdsisc",
	    modal: true,
	    buttons:[{
	    	text: fwdsiscUpdateGallery__,
	        click: function(){
				var fValid = true;
				var tips = $("#pl_tips_edit");
				
				allFieldsPlEdit.removeClass("ui-state-error");
				fValid = fValid && checkLength(tips, pl_source_edit, "gallery name", 1, 64);
				
				if (fValid){
					var content = $("#pl_source_edit").val();
	          		$("#pl" + cur_pl_id + " .gallery-name").html(content.replace(/"/g, "'"));
					
					fwdsiscMainPlaylistsAr[curPlOrderId].name = pl_source_edit.val().replace(/"/g, "'");
					fwdsiscMainPlaylistsAr[curPlOrderId].pl_source = pl_source_edit.val().replace(/"/g, "'");
					
					$(this).dialog("close");
				}		
	        }},
	        {
	        text: fwdsiscCancel__,
	        click: function(){
	        	$(this).dialog("close");
	        }}
	    ],
	    close: function(){
		    allFieldsPlEdit.removeClass("ui-state-error");
		    $("#pl_tips_edit").removeClass("fwd-error");
	    },
	    open: function(){
			$("#pl_tips_edit").text("The gallery name is required:");
			$("#pl_source_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].name);
			$("#pl_source_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].pl_source);
			$("#pl_type_edit").prop("disabled", false);
			$("#pl_type_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].pl_type);
			$("#pl_type_edit").prop("disabled", true);
			$("#source_help_img_edit").prop("title", "The gallery name.");
			$('.ui-widget-overlay').addClass('fwdsisc');
		}		
	});
	
	$(".edit_playlist_btn, .edit_playlist_btn2").click(function(e){
		e.preventDefault();
		var reg_exp1 = /pl[0-9]+_/;
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
		var allMpimages = $("#main_playlists").sortable("toArray");
		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
		$("#edit-playlist-dialog").dialog("open");
	});
	
	$("#delete-playlist-dialog").dialog({
		autoOpen: false,
		width: 300,
	    height: 160,
	    dialogClass:"fwdsisc",
	    modal: true,
	    buttons:[{
	    	text: fwdsiscYes__,
	        click: function(){
	            var allMpimages = $("#main_playlists").sortable("toArray");
	       		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
	            
	       		fwdsiscMainPlaylistsAr.splice(curPlOrderId, 1);
	       		
	       		$("#pl" + cur_pl_id).remove();
	       		$(".main_playlists").accordion("option", "active", false);

	       		$(".main_playlists").sortable("refresh");
	            $(".main_playlists").accordion("refresh");
				
				if ($("#main_playlists .playlist-count").length == 0){
	            	$("#mp_em").show();
	            }
	            $(this).dialog("close");
	        }},
	        {
	       	text: fwdsiscNo__,
	        click: function(){
	        	$(this).dialog("close");
	        }}
	    ],
	    open: function(){
	    	$('.ui-widget-overlay').addClass('fwdsisc');
	    }
	});

	$(".delete_playlist_btn, .delete_playlist_btn2").click(function(e){
		e.preventDefault();
	
		var reg_exp = /pl[0-9]+_/;
		
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
	
		$("#delete-playlist-dialog").dialog("open");
	});
	
	
	// Image dialogs
	var image_name = $("#image_name");
    var image_source = $("#image_source");
    var image_thumb = $("#image_thumb");
	var video_poster_source = $("#video_poster_source");
	var image_max_width = $("#image_max_width");
	var image_max_height = $("#image_max_height");
	var showAds = false;
	var allFieldsimage = $([]).add(image_name).add(image_source);

	$("#add-image-dialog").dialog({
		autoOpen: false,
		width: 640,
	    height: 720,
	    dialogClass:"fwdsisc",
	    modal: true,
	    buttons:[{
	    	text: fwdsicAddImage__,
	        click: function() {
	         	var fValid = true;
	         	var tips = $("#add_image_tips");
	         	
	          	allFieldsimage.removeClass("ui-state-error");
	          	fValid = fValid && checkLength(tips, image_name, "image name", 1, 64);
	       		fValid = fValid && checkLength(tips, image_source, "image source", 1, 256);
			
	          	if (fValid){
	          		var imageId = $("#pl" + cur_pl_id + "_images .fwd-image").length;

	          		var imagesIdsAr = [];
	          		
	          		var allMpimages = $("#main_playlists").sortable("toArray");
		       		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
		            
	          		$.each($("#pl" + cur_pl_id + "_images .fwd-image"), function(i, el){
	          			var reg_exp = /image[0-9]+/;
            			var image_id = parseInt($(el).attr("id").match(reg_exp)[0].slice(5));
            			imagesIdsAr.push(image_id);
      				});
					
	          		for (var i=0; i<fwdsiscMainPlaylistsAr[curPlOrderId].images.length; i++){
						if ($.inArray(i, imagesIdsAr) == -1){
	          				imageId = i;
	          				break;
	          			}
	          		}
					var source = image_source.val().replace(/"/g, "'");
					
					$("#pl" + cur_pl_id +  "_images").prepend("<div id='pl" + cur_pl_id + "_image" + imageId + "' class='fwd-image'>"
						+ "<h3 class='image-header'>" + image_name.val().replace(/"/g, "'") + "</h3>"
						+ "<img src='" + source + "' class='fwd-image-playlist-img' id='pl" + cur_pl_id + "_image" + imageId + "_img'></img>"
						+ "<button class='delete_image_btn' id='pl" + cur_pl_id + "_image" + imageId + "_del_btn'>" + fwdsicDeleteImage__ + "</button>"
						+ "<button class='edit_image_btn' id='pl" + cur_pl_id +  "_image" + imageId + "_edit_btn'>" + fwdsicEditImage__ + "</button>"
					+ "</div>");
	          		
	          		$(".edit_image_btn").click(function(e){
						e.preventDefault();
				
      					var reg_exp1 = /pl[0-9]+_/;
      					var reg_exp2 = /image[0-9]+_/;
      					
      					cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
      					cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
						
      					var allMpimages = $("#main_playlists").sortable("toArray");
      			   		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
      			        
      			   		var allimageimages = $("#pl" + cur_pl_id + "_images").sortable("toArray");
      			   		curimageOrderId = allimageimages.indexOf("pl" + cur_pl_id + "_image" + cur_image_id);

      			        $("#edit-image-dialog").dialog("open");
      			    });
	          		
	          		$(".delete_image_btn").click(function(e){
						e.preventDefault();
					
      					var reg_exp1 = /pl[0-9]+_/;
      					var reg_exp2 = /image[0-9]+_/;
      					
      					cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
      					cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
      					
      			        $("#delete-image-dialog").dialog("open");
      			    });

		            $(".images").sortable("refresh");
		            
		            $(".fwd-image").mouseover(function(){
            			$(this).addClass("image_over");
            			$(this).find(".image-header").css("color", "#212121");
            		});
            		
            		$(".fwd-image").mouseout(function(){
            			$(this).removeClass("image_over");
            			$(this).find(".image-header").css("color", "#555555");
            		});
		            
					
		            var newimage ={
		            	name: image_name.val().replace(/"/g, "'"),
		            	source: image_source.val().replace(/"/g, "'"),
						width:curImageWidth,
						height:curImageHeight,
						link:$("#image_link").val().replace(/"/g, "'"),
						target:$("#image_target").val().replace(/"/g, "'"),
						text_vertical_alignment:$("#text_vertical_alignment").val().replace(/"/g, "'"),
						video_source:$("#video_source").val().replace(/"/g, "'"),
						video_password:$("#video_password").val().replace(/"/g, "'"),
						vast:$("#vast").val().replace(/"/g, "'"),
						subtitle_source:$("#subtitle_source").val().replace(/"/g, "'"),
						is360:$("#is360").val(),
						show360VrButton:$("#show360VrButton").val(),
						video_thumbnails:$("#video_thumbnails").val().replace(/"/g, "'"),
						dsecription: getimageDescription().replace(/"/g, "'"),
		            };
		            
		            fwdsiscMainPlaylistsAr[curPlOrderId].images.unshift(newimage);

		            $(this).dialog("close");
	         	}else{
	          		$("#add-image-dialog").scrollTop(0);
	          	}
	        }},
	        {
	       	text: fwdsiscCancel__,
	        click: function(){
	        	curImageWidth = curImageHeight = undefined;
	        	$(this).dialog("close");
	        }}
	    ],
	    close: function(){
		    allFieldsimage.removeClass("ui-state-error");
		    $("#add_image_tips").removeClass("fwd-error");
	    },
	    open: function(){
			var allMpimages = $("#main_playlists").sortable("toArray");
       		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
			
	    	$("#image_name").val("");
	    	$("#image_source").val("");
	    	$("#text_vertical_alignment").val("bottom");
	    	$("#image_link").val("");
	    	$("#image_target").val("_blank");
	    	$("#video_source").val("");
	    	$("#video_password").val("");
	    	$("#vast").val("");
	    	$("#subtitle_source").val("");
	    	$("#video_thumbnails").val("no");
	    	$("#is360").val("no");
	    	$("#show360VrButton").val("no");
		    setimageDescription("");
			$("#thumb_source").attr("src", "");
			$("#upload_thumb").attr("src", "");
		    $("#wp-imagedescription-wrap").attr("style", "margin-top:-30px;");
		    $("#imagedescription-html").html("HTML");
		    $("#add_image_tips").text("The image name and source path fields are required.");
		    $('.ui-widget-overlay').addClass('fwdsisc');
		}
	});

	function setimageDescription(str){
		if (typeof tinyMCE !== "undefined" && tinyMCE.get("imagedescription")){
			tinyMCE.get("imagedescription").setContent(str);
		}
	    
	    $("#imagedescription").val(str);
	}
	
	function getimageDescription(){
		var image_description;
		
		if (typeof tinyMCE !== "undefined" && tinyMCE.get("imagedescription")){
			if ($("#wp-imagedescription-wrap").hasClass("tmce-active")){
				image_description = tinyMCE.get("imagedescription").getContent();
				
				if (image_description.length < 1){
					image_description = $("#imagedescription").val();
				}
			}else{
				image_description = $("#imagedescription").val();
			}
	    }else{
			image_description = $("#imagedescription").val();
		}

        return image_description.replace(/"/g, "'").replace(/\n/g, "");
	}
	

	$(".add_image_btn").click(function(e){
		e.preventDefault();
		
		var reg_exp = /pl[0-9]+_/;
		
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
		
        $("#add-image-dialog").dialog("open");
    });
	
	$(".add_bulk_btn").click(function(e){
		var reg_exp = /pl[0-9]+_/;
	
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp)[0].slice(2, -1));
		openBulkUploader(e, cur_pl_id);
		return false;
	});
	

	// Edit image dialog.
	var image_name_edit = $("#image_name_edit");
    var image_source_edit = $("#image_source_edit");
    var image_thumb_edit = $("#image_thumb_edit");
	var showAdsEdit = false;
    var allFieldsimageEdit = $([]).add(image_name_edit).add(image_source_edit);

	$("#edit-image-dialog").dialog({
		autoOpen: false,
		width: 640,
	    height: 720,
	    modal: true,
	    dialogClass:"fwdsisc",
	    buttons:[{
	    	text: fwdsicUpdateImage__,
	        click: function(){
	         	var fValid = true;
	         	var tips = $("#edit_image_tips");
	         	
	          	allFieldsimageEdit.removeClass("ui-state-error");
				
				fValid = fValid && checkLength(tips, image_name_edit, "image name", 1, 64);
				//fValid = fValid && checkLength(tips, image_thumb_edit, "image thumbnail", 1, 256);
	       		fValid = fValid && checkLength(tips, image_source_edit, "image source", 1, 256);
				
				
	          	if (fValid){
	          		var content = $("#pl" + cur_pl_id + "_image" + cur_image_id + " > h3").html();
			
	          		var pos = content.indexOf(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].name);
	          		
	          		content = content.slice(0, pos);
	          		
	          		$("#pl" + cur_pl_id + "_image" + cur_image_id + " > h3").html(content + image_name_edit.val().replace(/"/g, "'"));
	          		
	          		if(curImageWidth && curImageWidth){
	          			fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].width = curImageWidth;
	          			fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].height = curImageHeight;
	          		}
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].name = image_name_edit.val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].source = image_source_edit.val().replace(/"/g, "'");
					fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].link = $("#image_link_edit").val().replace(/"/g, "'");
					fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].target = $("#image_target_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].dsecription = getimageDescriptionEdit();
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_source = $("#video_source_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_password = $("#video_password_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].vast = $("#vast_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].is360 = $("#is360Edit").val();
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].show360VrButton = $("#show360VrButtonEdit").val();
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].subtitle_source = $("#subtitle_source_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].subtitle_source = $("#subtitle_source_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_thumbnails = $("#video_thumbnails_edit").val().replace(/"/g, "'");
	          		fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].text_vertical_alignment = $("#text_vertical_alignment_edit").val().replace(/"/g, "'");

					var parent  = document.getElementById("pl" + cur_pl_id + "_image" + cur_image_id);
					var child = document.getElementById("pl" + cur_pl_id + "_image" + cur_image_id + "_img");
					
					if($.contains(parent,child)){
						$("#pl" + cur_pl_id + "_image" + cur_image_id + "_img").attr("src", image_source_edit.val().replace(/"/g, "'"));
					}else{
						$("#pl" + cur_pl_id + "_image" + cur_image_id).append("<img src='" + image_source_edit.val() + "' id='pl" + cur_pl_id + "_image" + cur_image_id + "_img' class='fwd-image-playlist-img'></img>")
						$("#pl" + cur_pl_id + "_image" + cur_image_id + "_img").attr("src", image_source_edit.val().replace(/"/g, "'"));
					}
					
		            $(this).dialog("close");
	         	}else{
	          		$("#edit-image-dialog").scrollTop(0);
	          	}
	        }},
	        {
	        text: fwdsiscCancel__,
	        click: function(){
	        	curImageWidth = curImageHeight = undefined;
	        	$(this).dialog("close");
	        }}
	    ],
	    close: function(){
		    allFieldsimageEdit.removeClass("ui-state-error");
		    $("#edit_image_tips").removeClass("fwd-error");
	    },
	    open: function(){
		
	    	$("#image_name_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].name);
	    	$("#image_thumb_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].thumb);
			$("#image_source_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].source);
			$("#thumb_source_edit").attr("src", fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].source);
			$("#image_link_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].link);
			$("#text_vertical_alignment_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].text_vertical_alignment);
	    	$("#video_source_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_source);
	    	$("#video_password_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_password);
	    	$("#vast_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].vast);
	    	$("#subtitle_source_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].subtitle_source);
	    	$("#video_thumbnails_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].video_thumbnails);
				
			if(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].target ==  undefined){
				$("#image_target_edit").val("_blank");
			}else{
				$("#image_target_edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].target);
			}

			if(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].is360 == undefined){
				$("#is360Edit").val("no");
			}else{
				$("#is360Edit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].is360);
			}

			if(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].show360VrButton ==  undefined){
				$("#show360VrButtonEdit").val("no");
			}else{
				$("#show360VrButtonEdit").val(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].show360VrButton);
			}
			
		    setimageDescriptionEdit(fwdsiscMainPlaylistsAr[curPlOrderId].images[curimageOrderId].dsecription);
			
			showAdsEdit = false;
			
		    $("#wp-imagedescriptionedit-wrap").attr("style", "margin-top:-30px;");
		    $("#imagedescriptionedit-html").html("HTML");
			
			$("#wp-imagedecrpedit-wrap").attr("style", "margin-top:-30px;");
		    $("#imagedecrpedit-html").html("HTML");
		    
		    var allMpimages = $("#main_playlists").sortable("toArray");
       		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
		    
		    $("#edit_image_tips").text("The image name and source path fields are required.");
       		
       		$("#imagedescriptionedit_ifr").height(181);
       		$("#imagedecrpedit_ifr").height(181);
       		$('.ui-widget-overlay').addClass('fwdsisc');
		}
	});
	

	// Set and get caption.
	function setimageDescriptionEdit(str){
		if (typeof tinyMCE !== "undefined" && tinyMCE.get("imagedescriptionedit")){
	    	tinyMCE.get("imagedescriptionedit").setContent(str);
	    }
	    
	    $("#imagedescriptionedit").val(str);
	}
	
	function getimageDescriptionEdit(){
		var image_description_edit;
		
		if (typeof tinyMCE !== "undefined" && tinyMCE.get("imagedescriptionedit")){
			if ($("#wp-imagedescriptionedit-wrap").hasClass("tmce-active")){
				image_description_edit = tinyMCE.get("imagedescriptionedit").getContent();
				
				if (image_description_edit.length < 1){
					image_description_edit = $("#imagedescriptionedit").val();
				}
			}else{
				image_description_edit = $("#imagedescriptionedit").val();
			}
	    }else{
			image_description_edit = $("#imagedescriptionedit").val();
		}
		
		

        return image_description_edit.replace(/"/g, "'").replace(/\n/g, "");
	}
	
	$(".edit_image_btn").click(function(e){
		e.preventDefault();
				
		var reg_exp1 = /pl[0-9]+_/;
		var reg_exp2 = /image[0-9]+_/;
		
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
		cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
		
		var allMpimages = $("#main_playlists").sortable("toArray");
		curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
		
		var allimageimages = $("#pl" + cur_pl_id + "_images").sortable("toArray");
		curimageOrderId = allimageimages.indexOf("pl" + cur_pl_id + "_image" + cur_image_id);
		
        $("#edit-image-dialog").dialog("open");
    });
	

	// Delete image dialog.
	$("#delete-image-dialog").dialog({
		autoOpen: false,
		width: 300,
	    height: 160,
	    dialogClass:"fwdsisc",
	    modal: true,
	    buttons:[{
	    	text: fwdsiscYes__,
	        click: function(){
				var allPlimages = $("#main_playlists").sortable("toArray");
		   		curPlOrderId = allPlimages.indexOf("pl" + cur_pl_id);
		       
		   		var allimageimages = $("#pl" + cur_pl_id + "_images").sortable("toArray");
		   		curimageOrderId = allimageimages.indexOf("pl" + cur_pl_id + "_image" + cur_image_id);
		   		
		   		fwdsiscMainPlaylistsAr[curPlOrderId].images.splice(curimageOrderId, 1);
		   		
		   		$("#pl" + cur_pl_id  + "_image" + cur_image_id).remove();
			
		   		$(".images").sortable("refresh");
			
		        $(this).dialog("close");
	        }},
	        {
	       	text: fwdsiscNo__,
	        click: function(){
	        	$(this).dialog("close");
	        }}
	    ],
	    open: function(){
	    	$('.ui-widget-overlay').addClass('fwdsisc');
	    }
	});
	
	$(".delete_image_btn").click(function(e){
		e.preventDefault();
	
		var reg_exp1 = /pl[0-9]+_/;
		var reg_exp2 = /image[0-9]+_/;
		
		cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
		cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
		
        $("#delete-image-dialog").dialog("open");
    });
	

	// Upload image thumb.
	var custom_uploader4;
	var curScroll4;
    
    $("#upload_thumb_button").click(function(e) {
        e.preventDefault();
		
		curScroll = $("#add-image-dialog").scrollTop();
 
        // If the uploader object has already been created, reopen the dialog.
        if (custom_uploader4){
            custom_uploader4.open();
            return;
        }
        
        // Extend the wp.media object.
        custom_uploader4 = wp.media.frames.file_frame = wp.media({
            title: fwdsicChooseImage__,
            button:
            {
                text: fwdsicAddImage__
            },
            multiple: false
        });
 
        // When a file is selected, grab the URL and set it as the text field's value.
        custom_uploader4.on("select", function(){
            var attachment = custom_uploader4.state().get("selection").first().toJSON();
            
            $("#image_thumb").val(attachment.url);
			$("#upload_thumb").attr("src", attachment.url);
        });
 
        // Open the uploader dialog.
        custom_uploader4.open();
		
		custom_uploader4.on("close", function(){
            $("#add-image-dialog").scrollTop(curScroll);
        });
    });
	
	// Image video poster upload.
	var custom_uploader7;
	var curScroll7;
    
    $("#video_poster_upload_button").click(function(e) {
        e.preventDefault();
		
		curScroll7 = $("#add-image-dialog").scrollTop();
 
        // If the uploader object has already been created, reopen the dialog.
        if (custom_uploader7){
            custom_uploader7.open();
            return;
        }
        
        // Extend the wp.media object.
        custom_uploader7 = wp.media.frames.file_frame = wp.media({
            title: fwdsicChooseImage__,
            button:
            {
                text: fwdsicAddImage__
            },library:
            {
            	type: "image"
            },
            multiple: false
        });
 
        // When a file is selected, grab the URL and set it as the text field's value.
        custom_uploader7.on("select", function(){
            var attachment = custom_uploader7.state().get("selection").first().toJSON();
            
            $("#video_poster_source").val(attachment.url);
			$("#video_poster_thumb").attr("src", attachment.url);
        });
 
        // Open the uploader dialog.
        custom_uploader7.open();
		
		custom_uploader7.on("close", function(){
            $("#add-image-dialog").scrollTop(curScroll7);
        });
    });
	
	// Image video poster upload edit.
	var custom_uploader8;
	var curScroll8;
    
    $("#video_poster_upload_button_edit").click(function(e) {
        e.preventDefault();
		
		curScroll8 = $("#add-image-dialog-edit").scrollTop();
 
        // If the uploader object has already been created, reopen the dialog.
        if (custom_uploader8){
            custom_uploader8.open();
            return;
        }
        
        // Extend the wp.media object.
        custom_uploader8 = wp.media.frames.file_frame = wp.media({
            title: fwdsicChooseImage__,
            button:
            {
                text: fwdsicAddImage__
            },library:
            {
            	type: "image"
            },
            multiple: false
        });
 
        // When a file is selected, grab the URL and set it as the text field's value
        custom_uploader8.on("select", function(){
            var attachment = custom_uploader8.state().get("selection").first().toJSON();
            
            $("#video_poster_source_edit").val(attachment.url);
			$("#video_poster_thumb_edit").attr("src", attachment.url);
        });
 
        // Open the uploader dialog.
        custom_uploader8.open();
		
		custom_uploader8.on("close", function(){
            $("#add-image-dialog-edit").scrollTop(curScroll8);
        });
    });
	

	// Image custom uploader.
	var custom_uploader;
	var curScroll;
	var btnTarget;
    
    $("#upload_image_source_button, #upload_image_source_button_edit").click(function(e) {
        e.preventDefault();
        btnTarget = e.target.id;
		
		curScroll = $("#add-image-dialog").scrollTop();
 
        // If the uploader object has already been created, reopen the dialog.
        if (custom_uploader){
            custom_uploader.open();
            return;
        }
        
        // Extend the wp.media object.
        custom_uploader = wp.media.frames.file_frame = wp.media({
            title: fwdsicChooseImage__,
            button:
            {
                text: fwdsicAddImage__
            },library:
            {
            	type: "image"
            },
            multiple: false
        });
 
        // When a file is selected, grab the URL and set it as the text field's value.
        custom_uploader.on("select", function(){
            var attachment = custom_uploader.state().get("selection").first().toJSON();
			curImageWidth = attachment.width;
			curImageHeight = attachment.height;
			
			if(btnTarget == "upload_image_source_button"){	
            	$("#image_source").val(attachment.url);
				$("#thumb_source").attr("src", attachment.url);
			}else{
				$("#image_source_edit").val(attachment.url);
				$("#thumb_source_edit").attr("src", attachment.url);
			}
			
        });
 
        // Open the uploader dialog.
        custom_uploader.open();
		
		custom_uploader.on("close", function(){
            $("#add-image-dialog").scrollTop(curScroll);
        });
    });
	

    // Video custom uploader edit.
	var video_custom_uploader;
	var curScrollEdit;

    $("#upload_video_source_button, #upload_video_source_button_edit").click(function(e) {
        e.preventDefault();
		btnTarget = e.target.id;
		curScroll = $("#add-image-dialog").scrollTop();
 
        // If the uploader object has already been created, reopen the dialog.
        if (video_custom_uploader){
            video_custom_uploader.open();
            return;
        }
        
        // Extend the wp.media object.
        video_custom_uploader = wp.media.frames.file_frame = wp.media({
            title: fwdsicChooseVideo__,
            button:
            {
                text: fwdsiscAddVideo__
            },library:
            {
            	type: "video, audio"
            },
            multiple: false
        });
 
        //When a file is selected, grab the URL and set it as the text field's value
        video_custom_uploader.on("select", function(){
            var attachment = video_custom_uploader.state().get("selection").first().toJSON();
			if( btnTarget == "upload_video_source_button"){
				$("#video_source").val(attachment.url);
			}else{
				$("#video_source_edit").val(attachment.url);
			}
        });
 
        // Open the uploader dialog.
        video_custom_uploader.open();
		
		video_custom_uploader.on("close", function(){
            $("#add-image-dialog").scrollTop(curScroll);
        });
    });


    // Subtitle custom uploader edit.
	var ubtitle_custom_uploader;
	var curScrollEdit;

    $("#upload_subtitle_source_button, #upload_subtitle_source_button_edit").click(function(e) {
        e.preventDefault();
		btnTarget = e.target.id;
		curScroll = $("#add-image-dialog").scrollTop();
 
        //If the uploader object has already been created, reopen the dialog.
        if (ubtitle_custom_uploader){
            ubtitle_custom_uploader.open();
            return;
        }
        
        // Extend the wp.media object.
        ubtitle_custom_uploader = wp.media.frames.file_frame = wp.media({
            title: "Chose subtitle",
            button:
            {
                text: "Add subtitle (.srt)"
            },library:
            {
            	type: ""
            },
            multiple: false
        });
 
        // When a file is selected, grab the URL and set it as the text field's value.
        ubtitle_custom_uploader.on("select", function(){
            var attachment = ubtitle_custom_uploader.state().get("selection").first().toJSON();
			if(btnTarget == "upload_subtitle_source_button"){
				$("#subtitle_source").val(attachment.url);
			}else{
				$("#subtitle_source_edit").val(attachment.url);
			}
        });
 
        // Open the uploader dialog.
        ubtitle_custom_uploader.open();
		
		ubtitle_custom_uploader.on("close", function(){
            $("#add-image-dialog").scrollTop(curScroll);
        });
    });
	
	// Image custom uploader edit.
	var custom_bullk;
	var curScrollEdit;
    
    function openBulkUploader(e, cur_pl_id){
        e.preventDefault();
		
		var cur_pl_id = cur_pl_id;
 
        // If the uploader object has already been created, reopen the dialog.
        if (custom_bullk){
            custom_bullk.open();
            return;
        }
        
        //Extend the wp.media object
        custom_bullk = wp.media.frames.file_frame = wp.media(
        {
            title: "Choose multiple images to create a gallery",
            button:
            {
                text: fwdsicAddImage__
            },library:
            {
            	type: "image"
            },
            multiple: true
        });
 
        // When a file is selected, grab the URL and set it as the text field's value.
        custom_bullk.on("select", function(){
            var attachment = custom_bullk.state().get("selection").toJSON();    
			
			for(var i = 0; i<attachment.length; i++){
				var isDuplicate = false;
				
				for(var j=0; j<fwdsiscMainPlaylistsAr[cur_pl_id].images.length; j++){
					if(fwdsiscMainPlaylistsAr[cur_pl_id].images[j].source == attachment[i].url){
						isDuplicate = true;
					}
				}
				
				if(!isDuplicate){
					var imageId = fwdsiscMainPlaylistsAr[cur_pl_id].images.length;
					
					var imagesIdsAr = [];
					
					var allMpimages = $("#main_playlists").sortable("toArray");
					curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
					
					$.each($("#pl" + cur_pl_id + "_images .fwd-image"), function(i, el){
						var reg_exp = /image[0-9]+/;
						var image_id = parseInt($(el).attr("id").match(reg_exp)[0].slice(5));
						imagesIdsAr.push(image_id);
					});
			
					for (var k=0; k<fwdsiscMainPlaylistsAr[curPlOrderId].images.length; k++){
						if ($.inArray(k, imagesIdsAr) == -1){
							imageId = k;
							break;
						}
					}
					var imgWidth = attachment[i].width;
					var imgHeight = attachment[i].height;
				
					addBulkimages(cur_pl_id, imageId, attachment[i].title, attachment[i].url, imgWidth, imgHeight);
				}
			}
        });
 
        // Open the uploader dialog.
        custom_bullk.open();
    };
	

	// Add bulk images.
	function addBulkimages(cur_pl_id, imageId, title, source, imageWidth, imageHeight){
		
			$("#pl" + cur_pl_id +  "_images").prepend("<div id='pl" + cur_pl_id + "_image" + imageId + "' class='fwd-image'>"
				+ "<h3 class='image-header'>" + title.replace(/"/g, "'") + "</h3>"
				+ "<img class='fwd-image-playlist-img' id='pl" + cur_pl_id + "_image" + imageId + "_img'></img>"
				+ "<button class='delete_image_btn' id='pl" + cur_pl_id + "_image" + imageId + "_del_btn'>" + fwdsicDeleteImage__ + "</button>"
				+ "<button class='edit_image_btn' id='pl" + cur_pl_id +  "_image" + imageId + "_edit_btn'>" + fwdsicEditImage__ + "</button>"
			+ "</div>");
			
			$("#pl" + cur_pl_id + "_image" + imageId + "_img").attr("src", source);

			$(".edit_image_btn").click(function(e){
				e.preventDefault();
		
				var reg_exp1 = /pl[0-9]+_/;
				var reg_exp2 = /image[0-9]+_/;
				
				cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
				cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
				
				
				var allMpimages = $("#main_playlists").sortable("toArray");
				curPlOrderId = allMpimages.indexOf("pl" + cur_pl_id);
				
				var allimageimages = $("#pl" + cur_pl_id + "_images").sortable("toArray");
				curimageOrderId = allimageimages.indexOf("pl" + cur_pl_id + "_image" + cur_image_id);
				
				$("#edit-image-dialog").dialog("open");
			});
			
			$(".delete_image_btn").click(function(e){
				e.preventDefault();
			
				var reg_exp1 = /pl[0-9]+_/;
				var reg_exp2 = /image[0-9]+_/;
				
				cur_pl_id = parseInt($(this).attr("id").match(reg_exp1)[0].slice(2, -1));
				cur_image_id = parseInt($(this).attr("id").match(reg_exp2)[0].slice(5, -1));
				
				$("#delete-image-dialog").dialog("open");
			});

			$(".images").sortable("refresh");
			
			$(".fwd-image").mouseover(function(){
				$(this).addClass("image_over");
				$(this).find(".image-header").css("color", "#212121");
			});
			
			$(".fwd-image").mouseout(function(){
				$(this).removeClass("image_over");
				$(this).find(".image-header").css("color", "#555555");
			});
			
			
			var newimage ={
				name: title.replace(/"/g, "'"),
				source: source.replace(/"/g, "'"),
				dsecription:"",
				width:imageWidth,
				height:imageHeight,
				link:"",
				target:"_blank",
				text_vertical_alignment:"bottom",
				video_source:"",
				video_password:"",
				vast:"",
				subtitle_source:"",
				video_thumbnails:"no",
				dsecription:"",
			};

			fwdsiscMainPlaylistsAr[cur_pl_id].images.unshift(newimage);
	}
	
    $("#update_btn").click(function(){
    	$("#playlist_data").val(JSON.stringify(fwdsiscMainPlaylistsAr));
    });


    // Utils.
    function checkLength(tips, el, prop, min, max){
      	if ((el.val().length > max) || (el.val().length < min)){
        	el.addClass("ui-state-error");
        	updateTips(tips, "Length of " + prop + " must be between " + min + " and " + max + ".");
        	
        	return false;
      	}else{
        	return true;
      	}
	}
	
	 function checkJSON(tips, el, prop, min, max){
      	if (el.val().indexOf("siscobj_") == -1){
        	el.addClass("ui-state-error");
        	updateTips(tips, "Please make sure that the JSON source starts with 'siscobj_' .");
        	return false;
      	}else{
        	return true;
      	}
	}
	
    function checkIfIntegerAndLength(tips, el, prop, min, max){
    	var int_reg_exp = /-?[0-9]+/;
    	var str = el.val();
    	var res = str.match(int_reg_exp);
    	
    	if (res && (res[0] == str)){
    		if ((el.val().length > max) || (el.val().length < min)){
            	el.addClass("ui-state-error");
				updateTips(tips, "Length of " + prop + " must be between " + min + " and " + max + ".");
            	return false;
          	}else{
            	return true;
          	}
        }else{
        	el.addClass("ui-state-error");
        	updateTips(tips, "The " + prop + " field value must be an integer.");
        	return false;
        }
	}
	

	function updateTips(tips, txt){
	    tips.text(txt).addClass("ui-state-highlight");

	    setTimeout(function(){
	    	tips.removeClass("ui-state-highlight", 1500);
	    }, 500);
	    
	    tips.addClass("fwd-error");
	}

	function escapeHtml(str) {
	    var map = {
	        "&": "&amp;",
	        "<": "&lt;",
	        ">": "&gt;",
	        "\"": "&quot;",
	    "'": "&#039;"
	    };
	    str = str.replace(/'/g, "\"");
	    return str.replace(/[&<>"']/g, function(m) { return map[m]; });
	}

	function unescapeHtml(str) {
	    var map = {
	        "&amp;": "&",
	        "&lt;": "<",
	        "&gt;": ">",
	        "&quot;": "\"",
	        "&#039;": "'"
	    };
	    return str.replace(/(&amp;|&lt;|&gt;|&quot;|&#039;)/g, function(m) { return map[m]; });
	}
})