function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function frameCheck()
{
	if (window.top == window.self) 
	{
		window.top.location="default.aspx"
	}
}

function downloadWindowPopUp(strURL)
{
	window.open(strURL,'DownloadWindow','location=no,toolbar=no,directories=no,menubar=no,status=no,resizable=yes,scrollbars=no,width=300,height=120');
}

function copyTitleToFrameset()
{
	window.parent.document.title=document.title;
}

function setFocus(id)
{
	if(document.getElementById(id))
	{
		document.getElementById(id).focus();
	}
}

function removeFocus(id)
{
	if(document.getElementById(id))
	{
		document.getElementById(id).blur();
	}
}

function clientRedirect(frameName, newPage, noHistory, confirmMsg)
{
	if(confirmMsg!='')
	{
		if(confirm(confirmMsg))
		{
			parent.frames[frameName].location.href = newPage;
		}
	}
	else
	{
		parent.frames[frameName].location.href = newPage;
	}
}

function ToggleAllCheckBoxes(frm)
{
	for (var i=0;i<frm.elements.length;i++)
	{
		var e = frm.elements[i];
		if ((e.name != 'checkAll') && (e.type=='checkbox'))
		{
			e.checked = frm.checkAll.checked;
		}
	}
}

function hideStatus()
{ 
	window.status='';
	return true 
}

// ** TO BE DEPRECATED IN FAVOUR OF clientRedirect
function mainFrameRedirect(strUrl)
{
	if(strUrl!='')
	{
		parent.frameMain.location.href=strUrl;
	}
}

// change the class of an object
function changeElementClass(id, newClass) 
{
	element=document.getElementById(id);
	if(element!=null)
	{
		element.className=newClass;
	}
}

// these tab functions allow all pages to control the taskbar tabs

// loads content from hiddenCache into the hidden divs on taskbar
// ** TO BE DEPRECATED in favour of one postback to main which will contain divs for use in TaskBar
function backgroundSyncAllTabs()
{
	if (parent.document.frameTaskBarLoaded)
	{
		parent.frameTaskBar.backgroundSyncAllTabs();
	}
}

function showTab(id)
{
	if (parent.document.frameTaskBarLoaded)
	{
		parent.frameTaskBar.showTab(id);
	}
}

function hideTab(tabName)
{
	if (parent.document.frameTaskBarLoaded)
	{
		parent.frameTaskBar.hideTab(id);
	}
}

function selectTab(id)
{
	if (parent.document.frameTaskBarLoaded)
	{
		parent.frameTaskBar.selectTab(id);
	}
}

function minimiseTaskPane()
{
	if (parent.document.frameTaskBarLoaded)
	{
		parent.document.getElementsByTagName("frameset")[0].rows='*,35,0';
		parent.frameTaskBar.document.getElementById("taskStateImage").alt='<%=strMaximise%>';
		parent.frameTaskBar.document.getElementById("txtSearchQuery").blur();
	}
}

function OnConversionSelectionChange()
{
	var f = parent.frameTaskBar;
	var ddlbConversion = f.document.getElementById("ddlbConversion");
	if(ddlbConversion.options[ddlbConversion.selectedIndex].value == -2)
	{
		var rpw	= window.open("RepurposingParams.aspx?AssetID="+f.CurrentAssetID,null,"status=yes,toolbar=no,menubar=no,location=no,resizable=yes,scrollbars=yes,HEIGHT=600,WIDTH=850");
		rpw.focus();
	}
}

function showAssetData(AssetID)
{
	//NB: THIS SCRIPT SHOULD BE SYNCHRONISED WITH AssetView.aspx.cs
	if(parent.document.frameTaskBarLoaded)
	{
		// TaskBar is loaded - proceed
		// make sure the pane is maximised
		var f = parent.frameTaskBar;
		f.maximiseTaskPane();
		// make sure the current asset tab is selected
		f.showTab('tabCurrentAsset');
		// populate the tabContent
		f.document.getElementById('tabCurrentAsset_Content').innerHTML = document.getElementById('tabContent_AssetID_' + AssetID).innerHTML;
		// prepare the repurposing options for the taskbar
		var cnvArea = f.document.getElementById('ConversionsArea');
		if(cnvArea != null)
		{
			// extract conversion data from parameter string and add options into select block
			var strConversionsData = document.getElementById('tabContent_AssetID_' + AssetID + '_ConversionsData').innerHTML;
			var arrayConversionPairs = strConversionsData.split('_')
			
			if(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)
			{
				// BROWSER COMPATIBILITY FORK
				// Internet Explorer for Mac does not add the OPTION tags correctly with DOM methods
				if(navigator.userAgent.indexOf("MSIE 5.1") >= 0)
				{
					// use innerHTML hack - MSIE 5.1 for Mac - adds the select into the DOM if copied as part of innerHTML
					var str = "<SELECT id=\"ddlbConversion\">";
					for (i=0; i < arrayConversionPairs.length; i++) 
					{
						var strSinglePair = arrayConversionPairs[i].toString();
						var optionsArray = new Array();
						optionsArray = strSinglePair.split('|');
						str += "<OPTION value=\"" + optionsArray[0] + "\">" + optionsArray[1] + "</OPTION>";
					}
					str += "</SELECT>";
					f.document.getElementById("ConversionsArea").innerHTML = str;	
				}
				else if(navigator.userAgent.indexOf("MSIE 5.2") >= 0)
				{
					// MSIE 5.2 for Mac
					var newSelect = f.document.createElement("SELECT");
					newSelect.id = "ddlbConversion";
					newSelect.style.width = "100px";
					
					// add newly created control into holding span
					cnvArea.appendChild(newSelect);
					
					for (i=0; i < arrayConversionPairs.length; i++) 
					{
						var strSinglePair = arrayConversionPairs[i].toString();
						var optionsArray = new Array();
						optionsArray = strSinglePair.split('|');
						var d = f.document.getElementById("ddlbConversion");
						d.options[i] = new Option(optionsArray[1],optionsArray[0]);
					}
				}
			}
			else
			{
				// DOM Compliant Browsers							
				// create a new select control
				var newSelect = f.document.createElement("SELECT");
				newSelect.id = "ddlbConversion";
				newSelect.style.width = "100px";
				
				// add newly created control into holding span
				cnvArea.appendChild(newSelect);
				
				for (i=0; i < arrayConversionPairs.length; i++) 
				{
					var strSinglePair = arrayConversionPairs[i].toString();
					var optionsArray = new Array();
					optionsArray = strSinglePair.split('|');
					// create and append new OPTION element to SELECT
					var option = f.document.createElement("OPTION");
					option.value = optionsArray[0];
					option.appendChild(f.document.createTextNode(optionsArray[1]));
					newSelect.appendChild(option);
				}
			}				
		}
		
		// and select the tab (which will make it visible)
		f.selectTab('tabCurrentAsset');
		// and update the CurrentAssetID variable
		f.CurrentAssetID = AssetID;
		// remove focus from txtSearchQuery
		if(f.document.getElementById('txtSearchQuery') != null)
		{
			f.document.getElementById('txtSearchQuery').blur();
		}
			
	}
}


/**
 * X-browser event handler attachment and detachment
 *
 * @argument obj - the object to attach event to
 * @argument evType - name of the event - DONT ADD "on", pass only "mouseover", etc
 * @argument fn - function to call
 */
 
function addEvent(obj, evType, fn)
{
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}

function removeEvent(obj, evType, fn, useCapture)
{
  if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}

function getViewportHeight() 
{
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}

function getViewportWidth() 
{
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}
