// JavaScript Document
// Opacity and Fade in script.
// Script copyright (C) 2008 http://www.cryer.co.uk/.
// Script is free to use provided this copyright header is included.
function SetOpacity(object,opacityPct)
{
  // IE.
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';
  // Old mozilla and firefox
  object.style.MozOpacity = opacityPct/100;
  // Everything else.
  object.style.opacity = opacityPct/100;
}
function ChangeOpacity(id,msDuration,msStart,fromO,toO)
{
  var element=document.getElementById(id);
  var opacity = element.style.opacity * 100;
  var msNow = (new Date()).getTime();
  opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
  if (opacity<0) 
    SetOpacity(element,0)
  else if (opacity>100)
    SetOpacity(element,100)
  else
  {
    SetOpacity(element,opacity);
    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",1);
  }
}
function FadeIn(id)
{
  var element=document.getElementById(id);
  if (element.timer) window.clearTimeout(element.timer); 
  var startMS = (new Date()).getTime();
  element.timer = window.setTimeout("ChangeOpacity('" + id + "',1000," + startMS + ",0,100)",1);
}
function FadeOut(id)
{
  var element=document.getElementById(id);
  if (element.timer) window.clearTimeout(element.timer); 
  var startMS = (new Date()).getTime();
  element.timer = window.setTimeout("ChangeOpacity('" + id + "',1000," + startMS + ",100,0)",1);
}
function FadeInImage(foregroundID,newImage,backgroundID)
{
  var foreground=document.getElementById(foregroundID);
  if (backgroundID)
  {
    var background=document.getElementById(backgroundID);
    if (background)
    {
      background.style.backgroundImage = 'url(' + foreground.src + ')';
      background.style.backgroundRepeat = 'no-repeat';
    }
  }
  SetOpacity(foreground,0);
  foreground.src = newImage;
  if (foreground.timer) window.clearTimeout(foreground.timer); 
  var startMS = (new Date()).getTime();
  foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "',1000," + startMS + ",0,100)",10);
}

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_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_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); 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 refreshImage(image) {
	if (!image) {
		return;
	}
	var src = image.src;
	var index = src.lastIndexOf("?");
	src = src.substring(0, index) + "?" + new Date().getTime();
	image.src = src;
}

/** 
 * This function toggles checkboxes in the form 
 * surrounding the specified element. If the element
 * is a checkbox, it is excluded from the toggle 
 * (since this function is most likely called from
 * another checkbox).
 */
function toggleCheckboxes(element) {
	var form = null;
	var type = null;
	var source = element;
	if (element) {
		while (element) {
			type = element.nodeName;
			if (type == "FORM") {
				form = element;
				break;
			}
			element = element.parentNode;
		}
	}
	if (form) {
		var input = null;
		var inputs = form.getElementsByTagName("INPUT");
		for (var i=0; i < inputs.length; i++) {
			input = inputs[i];
			if (input.getAttribute("type") == "checkbox") {
				if (input != source) {
					if (input.checked) {
						input.checked = false;
					} else {
						input.checked = true;
					}
				}
			}
		}
	}
}

function uncheckCheckboxes(element) {
	var form = null;
	var type = null;
	var source = element;
	if (element) {
		while (element) {
			type = element.nodeName;
			if (type == "FORM") {
				form = element;
				break;
			}
			element = element.parentNode;
		}
	}
	if (form) {
		var input = null;
		var inputs = form.getElementsByTagName("INPUT");
		for (var i=0; i < inputs.length; i++) {
			input = inputs[i];
			if (input.getAttribute("type") == "checkbox") {
				if (input != source) {
						input.checked = false;
				}
			}
		}
	}
}

function checkCheckboxes(element) {
	var form = null;
	var type = null;
	var source = element;
	if (element) {
		while (element) {
			type = element.nodeName;
			if (type == "FORM") {
				form = element;
				break;
			}
			element = element.parentNode;
		}
	}
	if (form) {
		var input = null;
		var inputs = form.getElementsByTagName("INPUT");
		for (var i=0; i < inputs.length; i++) {
			input = inputs[i];
			if (input.getAttribute("type") == "checkbox") {
				if (input != source) {
						input.checked = true;
				}
			}
		}
	}
}

function resetNavMenu(layout) {
	YAHOO.util.Event.onDOMReady(function () {
		if (layout == "horizontal") {
				var menu = new YAHOO.widget.MenuBar("navMenu", { autosubmenudisplay: true }); 
				menu.render();
		} else {
				var menu = new YAHOO.widget.Menu("navMenu");
				menu.render();
				menu.show();
		}
	});
}

if (typeof A4J != 'undefined') {
	A4J.AJAX.onError = function(req, status, message){
			message = message.replace("Reqest", "Request");
			window.alert("We were unable to process the request due to a server error:\n\n" + message + "\n\nSorry for the inconvenience. Please try again later.");
	}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function showImage(elementId, imageId) {
	document.getElementById(elementId).setAttribute("src", "/content/cms/" + imageId);
	Richfaces.showModalPanel('imageViewModalPanel');
}

function applyModalPanelEffect(panelId, effectFunc, params) {
	if (panelId && effectFunc) {
		var modalPanel = $(panelId);
		if (modalPanel && modalPanel.component) {
			var component = modalPanel.component;
	 		var div = component.getSizedElement();
			Element.hide(div);
			effectFunc.call(this, Object.extend({targetId: div.id}, params || {}));
		}
	}
}

function showModalPanelWithEffect(panelId, showEffect, params) {
 applyModalPanelEffect(panelId, showEffect, params, true);
}

function hideModalPanelWithEffect(panelId, hideEffect, params) {
	var _params = params;
	_params['afterFinish'] = function(){Richfaces.hideModalPanel(panelId)};
	applyModalPanelEffect(panelId, hideEffect, params, false);
}

function hideImagePreview(panelId, imageId, hideEffect) {
	hideModalPanelWithEffect(panelId,hideEffect,{duration:0.5});
	//Richfaces.hideModalPanel('imageViewModalPanel');
	document.getElementById(imageId).src='';
}

/**
 * This function recursively checks for fields 
 * and resets their values to a default value.
 */
function resetForm(parent) {
	if (!parent) {
		return;
	}
	var element = null;
	var type = null;
	for (var i=0; i < parent.childNodes.length; i++) {
		element = parent.childNodes[i];
		type = element.nodeName.toLowerCase();
		if (type == "input") {
			type = element.getAttribute("type");
			if (type == "text") {
				element.value = '';
			} else if (type == "password") {			
				element.value = '';				
			} else if (type == "file") {
				element.value = '';
			} else if (type == "checkbox") {
				element.checked = false;
			} else if (type == "radio") {
				element.checked = false;
			}
		} else if (type == "select") {
				element.selectedIndex = 0;			
		} else if (type == "textarea") {			
				element.value = '';
		} else if (element.childNodes.length > 0) {
			resetForm(element);
		}
	}
}

function enableButtons(form) {
	for (var i=0; i < form.elements.length; i++) {
		var element = form.elements[i];
		type = element.nodeName.toLowerCase();
		if (type == "input") {
			type = element.getAttribute("type");
			if (type == "submit") {
				element.disabled = false;
			}
		}
	}
}

function disableButtons(form) {
	for (var i=0; i < form.elements.length; i++) {
		var element = form.elements[i];
		type = element.nodeName.toLowerCase();
		if (type == "input") {
			type = element.getAttribute("type");
			if (type == "submit") {
				element.disabled = true;
			}
		}
	}
}

function printObjectsSelected(output, sgcomponent){
	output.innerHTML=sgcomponent.getSelectedItems().pluck('fullName');		
}

function ismaxlength(obj, mlength, countElement){
	var originalLength = obj.value.length;
	if (obj.getAttribute && originalLength > mlength) {
		obj.value=obj.value.substring(0,mlength);
	}
	if (countElement) {
		var remaining = mlength - originalLength;
		if (remaining < 0) {
			remaining = 0;
		}
		countElement.innerHTML=remaining;
	}
}