// ----------------------------------------------------------------------------------------------
// iLibrary.js - iMedia.nl
// Copyright iMedia 2006
// ----------------------------------------------------------------------------------------------

var hasIE = navigator.appName.toLowerCase().indexOf('microsoft') != -1 ? 1 : 0;
var hasMac = navigator.userAgent.toLowerCase().indexOf('mac') != -1 ? 1 : 0;
var hasWin = !hasMac ? 1 : 0;
var hasSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1 ? 1 : 0;
var hasMozilla = navigator.appName.toLowerCase().indexOf('netscape') != -1 && !hasSafari ? 1 : 0;
var hasWinIE = hasIE && !hasMac ? 1 : 0;
var hasMacIE = hasIE && hasMac ? 1 : 0;

// NOTE: probably not in use! (12-2009)
var _baseurl = "/downloadxml.pp"; // "/downloadxmlproperty.pp";


/**
* Default iMedia Rollover script
*/
var iSmartRollOver = function(element)
{
	if (element != null)
	{
		var strFilename, strExt, intPos;
		strFilename = element.src.toLowerCase();
		intPos = strFilename.lastIndexOf(".");
		strExt = strFilename.substring(intPos);
		strFilename = strFilename.substring(0, intPos);
		intPos = strFilename.indexOf("_ro");
		if (intPos == -1)
		{
			strFilename = strFilename + "_ro" + strExt;
		} else
		{
			strFilename = strFilename.substring(0, intPos) + strExt;
		}
		element.src = strFilename;
	}
};


/**
* Popup a new window...
*/
var NewWin = function(url, width, height, name)
{
	var objWindow = window.open(url, name, 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=' + width + ',height=' + height);
	objWindow.focus();
}

/**
* Generic div toggle
*/
function toggleHide(strO)
{
	var o = document.getElementById(strO);
	if (o == null)
		return;
	if (o.style.display == 'none')
		o.style.display = '';
	else
		o.style.display = 'none';
}

/* toggle jquery-enabled */
function toggleDiv(strID, strClassToHide)
{
	// show or hide panel
	if ($("#" + strID).is(":visible"))
	{
		$("#" + strID).slideUp("normal");
	}
	else
	{
		// strClassToHide enables us to close any known siblings
		if (strClassToHide != "")
			$("." + strClassToHide).slideUp("normal");

		// and afterwards open the one we need
		$("#" + strID).slideDown("normal");
	}
}

/**
* Generic toggler for multiple divs, use with tabbed menu
- Prefix: just to prevent divs in this range to have overlapping names with other existing divs
- IDS: 0 based index range
- n: number of divs to loop through
*/
function menuToggle(Prefix, intIDS, n)
{
	var strOldDisplay = document.getElementById(Prefix + intIDS).style.display;

	for (var i = 0; i < n; i++)
	{
		document.getElementById(Prefix + i).style.display = 'none';
	}

	if (strOldDisplay == 'none')
		document.getElementById(Prefix + intIDS).style.display = 'block';
}

/**
* Lister functions
*/
var iRowRollOver = function(obj)
{
	var objCells;
	var strClassName;
	var intPos;
	if (obj != null)
	{
		objCells = obj.cells;
		if (objCells != null)
		{
			for (var i = 0; i < objCells.length; i++)
			{
				strClassName = objCells[i].className;
				intPos = strClassName.indexOf("_ro");
				if (intPos == -1)
				{
					strClassName = strClassName + "_ro";
				}
				else
				{
					strClassName = strClassName.substring(0, intPos);
				}
				objCells[i].className = strClassName;
			}
		}
	}
}

var iRowClick = function(url)
{
	document.location = url;
}


/**
* Show alert confirmation and go to url
*/
var iAlert = function(alert, url)
{
	if (confirm(alert))
		document.location = url;
}

/**
* Show warning and go to url or cancel action
*/
function iWarning(strText)
{
	warning = strText + "\n\n";
	if (confirm(warning)) return true;
	return false;
}

/**
* SearchForm functions
*/
var ClickedAll = function(form, strName)
{
	var blnSet = form[strName + "All"].checked;
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].name == strName)
			form.elements[i].checked = blnSet;
	}
}

var SetAll = function(form, strName)
{
	var blnSet = true;
	for (var i = 0; i < form.elements.length; i++)
	{
		if (form.elements[i].name == strName)
			blnSet = blnSet & form.elements[i].checked;
	}
	form[strName + "All"].checked = blnSet;
}

var ClickedAllWithList = function(form, strName)
{
	var blnSet = form[strName + "All"].checked;
	var objList = form[strName];
	for (var i = 0; i < objList.options.length; i++)
		objList.options[i].selected = blnSet;
}

var SetAllWithList = function(form, strName)
{
	var intSelected = 0;
	var objList = form[strName];
	for (var i = 0; i < objList.options.length; i++)
		if (objList.options[i].selected) intSelected++;
	form[strName + "All"].checked = (intSelected == objList.options.length);
}

function disableSubmit(strID)
{
	$("#" + strID).html("<img src='/img/progressbar.gif' />");
}

/**
* Thumbnail related
*/
var toggleThumbnailMenu = function(strO)
{
	var o = document.getElementById(strO);
	if (o == null)
		return;
	if (o.style.display == 'none')
		o.style.display = '';
	else
		o.style.display = 'none';
}

/**
* IPTC Mapping related
*/
var storeCaret = function(textEl)
{
	setLyr(textEl, 'IPTCSelecterDiv');
	latestObject = textEl;
	if ((!hasIE && !hasMozilla) || hasMac)
		return;
	if (document.selection)
	{
		if (textEl.createTextRange)
			textEl.caretPos = document.selection.createRange().duplicate();
	} else
	{
		intStart = textEl.selectionStart;
		intEnd = textEl.selectionEnd;
	}
}

var insertAtCaret = function(text)
{
	if ((!hasIE && !hasMozilla) || hasMac)
	{
		latestObject.value = latestObject.value + text;
		return;
	}
	if (latestObject == undefined)
		return;
	if (document.selection)
	{
		if (latestObject.createTextRange && latestObject.caretPos)
		{
			var caretPos = latestObject.caretPos;
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		} else
		{
			latestObject.value = text;
		}
	} else
	{
		before = (latestObject.value).substring(0, intStart);
		sel = (latestObject.value).substring(intStart, intEnd);
		after = (latestObject.value).substring(intEnd, latestObject.textLength);
		latestObject.value = before + text + after;
	}
}

var setLyr = function(obj, lyr)
{
	var newY = findPosY(obj);
	var x = new getObj(lyr);
	x.style.top = newY;
}

var getObj = function(name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	} else if (document.all)
	{
		this.obj = document.all[name];
		this.style = document.all[name].style;
	} else if (document.layers)
	{
		if (document.layers[name])
		{
			this.obj = document.layers[name];
			this.style = document.layers[name];
		} else
		{
			this.obj = document.layers.testP.layers[name];
			this.style = document.layers.testP.layers[name];
		}
	}
}

var findPosY = function(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop - 83;
}

function getRandom()
{
	return Math.random() * 99999;
}





