/**
* MP619 : Wrapper for YUI classes
*/
OT = {
	Event:YAHOO.util.Event,
	Ajax:YAHOO.util.Connect,
	Selector:YAHOO.util.Selector,
	Dom:YAHOO.util.Dom,
	KeyListener:YAHOO.util.KeyListener,
	
	SimpleDialog:YAHOO.widget.SimpleDialog,
	Panel:YAHOO.widget.Panel,
	Dialog:YAHOO.widget.Dialog,
	Tooltip:YAHOO.widget.Tooltip,
	Overlay:YAHOO.widget.Overlay,
	Effect:YAHOO.widget.ContainerEffect,
	
	env:YAHOO.env
};

/**
* PluginFix : 
* On COMP page we use plugin to display document, audio and video
* On some browsers YUI popups getting hide behind plugin and behaviour is not consistent it changes as per plugin
* So better way is to hide each such control on the page if user go for popup and show all when popup is closed
*/
PluginFix = {
	plugs : null,
	isDone : false,
	init:function(){
		if(this.isDone)
			return;
		this.getPlugins();
	},
	getPlugins:function(){
		var obj = document.getElementsByTagName("object");
		var embed = document.getElementsByTagName("embed");
		if(obj.length > 0)
			this.plugs = obj;
		else if(embed.length > 0)
			this.plugs = join(this.plugs, embed);
		this.isDone = true;
	},
	
	/**
	* function to fix the plugin issue
	* @param {Panel/Dialog/SimpleDialog} instance of popup
	*/
	showHidePlugins:function(pObj){
		this.init();

		pObj.beforeShowEvent.subscribe(function(o){
			if(PluginFix.plugs.length > 0)
			{
				for(var i = 0; i < PluginFix.plugs.length; i++)
				{
					PluginFix.plugs[i].style.visibility = 'hidden';
				}
			}
		});
		
		pObj.hideEvent.subscribe(function(o){
			if(PluginFix.plugs.length > 0)
			{
				for(var i = 0; i < PluginFix.plugs.length; i++)
				{
					PluginFix.plugs[i].style.visibility = 'visible';
				}
			}
		});
	}
};

/**
* Override alert to support YUI style alert box
*@param {String} args[0] alert message to display
*@param {String} args[1] (OPTIONAL/DEFAULT WARN) icon to display [HELP, TIP, INFO, BLOCK, ALARM]
*@param {String} args[2] (OPTIONAL) header of popup
*/
(function(){

	FocusFix = {
		elementInFocus: null,
		setFocusHandler: function(){
			for(var i = 0; i <document.forms.length ; i++)		
			{
				var currentForm = document.forms[i];
				for(var j=0; j< currentForm.elements.length; j++)
					this.add(currentForm.elements[j]);
			}
		},
		add:function(element){
			if(element && element.focus)
				OT.Event.addListener(element, "focus", FocusFix.addFocusListener);
		},
		addFocusListener:function(e){
			FocusFix.elementInFocus = OT.Event.getTarget(e);
		},
		// To be used to set focus to elements if they are added dynamically to ui like info popup's navigation bar
		setFocus:function(element){
			if(element && !OT.Event.getListeners(element, "focus", FocusFix.addFocusListener))
				this.add(element);
			
			if(element && element.focus)
				element.focus();
		}
	};
	
	WA = {
		popup : null,
		init : function(){
			this.popup = new OT.SimpleDialog("win_alert", {
					width: "350px",
					fixedcenter: 'contained',
					visible: false,
					draggable: true,
					zIndex: 9999,
					close: true,
					//modal: true,
					effect:{effect:OT.Effect.FADE,duration:0.25},
					buttons: [ { text:"OK", handler: function(){this.hide();}, isDefault:true }],
					constraintoviewport: true
			});
			if(OT.env.ua.ie > 0)
				this.popup.cfg.setProperty("iframe", true);
			PluginFix.showHidePlugins(this.popup);
						
			this.popup.hideEvent.subscribe(function(){
				setTimeout(function(){
					try{
						if(FocusFix.elementInFocus && FocusFix.elementInFocus.focus)
							FocusFix.elementInFocus.focus();
					}catch(e){}
				}, 250);
			});

			this.popup.setHeader("Information");
			this.popup.setBody("&nbsp;");
			this.popup.cfg.queueProperty("keylisteners", new OT.KeyListener(document, { keys:[13,27] },{ fn:WA.popup.hide, scope:WA.popup, correctScope:true })); 
			this.popup.render(document.body);
		},
		newAlert : function(){
			if(!WA.popup)
				WA.init();
			var args =  window.alert.arguments;
			
			WA.popup.setBody(args[0]); //alert message

			var icon = "WARN";
			
			if(args[1])	//icon for alert
				icon = args[1];
			
			switch(icon)
			{
				case "INFO":
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_INFO);
					break;
				case "HELP":
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_HELP);
					break;
				case "BLOCK":
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_BLOCK);
					break;
				case "ALARM":
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_ALARM);
					break;
				case "TIP":
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_TIP);
					break;
				case "NONE":
					//will not get any icon symbol
					break;
				default:
					WA.popup.cfg.setProperty("icon",OT.SimpleDialog.ICON_WARN);
			}
			
			if(args[2])	//set header for alert box
				WA.popup.setHeader(args[2]);
			WA.popup.show();
		}
	};
	
	//Add CSS class to document body for YUI skin for container
	OT.Event.onDOMReady(function(){
		if(!OT.Dom.hasClass(document.body, 'yui-skin-sam'))
			OT.Dom.addClass(document.body, 'yui-skin-sam');
		//Monitoring the form element who has focus
		FocusFix.setFocusHandler();
	});
	//override window alert 
	window.alert = WA.newAlert;
})();

    //This function returns the control with the given id
    function FindControl(controlID) {
	    for ( var i = 0; i < document.forms.length; i++ ) {
		    var theForm = document.forms[i];
		    var theControl = theForm[controlID];
		    if ( theControl != null ) {
			    return theControl;
		    }
	    }
	    return null;
    }
    
    //Prashant Jha : This function will return the control which has this string as part of its TagName.
	function FindControlByTagName(controlIDLike, tagType)
	{
		var elem = document.getElementsByTagName(tagType);
		for(var j = 0 ;  j < elem.length; j++)
		{
			var element = elem[j];
			var id = element.id;
	
			if(id.search(controlIDLike) != -1)
			{
			  return element;
			}
		}
	}
    
    //This function will return all the controls which has this string as part of its id.
      function FindControlLike(controlIDLike) {
		  
		var controlArray = new Array();
		for ( var i = 0; i < document.forms.length; i++ ) {
		    var theForm = document.forms[i];
		    var elem = theForm.elements;
		    
		    for(var j = 0;j < elem.length; j++)
		    {	
				var theControl = elem[j];
				var id = theControl.id;	
				
				if(id.search(controlIDLike) != -1)
				{
				    // alert("matched here");
					controlArray[controlArray.length] = theControl;
				}
			}
	    }
	    return controlArray;
    }
    
    //This function will trim the whitespaces of a string
    function Trim(s)  
    {
        // Remove leading spaces and carriage returns
          
        while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
        {
            s = s.substring(1,s.length);
        }

        // Remove trailing spaces and carriage returns

        while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
        {
            s = s.substring(0,s.length-1);
        }
        return s;
    }
    
    function onText(str){ window.status = str; return true }
    function offText(){ window.status = ""; return true }
    
    function currentArea(product, navArea) 
    {

	    if(navArea == "store" && document.archive != null){
		    document.archive.src = "/images/" + product + "_archive_over.gif";
    	
	    }
	    else if(navArea == "work" && document.collaborate != null){		
		    document.collaborate.src = "/images/" + product + "_collaborate_over.gif";
    	
	    }
	    else if(navArea == "send" && document.send != null){
		    document.send.src = "/images/" + product + "_send_over.gif";
	    }	
    		
}

    function isNull(s) { return ((s == null) || (s == "")); }

function replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

// Function escapes embedded single quotes in a string
function escapeQuote(str)
{
    if(str == null || str == "") 
        return "";
    
    // Escape embedded single quotes(') by (\')
    str2 = str.replace(/'/g, "\\\'");
    return str2;
}

//Function to get the version of IE
function getIEVersion()
{
	var temp=navigator.appVersion.split("MSIE");
	var version=parseFloat(temp[1]);   
	return version;
}

//Function to check whether the hex-value entered for a color is valid or not
function validHexColor(value)
{ 
	//loose valid hex check
	return /^#?[0-9A-Fa-f]{6}$/.test(value);
}
/*
fix for Devtrack item:3127 Option of "All transformations" is displayed along with original transformation though there is no transformation receipe.
Making an ajax request to find out if recipe is configured for the asset. If it is, it will redirect to transformationoptions.aspx else it will open the orignal format
*/
function processDownloadRequest(item,caption_id,pDocument,collection_id,url,sessionidstr)
{
        var cObj = OT.Ajax.asyncRequest('GET',url , {
        success : function(o){
        var recipeCount=o.responseText;				
        if (recipeCount=='true')
        {
          TransForClickedAsset(item,caption_id,pDocument,collection_id);	
        }
        else if(recipeCount=='false')
        {               
          alert('There was some problem while downloading the asset. Please try again.');  
          //window.location.href="/archive/"+caption_id+"?method=download&captionId="+caption_id+"&collection_id=" + collection_id + "&" +sessionidstr ;
        }
        else
        {
            window.location.href = recipeCount;
        }
        },
        failure:function(o) {
        if(o.responseText.search(/MediaPartner Session Expired/) != -1 )
        window.location = window.location;
        else
        alert("There was a problem to get the number of recipes for this asset");
        }
        });
}
/**
* Used for displaying simple popups
* 1. Legal Notic
* 2. Privacy Policy
*/
SimplePopup = {
	popup:null,
	init:function(){
		this.popup = new OT.Panel("simple_info_popup",{
			fixedcenter:'contained',
			visible: false,
			draggable: true,
			zIndex: 700,
			close: true,
			modal: true,
			effect:{effect:OT.Effect.FADE,duration:0.25},
			constraintoviewport: true
		});
		if(OT.env.ua.ie > 0)
			this.popup.cfg.setProperty("iframe", true);
		PluginFix.showHidePlugins(this.popup);
		this.popup.setHeader("NA");
		this.popup.setBody("NA");
		this.popup.render(document.body);
	},
	
	onLegalNoticesClick:function(){
		if(!this.popup)
			this.init();
		this.popup.setBody("<div class='ajaxloader'></div>");
		this.popup.cfg.setProperty("width","370px");
		this.popup.cfg.setProperty("height","300px");
		this.popup.setHeader("<span class='ot-icon infoicon'></span>Legal Notices");
		this.popup.show();
		var cObj = OT.Ajax.asyncRequest('GET', '/legalnotice.aspx', {
			success : function(o){
				SimplePopup.popup.setBody(o.responseText);
			}
		}); 
	},
	onPrivacyPolicyClick:function(){
		if(!this.popup)
			this.init();
		this.popup.setBody("<div class='ajaxloader'></div>");
		this.popup.setHeader("<span class='ot-icon infoicon'></span>Privacy Policy");
		this.popup.cfg.setProperty("width","750px"); 
		this.popup.cfg.setProperty("height","550px");
		this.popup.show();
		var cObj = OT.Ajax.asyncRequest('GET', '/privacypolicy.aspx', {
			success : function(o){
				SimplePopup.popup.setBody(o.responseText);
			}
		}); 
	},
	onLegalAgreementClick:function(){
		if(!this.popup)
			this.init();
		this.popup.setBody("<div class='ajaxloader'></div>");
		this.popup.setHeader("<span class='ot-icon infoicon'></span>Privacy Policy");
		this.popup.cfg.setProperty("width","750px"); 
		this.popup.cfg.setProperty("height","550px");
		this.popup.show();
		var cObj = OT.Ajax.asyncRequest('GET', '/AgreePopUp.aspx', {
			success : function(o){
				SimplePopup.popup.setBody(o.responseText);
			}
		}); 
	}
};

/**
* RO = Image Rollover
*/
RO = {
	imgSrc:null,
	capId:null,
	imgH:null,
	imgW:null,
	maxSize:null,
	scaledHW : [],
	popupXY : [],
	rollOver : null,
	
	/**
	* initialization for  rollOver popup
	*/
	init : function(){
		this.rollOver = new OT.Overlay('image_rollover_popup',{
			zIndex:800,
			xy:[-700,-700],
			visible:false,
			constraintoviewport:true
		});
		this.rollOver.setBody("");
		this.rollOver.render(document.body);
	},
	
	/**
	* on mouse is over thumbnail this function gets called
	* @param {String} src path to asset browsable
	* @param {Number} cId assets caption id
	* @param {Number} aH asset height
	* @param {Number} aW asset width
	* @param {Number} mS maximum length for rollover (Cfg entry)
	*/
	onThumbnail : function(e, src, cId, aH, aW, mS){
		RO.imgSrc = src;
		RO.capId = cId;
		RO.imgH = aH;
		RO.imgW = aW;
		RO.maxSize = mS;
		
		if(!RO.rollOver)
			RO.init();
		
		//assets using ajax request to get heigh, width initial location for popup to display has to be retrived and set. If not done initial location for 
		//such assets rollover is previous popup location even if its on other asset unless mousemove event is triggered. This is inconsistent to normal behaviour of rollover.
		var Pxy = RO.calcPopupXY(e);
		RO.rollOver.moveTo(Pxy[0], Pxy[1]);
		
		if(isNaN(parseInt(RO.imgH)) && isNaN(parseInt(RO.imgW)))
		{
			OT.Ajax.asyncRequest('GET', '/common/ProcessXMLHttpReq.aspx?' + 'type=imagedimensions&assethtwt_caption_id=' + cId, RO.callback);
		}
		else
		{
			RO.scaledHW = RO.scaleHeightWidth(RO.imgH, RO.imgW, RO.maxSize);
			RO.displayPopup(RO.scaledHW[0], RO.scaledHW[1]);
		}
	},
	
	/**
	* if mouse is off the thumbnail then its called to detach event handler and hide rollover
	*/
	onThumbnailOut:function(){
		if(this.rollOver)
		{
			this.rollOver.setBody("");
			this.rollOver.hide();
		}
		if(OT.Event.getListeners(document.body, "mousemove", RO.onDocMouseOver))
			OT.Event.removeListener(document.body, "mousemove", RO.onDocMouseOver);
	},
	
	/**
	* display image in popup on mouse over
	* @param {Number} sH asset height
	* @param {Number} sW asset width
	*/
	displayPopup : function(sH, sW){
		if(!OT.Event.getListeners(document.body, "mousemove", RO.onDocMouseOver))
		{
			RO.rollOver.setBody('<div class="hoverlayout"><img src="' + RO.imgSrc + '" height='+ sH +' width='+  sW + ' border="0"/></div');
			OT.Event.on(document.body, "mousemove", RO.onDocMouseOver);
		}
		setTimeout('RO.rollOver.show()', 1000);
	},
	
	/**
	* Mouse move event handler for moving rollover with mouse cursor
	* @param {eventObj} event object from mousemove event
	*/
	onDocMouseOver:function(e){
		var target = OT.Event.getTarget(e);
		//Ghost Rollover : If mouse event has target element null or element not image or caption_id is not same in image src of which mouse pointer is or howered image
		if(!target || target.tagName.toLowerCase() != 'img' || target.src.search(RO.capId.toString()) == -1 || RO.imgSrc.search(RO.capId.toString()) == -1)
			RO.onThumbnailOut();
		var Pxy = RO.calcPopupXY(e);
		RO.rollOver.moveTo(Pxy[0], Pxy[1]);
	},
	
	/**
	* Calculates popup XY location on screen using event object
	* @param  eventObj} event object from mousemove/mouseover event
	*/
	calcPopupXY : function(e){
		var W = OT.Dom.getViewportWidth();
		var Cxy = OT.Event.getXY(e);
		var Pxy = [0,0];
		var dX = 50; // X factor : to keep rollover away from pointer (in pixel)
		
		if (Cxy[0] + RO.scaledHW[1] + dX >=  W)	// Get x : If popup moves beyound window width flip it on left side
			Pxy[0] = Cxy[0] - RO.scaledHW[1] - dX;
		else 
			Pxy[0] = Cxy[0] + dX;

		Pxy[1] = Cxy[1]; // Get y : Set Y to pointers y location
		return Pxy;
	},
	
	/**
	* Scales image dimention according to maximum size
	* @param {Number} aH original asset height
	* @param {Number} aW original asset width
	* @param {Number} mS maxing allowed size for rollover
	*/
	scaleHeightWidth : function(aH, aW, mS){
		var arr = [];
		var delta = 1;
		if(aH <= mS && aW <= mS)
		{
			delta = 1;
		}
		else if(aH > mS && aW <= mS)
		{
			delta = mS/aH;
		}
		else if(aW > mS && aH <= mS)
		{
			delta = mS / aW;
		}
		else if(aW > mS && aH > mS)
		{
			delta = mS/Math.max(aW, aH);
		}
		arr[0] = Math.floor(aH * delta);
		arr[1] = Math.floor(aW * delta);
		return arr;
	},
	
	/**
	* Callback object for Ajax request
	*/
	callback : {
		success:function(o){
			var imgHW = o.responseText.split(",");
			if(imgHW.length == 2)
			{
				RO.imgH = imgHW[0];
				RO.imgW = imgHW[1];
				RO.scaledHW = RO.scaleHeightWidth(RO.imgH, RO.imgW, RO.maxSize);
				RO.displayPopup(RO.scaledHW[0], RO.scaledHW[1]);
			}
			else
				alert("Unable to get dimentions for image rollover.");
		},
		failure:function(o) {
			if(o.responseText.search(/MediaPartner Session Expired/) != -1 )
				window.location = window.location;
			else
				alert("There was a problem to find height and width of image");
		},
		cache:false
	}
};

function validateCreateBrowseables()
{
	//toValidateBrowse();
	var thisForm =document.frmCreateMultipleBrowseables;
			
	var arr = document.getElementsByTagName("input");
	var arrCheck = new Array();
	
	for(var i=0;i<arr.length;i++)
	{			
		if(arr[i].type=='checkbox' && arr[i].checked && arr[i].name!='recursive')
		{
			arrCheck.push(arr[i].name);
		}		   
	}

	if(arrCheck.length == 0)
	{
		alert("No items were selected. Please select one or more items.");
	}
	else
	{
		thisForm.submit();
	}
}

function DisplayNext(controlNamePrefix)
{
    j=0;
    var toIndex;
    var isClearAssets;
    var toStart;
    eval(controlNamePrefix + "startIndex+=" + totalAssetOnPage);
    if((totalAssetOnPage + eval(controlNamePrefix + "startIndex")) < eval(controlNamePrefix + "quarterAssetDetails").length)
    {
        toIndex = totalAssetOnPage + eval(controlNamePrefix + "startIndex");
    }
    else
    {
        toIndex = eval(controlNamePrefix + "quarterAssetDetails").length;
        isClearAssets = true;
    }
        
    for(var i = eval(controlNamePrefix + "startIndex"); i < toIndex; i++)
	{
        var eleItem = FindControlByTagName(controlNamePrefix + "quarterAsset_" + j, 'td');
        j++;
        var fileName = '';
        if(eval(controlNamePrefix + "quarterAssetDetails")[i].metadataonly != true)
        {
		    if(!isNull(eleItem))
		    {
				var jsOnmouseout = "";
				var jsOnmouseover = "";
				if(eval(controlNamePrefix + "quarterAssetDetails")[i].showImage == true)
				{
					jsOnmouseout = "onmouseout=\"RO.onThumbnailOut(event);\" ";
					jsOnmouseover = "onmouseover=\"RO.onThumbnail(event, '"+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rollOverFilePath 
						+"', "+ eval(controlNamePrefix + "quarterAssetDetails")[i].captionId +", "+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rolloverHeight 
						+", "+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rolloverWidth 
						+", "+eval(controlNamePrefix + "rolloverAssetDetails")[i].maxRollOverSize+");\"";
				}
				eleItem.innerHTML = "<a href=\"javascript:void(null)\"" + jsOnmouseout + jsOnmouseover + ">" + "<img src=\"/browse/thumbnail/" + 
				eval(controlNamePrefix + "quarterAssetDetails")[i].captionId+"\" height=" + eval(controlNamePrefix + "quarterAssetDetails")[i].browsableheight 
		                        + " width=" + eval(controlNamePrefix + "quarterAssetDetails")[i].browsablewidth+"></a>";
			    eleItem.className = "tinted";
		    }
        }    
        else
        {
		    eleItem.className = "moathumbnail";
		    eleItem.innerHTML = "&nbsp;";					
		    eleItem.setAttribute("height", "36");
		    eleItem.setAttribute("width", "36");
        }
    }
    
    if(isClearAssets)
    {
        for(var i = j; i < totalAssetOnPage; i++)
        {
        		var eleItem = FindControlByTagName(controlNamePrefix + "quarterAsset_" + i, 'td');
				if(eleItem)
				{
    				if(controlTargetFrom == 'download')
    				    eleItem.style.display = 'none';
    				else
    				{
				        eleItem.className ="tinted"; 
					    eleItem.innerHTML = "&nbsp;";
				    }
 				}
        }
		var elemRightArrow = FindControlByTagName(controlNamePrefix + "m_imgRight", 'td');
		if(elemRightArrow)
		    elemRightArrow.innerHTML = "<IMG alt=\"Next set of assets\" align=\"right\" src=\"/images/rightarrow_off.gif\">"; 
    }
    
    if(eval(controlNamePrefix + "startIndex") > 0)
    {   
        var elemLeftArrow = FindControlByTagName(controlNamePrefix + "m_imgLeft", 'td');
		if(elemLeftArrow)
		{   
		    elemLeftArrow.innerHTML ="<a href=\"javascript:void(null)\" onClick=\"DisplayPrevious('" + controlNamePrefix + "');return false;\" id=\"" + controlNamePrefix + "imgLeft\"><img src=\"/images/leftarrow_on.gif\" alt=\"Previous set of assets\"></a>";
		 }
    }   
    
} 

function DisplayPrevious(controlNamePrefix)
{
    j=0;
    var fromIndex = eval(controlNamePrefix + "startIndex") - totalAssetOnPage;
    for(var i = fromIndex; i < eval(controlNamePrefix + "startIndex"); i++)
	{
        var eleItem = FindControlByTagName(controlNamePrefix + "quarterAsset_" + j, 'td');
        j++;
        if(eval(controlNamePrefix + "quarterAssetDetails")[i].metadataonly != true)
        {
		    if(!isNull(eleItem))
		    {
				var fileName = '';
				var jsOnmouseout = "";
				var jsOnmouseover = "";
				
				if(eval(controlNamePrefix + "quarterAssetDetails")[i].showImage == true)
				{
					jsOnmouseout = "onmouseout=\"RO.onThumbnailOut(event);\"";
					jsOnmouseover = "onmouseover=\"RO.onThumbnail(event, '"+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rollOverFilePath
		         +"', "+ eval(controlNamePrefix + "quarterAssetDetails")[i].captionId +","+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rolloverHeight +", "+ eval(controlNamePrefix + "rolloverAssetDetails")[i].rolloverWidth +", "+eval(controlNamePrefix + "rolloverAssetDetails")[i].maxRollOverSize+");\"";
				}
				eleItem.innerHTML = "<a href=\"javascript:void(null)\"" + jsOnmouseout + jsOnmouseover + ">" + "<img src=\"/browse/thumbnail/" + 
				eval(controlNamePrefix + "quarterAssetDetails")[i].captionId+"\" height=" + eval(controlNamePrefix + "quarterAssetDetails")[i].browsableheight 
		                        + " width=" + eval(controlNamePrefix + "quarterAssetDetails")[i].browsablewidth+"></a>";

				eleItem.className = "tinted";
				if(controlTargetFrom == 'download')
				{
    				if(eleItem.style.cssText != "")
                    eleItem.style.cssText = "";
				}
		    }
        }    
        else
        {
            if(controlTargetFrom == 'download')
			{
				if(eleItem.style.cssText != "")
                    eleItem.style.cssText = "";
			}
		    eleItem.className = "moathumbnail";
		    eleItem.innerHTML = "&nbsp;";
		    eleItem.setAttribute("height", "36");
		    eleItem.setAttribute("width", "36");
        }
    }
    eval(controlNamePrefix + "startIndex=" + fromIndex);
    
    if((eval(controlNamePrefix + "startIndex") + totalAssetOnPage) < eval(controlNamePrefix + "quarterAssetDetails").length)
    {   
        var elemRightArrow = FindControlByTagName(controlNamePrefix + "m_imgRight", 'td');
		if(elemRightArrow)
		    elemRightArrow.innerHTML = "<a href=\"javascript:void(null)\" onClick=\"DisplayNext('" + controlNamePrefix + "');return false;\" id=\"" + controlNamePrefix + "imgRight\"" +
                "><img src=\"/images/rightarrow_on.gif\" alt=\"Next set of assets\" align=\"right\"></a>";
    }            
    
    if(eval(controlNamePrefix + "startIndex") == 0)
    {
        var elemLeftArrow = FindControlByTagName(controlNamePrefix + "m_imgLeft", 'td');
		if(elemLeftArrow)
		    elemLeftArrow.innerHTML =  "<img src=\"/images/leftarrow_off.gif\" alt=\"Previous set of assets\">";
    }    
}

function onSharesButtonsClick(s) 
{
    if(s=='remove') 
    { 
        var control =FindControl(window.select_nameId); 
        if(control != null) 
        { 
            if(control.selectedIndex == -1) 
            { 
                alert('Please select members to remove'); 
                return false; 
            } 
            else 
            { 
                return true; 
            }   
        }   
    }  
    if(s=='addmembers') 
    { 
        var control =FindControl(window.select_nameId); 
        if(control != null) 
        { 
            var addedMembers = document.getElementById('addedMembersPopupUrl'); 
            eval("window.open(''+ addedMembers.value + '', 'finish_add_members', 'width=660, height=400, resizable=yes')");
            return false; 
        } 
        else 
        { 
            return false; 
        } 
    }
    if(s=='permissions') 
    { 
        var control =FindControl(window.select_nameId); 
        if(control != null) 
        { 
            if(control.selectedIndex == -1) 
            {   
                alert('Please select members to modify the permissions'); 
                return false; 
            }   
            else 
            {
                var modifyPermUrl = document.getElementById('modifyPermPopupUrl');
                var selectedOptions = getSelectedMembers(control);
                var url = modifyPermUrl.value + selectedOptions;
                eval("window.open(''+ url + '', 'finish_perm_select', 'width=700, height=300, resizable=yes')");    
                return false; 
            }   
        }   
    }   
}

function  getSelectedMembers(control)
{
    var selectedMembCnt = 0;
    var queryString = "";
    for(var i = 0; i < control.length; i++)
    {
        if(control[i].selected)
        {
            var selectedVal = control[i].value;
            if(selectedVal.indexOf("[o]") != -1)
            {
                queryString += "&share_member_id_" + selectedMembCnt + "=org_" + selectedVal;
                selectedMembCnt++;
            }
            if(selectedVal.indexOf("[u]") != -1)
            {
                queryString += "&share_member_id_" + selectedMembCnt + "=usr_" + selectedVal;
                selectedMembCnt++;
            }
        }
    }
    return queryString;
}

function initReplaceThumnailPopup(captionId) {
	// Define various event handlers for Dialog
	var handleSubmit = function() {
		this.submit();
	};
	var handleCancel = function() {
		this.cancel();
	};

	var onUpload = function(o) {
		var pageMsg = document.getElementById("page_replace_thumbnail_message");
		if(!pageMsg) 
			return;
		var messages = pageMsg.getElementsByTagName('td');
		if(messages && messages.length != 3) 
			return;
			
		var response = new Object;
		eval('response = ' + o.responseText );
		if(!response.hasError)
		{
		    pageMsg.style.display = messages[1].style.display = '';
		    messages[0].style.display = messages[2].style.display = 'none';
		}
		else
		{
		    var errorDivId = document.getElementById("replaceAssetErrorMsg");
		    var errorMsg = errorDivId.innerHTML;
		    errorMsg += "<br>" + response.message;
		    errorDivId.innerHTML = errorMsg;
		    pageMsg.style.display = messages[2].style.display = '';
		    messages[0].style.display = messages[1].style.display = 'none';		    
		}
		//To reload thumbail images in the page
		for(var img in document.images)
			if(document.images[img] && document.images[img].src && document.images[img].src.indexOf("thumbnail") != -1)
				document.images[img].src = document.images[img].src + '?t=' + (new Date()).getTime() ;

	}


	var dialog1 = new YAHOO.widget.Dialog("dialog1", 
	{
		width : "370px",
		zIndex:"1000",
		fixedcenter : true,
		visible : true, 
		draggable : true,
		modal : true,
		constraintoviewport : true,
		effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.30},
		buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
			  { text:"Cancel", handler:handleCancel } ]
	});

	dialog1.setHeader("Replace Thumbnail");    	
	dialog1.setBody("<div class='ajaxloader'></div>");

	dialog1.setBody('<form action="/ingest/captioning/SelectKeyFrame.aspx?captionID='+ captionId +'" enctype="multipart/form-data" method="post" id="testForm">'+	
	'<br/>'+
	'<strong>Upload a image to replace thumbnail :</strong><br/><span style="font-size:80%; font-style:italic">only jpg images are accepted as thumbnail</span><br/><br/>'+
	'<input type="file" name="uploadFile" id="uploadFile"/></form>');

	// Render the Dialog
	dialog1.render(document.body);
	dialog1.show();
	dialog1.callback.upload = onUpload; 

	//Function to validate dialog
	dialog1.validate = function()
	{
		var data = this.getData();
		if(data.uploadFile=="")
		{
			alert("Please provide a jpg/jpeg image for thumbnail. No other format is supported.");
			return false;
		}
		else
		{
			var file_fullpath = data.uploadFile;
			var file_tolower = file_fullpath.toLowerCase(); 
			if(file_tolower.lastIndexOf(".jpg")==-1 )
			{
				alert("Please provide a jpg/jpeg image for thumbnail. No other format is supported.");
				return false;
			}
			else
			{
				var pageMsg = document.getElementById("page_replace_thumbnail_message");
				if(!pageMsg) return;
				var messages = pageMsg.getElementsByTagName('td');
				if(messages && messages.length != 3) return;
				pageMsg.style.display = messages[0].style.display = '';
				messages[1].style.display = messages[2].style.display = 'none';
				return true;
			}
		}
	}
}

function getParentTableRow(node)
{
    var parentTC = getParentTableCell(node);
    if(parentTC == null)
        return null;
    else
        return parentTC.parentNode;
}

function getParentTableCell(node)
{
    if(node == null)
        return null;
    else if(node.nodeName == "TD")
        return node;
    else
        return getParentTableCell(node.parentNode)
}
