












var contextHelp = "";
var faq = "";


function getEl(id)
{
	return document.getElementById(id);
}

function hideEl(element) //element or elementId
{
	if (element)
	{
		if (typeof(element) == "string") //if id is passed for element
		{
			if (!getEl(element))
			{
				return;
			}
			element = getEl(element);
		}

		element.style.display = 'none';
	}
}


function showEl(element, style) //element or elementId; style - not compulsory, if set, could be block, inline, empty string etc.
{
	if (element)
	{
		if (typeof(element) == "string") //if id is passed for element
		{
			if (!getEl(element))
			{
				return;
			}
			element = getEl(element);
		}

		element.style.display = (style) ? style : '';
	}
}

//adds a hover class to element
function hoverEl(element, hoverClassName)
{
	if (element)
	{
		element.className += " " + hoverClassName;
	}
}

//removes hover class
function unhoverEl(element, hoverClassName)
{
	if (element)
	{
		element.className = element.className.replace(" " + hoverClassName, "");
	}
}

//calls a function if a certain key is pressed
function doOnKeyPress(event, requiredKeycode, functionToTrigger)
{
	var pressedKeycode = (navigator.product == "Gecko") ? event.which : window.event.keyCode;

	//console.log(event + ', ' + functionToTrigger + ' - ' + pressedKeycode + ' ?= ' + requiredKeycode);
    if (pressedKeycode == requiredKeycode)
    {
    	eval(functionToTrigger);
    }
}

function getElementPositionLeft(elem)
{
	var x=0;
	if (elem.calcLeft)
		return elem.calcLeft;
	var oElem=elem;
	while(elem){
		 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderLeftWidth);
		 x+=elem.offsetLeft;
		 elem=elem.offsetParent;
	  }
	oElem.calcLeft=x;
	return x;
}

function getElementPositionTop(elem)
{
	var x=0;
	 if (elem.calcTop)
	 	return elem.calcTop;
	 var oElem=elem;
	 while(elem){
	 	 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderTopWidth);
		 x+=elem.offsetTop;
	         elem=elem.offsetParent;
 	 }
 	 oElem.calcTop=x;
 	 return x;
}


function getVisibleWidth()
{
	if (!Ext.isIE)
	{
		return window.innerWidth;
	}
	else
	{
		return document.body.offsetWidth;
	}
}


function getVisibleHeight()
{
	if (!Ext.isIE)
	{
		return window.innerHeight;
	}
	else
	{
		return document.body.offsetHeight;
	}
}


//center vertically to the visible part of the page
function vCenter(extEl)
{
	if (extEl)
	{
		var elHeight = extEl.getHeight();
		var winTop = Ext.getBody().getScroll().top;

		var elTop = (elHeight < getVisibleHeight()) ? winTop + (getVisibleHeight() - elHeight)/2 : winTop;

		if (Ext.isFunction(extEl.setTop))
		{
			extEl.setTop(elTop);
		}
		else if (Ext.isFunction(extEl.setPosition))
		{
			extEl.setPosition(infoWindow.getPosition(true)[0], elTop);
		}
	}
}


/**
*  Opens a popup Window with parameters location and optional framename
*/

//Popup, no size given
function popupWithHandle(location, framename)
{
	var popupWindowParameters = "height=702,width=638, top=0, left=5, channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0";
	var popupWindow = window.open(location,"",popupWindowParameters, framename?framename:"");
	return popupWindow;
}

function popup(location, framename)
{
	popupWithHandle(location, framename);
}

//Popup, size given
function popupSizedWithHandle(location, framename, width, height)
{
	var popupWindowParameters = "height=" + height + ",width=" + width + ",top=0, left=5, channelmode=0,dependent=0,directories=0,fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=1,status=0,toolbar=0";
	var popupWindow = window.open(location,"",popupWindowParameters, framename?framename:"");
	return popupWindow;
}

function popupSized(location, framename, width, height)
{
	popupSizedWithHandle(location, framename, width, height);
}

function resizeWindowToStandardPopup()
{
	resizePopup(840, 702)
}

function resizePopup(w, h)
{
	try {
		//according to DEKA-5550
		var maxPopupWidth = 900;
		var maxPopupHeight = 648;

		if (w > maxPopupWidth || h > maxPopupHeight)
		{
			//console.log('screen dimensions: ' + screen.width + 'x' + screen.height);
			//console.log('popup desired dimensions: ' + w + 'x' + h);

			if (screen.width > 1024)
			{
				if (w > screen.width * 90/100)
				{
					w = screen.width * 90/100;
				}
				if (h > screen.height * 90/100)
				{
					h = screen.height * 90/100;
				}
			}
			else
			{
				if (w > maxPopupWidth)
				{
					w = maxPopupWidth;
				}
				if (h > maxPopupHeight)
				{
					h = maxPopupHeight;
				}
			}
		}

		//console.info('popup final dimensions: ' + w + 'x' + h);
		window.resizeTo(w, h);
	}
	catch (e){}
}


function createMMSAlertWindow(text, title, width, closable, msgClassAdd)
{
	msgClass = 'mmsMsgText';
	if (msgClassAdd != null && typeof(msgClassAdd) != 'undefined')
	{
		msgClass = msgClass + ' ' + msgClassAdd;
	}
	var alertWin = new Ext.Window({

		bodyCfg		 :
		{
			tag		 : 'div',
			children :
			[{
				tag 	 : 'table',
				cls 	 : 'mmsMsgWindow',
				children :
				[{
					tag 	 : 'tr',
					children :
					[
					{
						tag 	 : 'td',
						cls 	 : 'mmsMsgSign',
						children :
						[{
							tag : 'div'
						}]
					},
					{
						tag  : 'td',
						cls  : msgClass,
						html : text
					}
					]
				}]
			}]
		},
		bodyCssClass : 'mmsMsgBody mmsAttentionBig',
		title        : title,
		width        : (width) ? width : 450,
		modal		 : true,
		resizable 	 : false,
		closable 	 : (closable == false)?false:true
    });

	return alertWin;
}

function mmsAlert(text, title, width)
{
	var alertWin = createMMSAlertWindow(text, title, width);

	alertWin.addButton(
		{text: 'Close'},
		function() {alertWin.close()}
	);

	alertWin.show();

	return alertWin;
}

function mmsErrorsLayer(messages, windowTitle, messageTitle, messageClass, width)
{
	if (!messageClass)
	{
		messageClass = 'tabellentextred';
	}
	var text = '';
	if (messages != null)
	{
		if (Ext.isArray(messages))
		{
			Ext.each(messages, function(item, index){
				text = '<p class="' + messageClass + '">' + item + '</p>';
			});
		}
		else
		{
			text = messages;
		}
	}
	if (messageTitle!= null && typeof(messageTitle) != 'undefined')
	{
		text = '<p class="bold">' + messageTitle + '</p>' + text;
	}
	var alertWin = createMMSAlertWindow(text, title, width, null, 'mmsErrorsMsgText');

	alertWin.addButton(
		{text: 'Close'},
		function() {alertWin.close()}
	);

	alertWin.show();

	return alertWin;
}


	function getRequestedPath(uri)
	{
		var context = parseCurrentContext();
		var cookieActive = false;

		if((context[1] == "") || (context[1]==null))
		{
			cookieActive = true;
		}

		if(context[0] == "/")
			context[0] = "";

		if(cookieActive == true)
		{
			var path =  context[0]+uri;
			return path;
		}
		if(cookieActive == false)
		{
			var resultURI = new Array();
			for(var i=0; i < uri.split("?").length; i++)
			{
				resultURI[i] = uri.split("?")[i];
			}

			if((resultURI[1] == "") || (resultURI[1] == null))
			{
				var path = context[0]+resultURI[0]+";"+context[1];
			}
			else
			{
				var path = context[0]+resultURI[0]+";"+context[1]+"?"+resultURI[1];
			}

			return path;
		}
	}

	function parseCurrentContext()
	{
		var context = '/';
		var resultContext = new Array();
		for(var i=0; i < context.split(";").length; i++)
		{
            resultContext[i] = context.split(";")[i];
		}
		return resultContext;
	}

 /**
  * Close all opened dropdown menus
  */
document.onclick = hideOption;


function imgChangeOn(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_hl.gif','.gif');

    img.src = imgsrc.replace('.gif','_hl.gif');

}

function imgChangeOff(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_hl.gif','.gif');

}



function imgChangeOnJPG(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_hl.jpg','.jpg');

    img.src = imgsrc.replace('.jpg','_hl.jpg');

}

function imgChangeOffJPG(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_hl.jpg','.jpg');

}





function imgChangeOn2(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_b2.jpg','_a.jpg');

    img.src = imgsrc.replace('_a.jpg','_b2.jpg');

}

function imgChangeOff2(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_b2.jpg','_a.jpg');

}

function imgChangeOn3(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_b.gif','.gif');

    img.src = imgsrc.replace('.gif','_b.gif');

}

function imgChangeOff3(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_b.gif','.gif');

}

function imgChangeOn4(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_a.gif','.gif');

    img.src = imgsrc.replace('.gif','_a.gif');

}

function imgChangeOff4(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_a.gif','.gif');

}

function imgChangeOn5(name) {

    img = eval('document.images.'+name);

    imgsrc = img.src.replace('_a.jpg','.jpg');

    img.src = imgsrc.replace('.jpg','_a.jpg');

}

function imgChangeOff5(name) {

    img = eval('document.images.'+name);

    img.src = img.src.replace('_a.jpg','.jpg');

}

function spacer(flag){

        if (document.layers || flag=="all") {

                document.write ('<font size=1>');

                for (n=0;n<30;n++) {

                document.write ('&nbsp;&nbsp; ');

                }

                document.write ('</font>');

        }

}



function showPosLeft(elementname) {

                left = 0;

                pos=document.getElementById(elementname);

                while (pos.offsetParent!=null) {

                        pos=pos.offsetParent;

                        left= left + pos.offsetLeft;

                }

                return left

        }



        function showPosTop(elementname) {



                y = 0;

                pos=document.getElementById(elementname);;

                while (pos.offsetParent!=null) {

                        pos=pos.offsetParent;

                        y= y + pos.offsetTop;

                }

                return y

        }



        //global

        var optionname='';

        function setOptionname(name) {

                optionname=name;

        }



        function hideOption() {

                if (optionname && document.getElementById('optioncontent'+optionname).style.visibility=='visible') {

                        showOption(optionname,0,0);

                }

        }



        function showOption(name,difx,dify)
        {
                if (name!=optionname) {

                        hideOption();

                }

                optionname='';



                x=showPosLeft('option'+name);

                document.getElementById('optioncontent'+name).style.left=(x+difx);

                //document.getElementById('optioncontent'+name).style.setAttribute('left',x+difx);



                y=showPosTop('option'+name);



                //document.getElementById('optioncontent'+name).style.setAttribute('top',y+dify);

                document.getElementById('optioncontent'+name).style.top=y+dify;





                if (document.getElementById('optioncontent'+name).style.visibility!='visible') {

                        document.getElementById('optioncontent'+name).style.visibility='visible';

                } else {

                        document.getElementById('optioncontent'+name).style.visibility='hidden';

                }

                setTimeout('setOptionname(\''+ name +'\')',300);

        }


       function hideOption2()
       {
	       if (optionname && document.getElementById('optioncontent'+optionname).style.visibility=='visible') {
	               showOption2(optionname,0,0);
	       }
       }



        function showOption2(name, difx, dify)
        {
            if (name!=optionname) {
                    hideOption2();
            }

            optionname='';

			var element = $('option'+name);

            document.getElementById('optioncontent'+name).style.left = element.positionedOffset()[0] + difx;
            document.getElementById('optioncontent'+name).style.top = element.positionedOffset()[1] + dify;


            if (document.getElementById('optioncontent'+name).style.visibility!='visible') {
                    document.getElementById('optioncontent'+name).style.visibility='visible';
            } else {
                    document.getElementById('optioncontent'+name).style.visibility='hidden';
            }

            setTimeout('setOptionname(\''+ name +'\')',300);
        }



    function showContextHelpForPopup(contextHelp) {
	    if (contextHelp !='' ) {
	    	

	    	
	    	var helpLink = "/ShowContextHelp.do"+"?contextHelp="+contextHelp;
	    	

	        popup(helpLink);
	    }else {
	        var helpMessage = "Currently no help is available for this page.";
	        alert(helpMessage);
	    }
    }

	 // Removes leading whitespaces
	function leftTrim( value )
	{
		var re = /\s*((\S+\s*)*)/;
		return value.replace(re, "$1");
	}

	// Removes ending whitespaces
	function rightTrim( value )
	{
		var re = /((\s*\S+)*)\s*/;
		return value.replace(re, "$1");
	}

	// Removes leading and ending whitespaces
	function trim( value )
	{
		return leftTrim(rightTrim(value));
	}

	//Check for float numbers
	function isFloatNumber(value)
	{
		var isFloatNumber = false;
		var strValue = value+"";

		if (strValue)
		{
			var trimPattern = new RegExp("^\\s*|\\s*$", "g");
			var trimmedValue = strValue.replace(trimPattern,'');

			var numPattern = new RegExp("^[+,-]?\\d+(\\.\\d+)?([E,e][+,-]?\\d+)?$", "g");
			isFloatNumber = numPattern.test(trimmedValue);

			if (isFloatNumber)
			{
				var numValue = parseFloat(trimmedValue,10);
				isFloatNumber = isFloatNumber && !isNaN(numValue);
				isFloatNumber = isFloatNumber && isFinite(numValue);
			}
		}

		return isFloatNumber;
	}

	//Check for integer numbers
	function isIntegerNumber(value)
	{
		var isIntegerNumber = false;
		var strValue = value+"";

		if (strValue)
		{
			var trimPattern = new RegExp("^\\s*|\\s*$", "g");
			var trimmedValue = strValue.replace(trimPattern,'');

			var numPattern = new RegExp("^[+,-]?\\d+$", "g");
			isIntegerNumber = numPattern.test(trimmedValue);

			if (isIntegerNumber)
			{
				var numValue = parseInt(trimmedValue,10);
				isIntegerNumber = isIntegerNumber && !isNaN(numValue);
				isIntegerNumber = isIntegerNumber && isFinite(numValue);
			}
		}

		return isIntegerNumber;
	}

	/* Terzial/Quartioal dates functions */

	function setPeriodFromOptions(upperBoundValue, inputsIDSuffix)
	{
		var suffix = (inputsIDSuffix)?inputsIDSuffix:'';

		var fromDateSelector = document.getElementById("periodValidDateFromSelect" + suffix);
		if (fromDateSelector)
		{
			fromDateSelector.length = 0;
			addOptionToSelect(fromDateSelector, new Option(pleaseChooseText,'-1'));

			var boundFound = false;

			for(var i=0; i < periodFromOptionsArray.length;i++)
			{
				if (!boundFound)
				{
					if (upperBoundValue == periodFromOptionsArray[i].value)
					{
						addOptionToSelect(fromDateSelector, periodFromOptionsArray[i]);
						boundFound = true;
						break;
					}
					else
					{
						addOptionToSelect(fromDateSelector, periodFromOptionsArray[i]);
					}
				}
			}
		}
	}

	function setPeriodToOptions(bottomBoundValue, inputsIDSuffix)
	{
		var suffix = (inputsIDSuffix)?inputsIDSuffix:'';

		var toDateSelector = document.getElementById("periodValidDateToSelect" + suffix);
		if (toDateSelector)
		{
			toDateSelector.options.length = 0;
			addOptionToSelect(toDateSelector, new Option(pleaseChooseText,'-1'));

			var boundFound = false;
			if (!bottomBoundValue || bottomBoundValue == -1)
			{
				boundFound = true;

			}

			for(var i=0; i < periodToOptionsArray.length;i++)
			{
				if (boundFound)
				{
					addOptionToSelect(toDateSelector, periodToOptionsArray[i]);
				}
				else
				{
					if (bottomBoundValue == periodToOptionsArray[i].value)
					{
						addOptionToSelect(toDateSelector, periodToOptionsArray[i]);
						boundFound = true;
					}
				}
			}
		}

	}

	/* Note there is some difference in selectElement.add() function in IE and all other browsers*/
	function addOptionToSelect(selectElement, option)
	{
		try
	    {
		    selectElement.add(option,null); // standards compliant
    	}
 		catch(ex)
    	{
			try
	    	{
		    	selectElement.add(option); // IE only
    		}
	 		catch(ex)
	    	{
	    		var newOption = new Option(option.text,option.value);
    			selectElement.add(newOption); // IE complains when adding same option to different select
		    }
	    }
  	}
	/* END of Terzial/Quartioal dates functions */



	function fireEventWithDocObj(doc,element,event)
	{
	    if (doc.createEventObject)
	    {
	        // dispatch for IE
	        var evt = doc.createEventObject();
	        return element.fireEvent('on'+event,evt)
	    }
	    else
	    {
	        // dispatch for firefox + others
	        var evt = doc.createEvent("HTMLEvents");
	        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
	        return !element.dispatchEvent(evt);
	    }
	}

	/*  Prefill select box with certain option if none is selected*/
	function prefillSelectBoxes(selectBoxes)
	{
		for(var i = 0; i < selectBoxes.length; i++)
		{
			var boxId = selectBoxes[i];

			try
			{
				var box = document.getElementById(boxId);

				if (box)
				{
					if (box.selectedIndex == 0 && box.options.length == 2)
					{
						box.selectedIndex = 1;
					}
				}
			}
			catch(e)
			{
				if ((typeof(console)!='undefined'))
				{
					if (console)
						console.error(e);
				}
			}
		}
	}


	/* Show Custom Text */
	function showContextHelp()
	{
	    if (contextHelp !='' ) {
	    	

	    	
	    	var helpLink = "/ShowContextHelp.do"+"?contextHelp="+contextHelp;
	    	

	        popup(helpLink);
	    }else {

	    	
	    		

	    		
			        var helpMessage = "Currently no help is available for this page.";
			        alert(helpMessage);
		        
	    	

	    	
	    }
	}

	function getSystemNameFromContextHelpParameter(name)
	{
		name = name.substring(name.lastIndexOf('/') + 1);
		name = name.substring(0, name.lastIndexOf('.'));

		return name;
	}

	function showContextHelpByLanguage(contextHelpURL,contextHelpLanguage)
	{
	    if (contextHelpURL !='' ) {
	    	

	    	
	    	var helpLink = "/ShowContextHelp.do"+"?contextHelp="+contextHelpURL+"&contextHelpLanguage="+contextHelpLanguage;
	    	

	    	window.location=helpLink;

	    }else {
	        var helpMessage = "Currently no help is available for this page.";
	        alert(helpMessage);
	    }
	}

	function validate_email(fieldValue)
	{
		try
		{
		    regexp = '([a-zA-Z0-9_+!-#$%&\'*/=?^`}{|~]+[.]?)+@[a-z0-9.-]+\\.[a-z]{2,4}$';
		    var reg = new RegExp(regexp);
		    if (reg.test(fieldValue))
		    {
		        var i = 0;
		        while(i < fieldValue.match(regexp).length)
				{
					if(fieldValue.match(regexp)[i] == fieldValue)
					{
						return true;
					}
					i++;
				}
		        return false;
		    }
		    else
		    {
		        return false;
		    }
		}
		catch (e)
		{
			alert(e);
			return false;
		}
	}

	function formatFloat(aFloat, aPrecision)
	{


		var thousand_sep = ",";
		var decimal_point = ".";
		var default_precision = 2;

		try
		{
			precision = default_precision;
			if(!isNaN(aPrecision))
			if(Math.abs(aPrecision)<=10)
			precision = aPrecision;
		}
		catch(e)
		{
			precision = default_precision;
		}
		try
		{
			number = parseFloat(aFloat+'');
			if(isNaN(number))
				return "NaN";
		}
		catch(e)
		{
			return "NaN";
		}

		number = Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision);
		integerpart = '' + ((number<0) ? Math.ceil(number) : Math.floor(number));
		decimalpart = Math.abs(Math.round((number - integerpart)*(Math.pow(10, precision))));
		if(decimalpart<10)
			decimalpart="0"+decimalpart;
		if(decimalpart==0)
			decimalpart="00";
		var buff = "";
		for(j=-1, i=integerpart.length; i>=0; i--, j++)
		{
			if((j%3) == 0 && j>1)
			buff = thousand_sep + buff;
			buff = integerpart.charAt(i) + buff;
		}
		if(precision>0)
			return buff+decimal_point+decimalpart;
		return buff;
	}





function scaleImage(img, maxW, maxH)
{
	try
	{
		var realH = img.height;
		var realW = img.width;
		var koefW = maxW / realW;
		var koefH = maxH / realH;

	    var koef = Math.min(koefH, koefW);

	    if(koef < 1)
		{
	     	img.width = koef * img.width;
		}
	}catch(e){}

}

function copyTextToClipBoard(text)
{
	window.clipboardData.setData('Text',text);
}

function getPositionLeft(elem)
{
	var x=0;
	var oElem=elem;
	while(elem)
	{
		 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderLeftWidth);
		 x+=elem.offsetLeft;
		 elem=elem.offsetParent;
	}
	return x;
}

function getPositionTop(elem)
{
	var x=0;
	 if (elem.calcTop)
	 	return elem.calcTop;
	 var oElem=elem;
	 while(elem){
	 	 if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0))
		 	x+=parseInt(elem.currentStyle.borderTopWidth);
		 x+=elem.offsetTop;
	         elem=elem.offsetParent;
 	 }
 	 oElem.calcTop=x;
 	 return x;
}

function getElementHeight(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	}
}

function getElementWidth(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.width;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) {
			xPos = elem.style.pixelWidth;
		} else {
			xPos = elem.offsetWidth;
		}
		return xPos;
	}
}



function getEvent(evt) {
   	return (evt) ? evt : ((window.event) ? event : null);
}

function getEventSource(evt)
{
	if (evt.target)
		return evt.target;
	if (evt.srcElement)
		return evt.srcElement;

	return undefined;
}

function showIndicator(indicatiorContainerId)
{
  	var indicatorContainer = document.getElementById(indicatiorContainerId);

	if (indicatorContainer) {
		indicatorContainer.style.display = 'inline';
	}
}

function hideIndicator(indicatiorContainerId)
{
  	var indicatorContainer = document.getElementById(indicatiorContainerId);

	if (indicatorContainer) {
		indicatorContainer.style.display = 'none';
	}
}

function reloadIndicator(indicatorId)
{
	var indicator = document.getElementById(indicatorId);
	if (indicator) {
		indicator.src = indicator.src;
	}
}

function disableButton(buttonEnabledId, buttonDisabledId)
{
	var buttonEnabled = document.getElementById(buttonEnabledId);
	var buttonDisabled = document.getElementById(buttonDisabledId);

	if(buttonEnabled && buttonDisabled)
	{
		buttonEnabled.style.display = 'none';
		buttonDisabled.style.display = 'inline';
	}
}

var serviceLinkIframe = null;
function showHideServiceLinks()
{
	var serviceLinksItem = document.getElementById('serviceLinksItem');
	var serviceLinksLink = document.getElementById('serviceLinksLink');
	var serviceLinks = document.getElementById('navigationRight');

	//ie6 combobox iframe
	if (serviceLinkIframe == null) {
		serviceLinkIframe = document.createElement('iframe');
		serviceLinkIframe.src="javascript:'';";
		serviceLinkIframe.marginwidth="0";
		serviceLinkIframe.marginheight="0";
		serviceLinkIframe.align="bottom";
		serviceLinkIframe.scrolling="no";
		serviceLinkIframe.frameborder="0";
		serviceLinkIframe.className = "transpIframe";
		getEl('containerTop').appendChild(serviceLinkIframe);
	}

	if (serviceLinks.style.display == 'none') {
		serviceLinks.style.display = 'block';
		serviceLinks.style.top = getPositionTop(serviceLinksItem) + ($('serviceLinksItem').getHeight() + 2);
		serviceLinks.style.left = getPositionLeft(serviceLinksItem) - ($('navigationRight').getWidth() - $('serviceLinksItem').getWidth());
		serviceLinksItem.className = 'serviceLinksItemBrowsed';
		serviceLinksLink.className = 'expandedLink';

		//showing ie6 combobox iframe
		//serviceLinkIframe.style.top = $(serviceLinks).positionedOffset()[1];
		//serviceLinkIframe.style.left = $(serviceLinks).positionedOffset()[0];
		serviceLinkIframe.style.top = serviceLinks.style.top;
		serviceLinkIframe.style.left = serviceLinks.style.left;

		serviceLinkIframe.style.width = $(serviceLinks).getWidth();
		serviceLinkIframe.style.height = $(serviceLinks).getHeight();
		serviceLinkIframe.style.display = "block";
	} else {
		//hiding ie6 combobox iframe
		serviceLinkIframe.style.top = "0px";
		serviceLinkIframe.style.left = "0px";
		serviceLinkIframe.style.display = "none";
		serviceLinkIframe.width = "0px";
		serviceLinkIframe.height = "0px";

		serviceLinks.style.display = 'none';
		serviceLinksItem.className = 'serviceLinksItemClosed';
		serviceLinksLink.className = 'collapsedLink';

	}
}

function highlightMediaItem(mediaGUID, elementType)
{
	var elementToHighlight = document.getElementById(elementType + '_'+ mediaGUID);

	if (lastHighlightedMedia && elementToHighlight && document.getElementById(elementType + '_' + lastHighlightedMedia)) {
		var oldClassName = document.getElementById(elementType + '_' + lastHighlightedMedia).className;
		var newClassName = oldClassName.replace(/lastSelected/, "");
		document.getElementById(elementType + '_' + lastHighlightedMedia).className = newClassName;
	}

	if (elementToHighlight) {
		elementToHighlight.className += " lastSelected";
	}

	lastHighlightedMedia = mediaGUID;
}

var lastHighlightedMedia = null;

function isIE()
{
	if (navigator.appName == "Microsoft Internet Explorer") {
		return true;
	} else {
		return false;
	}
}

function stopEventPropagation(event)
{
	if(isIE())
		event.cancelBubble = true;
	else
		event.stopPropagation();
}


// resizes an iframe to its contents height
function resizeIframeToFitItsContent(iframe)
{
		if (isIE())
		{
			var resizeFunction = function()
			{
				iframe.height = document.frames[iframe.name].document.body.scrollHeight;
			};

			//on "onload" event body is not completely rendered - DEKA-5076
			var intervalId = setInterval(resizeFunction, 2000);

			var clearFunction = function()
			{
				clearInterval(intervalId);
			}

			var timeoutId = setTimeout(clearFunction, 10000);
		}
		else
		{
			iframe.height = window.frames[iframe.name].document.body.scrollHeight + 5;
		}
}


function resizeIframeToFitItsContentV2(currentfr, noExtraHeight)
{
	if (currentfr && !window.opera)
	{
		currentfr.style.display = "block";
		var getFFVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
		var FFextraHeight = parseFloat(getFFVersion) >=0.1 ? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

		//currentfr.height = 0;

		if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight)
		{
			currentfr.height = currentfr.contentDocument.body.offsetHeight + FFextraHeight;
		}
		else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
		{
			if (noExtraHeight)
			{
				currentfr.height = currentfr.Document.body.scrollHeight;
			}
			else
			{
				currentfr.height = currentfr.Document.body.scrollHeight + 12;
			}
		}

		if (currentfr.addEventListener)
		{
			currentfr.addEventListener("load", readjustIframe, false)
		}
		else if (currentfr.attachEvent)
		{
			currentfr.detachEvent("onload", readjustIframe) // Bug fix line
			currentfr.attachEvent("onload", readjustIframe)
		}

	}


}

function resizeIframeToFitItsContentV3(currentfr)
{
	if (currentfr && !window.opera)
	{
		currentfr.style.display = "block";
		var getFFVersion = navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
		var FFextraHeight = parseFloat(getFFVersion) >=0.1 ? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers

		if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
		{
			currentfr.height = currentfr.contentDocument.body.offsetHeight + FFextraHeight+100;
		}
		else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
		{
			currentfr.height = currentfr.Document.body.scrollHeight + 12+120;
		}

		if (currentfr.addEventListener)
		{
			currentfr.addEventListener("load", readjustIframe, false)
		}
		else if (currentfr.attachEvent)
		{
			currentfr.detachEvent("onload", readjustIframe) // Bug fix line
			currentfr.attachEvent("onload", readjustIframe)
		}

	}

}

function readjustIframe(loadevt)
{
	var crossevt = (window.event)? event : loadevt
	var iframeroot = (crossevt.currentTarget) ? crossevt.currentTarget : crossevt.srcElement

	if (iframeroot)
	{
		resizeIframeToFitItsContentV2(iframeroot);
	}
}

function alignObjectDetailedViewWithNoIcons(id)
{
	if (document.getElementById('mediaDescription_' + id))
	{
		document.getElementById('mediaDescription_' + id).className = 'mediaDescriptionWithoutIcons text01';
	}
}

function isImageLoaded(img)
{
	// During the onload event, IE correctly identifies	any images that
	// weren't downloaded as not complete. Others should too. Gecko-based
	// browsers act like NS4 in that they report this incorrectly.
	if (!img.complete) {
		return false;
	}

	// However, they do have two very useful properties: naturalWidth and
	// naturalHeight. These give the true size of the image. If it failed
	// to load, either of these should be zero.
	if (typeof img.naturalWidth	!= 'undefined' && img.naturalWidth	== 0) {
		return false;
	}

	// No other way of checking: assume it's ok.
	return true;
}


 function filterPressedKeys(evt, allowedKeys)
 {
    var keycode;
    if (navigator.product == "Gecko")
    {
      keycode=evt.which;
    }
    else
    {
      keycode=window.event.keyCode;
    }

	if (keycode) {
		for (var i = 0; i < allowedKeys.length; i++)
		{
			if (keycode == allowedKeys[i])
			{
				return true;
			}
		}
	}
    	return false;
}


/* GraphicTransformation utility functions */

var GraphicTransformation = new function(){
	this.pixelsToCentimeters = function(pixels, resolution)
	{
		if (resolution == 0)
		{
			resolution = parseInt(72);
		}

	  		var centimeters = parseFloat(2.54) * pixels/resolution;
	  		return this.formatFloat(centimeters, 2);
	}


	this.milimetersToPixels = function(milimeters, resolution)
	{
		if (resolution == 0)
		{
			resolution = parseInt(72);
		}

		var centimeters = parseFloat(milimeters/10);
		var pixels = (centimeters * resolution) / (2.54);
	 	return Math.round(pixels);
	}

	this.getScaleRatio = function(originalWidth, originalHeight, scaleWidth, scaleHeight)
	{
	  	var ratio;

	  	var originalAspectRatio = this.getAspectRatio(originalWidth, originalHeight);
	  	var scaleAspectRatio = this.getAspectRatio(scaleWidth, scaleHeight);

		if (originalAspectRatio < scaleAspectRatio)
		{
			ratio = scaleHeight / originalHeight;
		}
		else
		{
			ratio =  scaleWidth / originalWidth;
		}
		return ratio;
	}

	this.getAspectRatio = function(width, height)
	{
		return width / height;
	}

	this.formatFloat = function(floatValue, positionsAfterDecimalPoint)
	{
	    var formatted = floatValue;
	    var m = Math.pow(10, positionsAfterDecimalPoint);
	    formatted = Math.round(formatted * m);
	    formatted = formatted/m;
	    return formatted;
	}
};

/* End of GraphicTransformation utility functions */


if (typeof(Brandmaker) === 'undefined') {
	Brandmaker = {};
}

if (!Brandmaker.chainEventHandler) {

	Brandmaker.chainEventHandler = function(element, event, handler) {

		if (!element) {
			return;
		}

		var eventName = 'on' + event;
		var previousHandler = element[eventName];

		if (previousHandler) {

			element[eventName] = function() {
					previousHandler();
					handler();
				}

		} else {

			element[eventName] = function() {
					handler();
				}
		}
	}
}

if (!Brandmaker.onReady) {

	Brandmaker.onReady = function(fn) {

		if (Ext.isIE6) {

			Brandmaker.chainEventHandler(Ext.getBody().dom, 'load', fn);

		} else {

			Ext.onReady(fn);
		}
	}
}

function objectViewMouseOver(objectId)
{
	var domId = 'objectView_' + objectId;
	objectViewMouseOverDOMId(domId);
}

function objectViewMouseOverDOMId(objectId)
{
	var currentObjectView = document.getElementById(objectId);

	if (currentObjectView && currentObjectView.className.indexOf('objectViewHovered') == -1)
	{
		currentObjectView.className += ' objectViewHovered';
	}
}

function objectViewMouseOut(objectId)
{
	var currentObjectView = document.getElementById('objectView_' + objectId);

	if (currentObjectView)
	{
		var hoveredClassIndex = currentObjectView.className.indexOf('objectViewHovered');

		if (hoveredClassIndex != -1)
		{
			currentObjectView.className = currentObjectView.className.substring(0, hoveredClassIndex - 1);
		}
	}
}



// this function determines whether the event is the equivalent of the microsoft // mouseleave or mouseenter events.
// (this way filter redundant fired mouseout events)
function isMouseLeaveOrEnter(e, handler)
{
	if (e.type != 'mouseout' && e.type != 'mouseover') return false;
	var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
	try
	{
		while (reltg && reltg != handler) reltg = reltg.parentNode;
	}catch(error){}
	return (reltg != handler);
}


// universal fire event
function fireEvent(element, event)
{
	if (document.createEventObject)
	{
		// dispatch for IE
		var evt = document.createEventObject();

		try
		{
			return element.fireEvent('on' + event, evt)
		}
		catch(error)
		{
			// Error: No such interface supported (IE)
			element.fireEvent('on' + event);
		}
	}
	else
	{
		// dispatch for firefox + others
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(event, true, true ); // event type,bubbling,cancelable
		return !element.dispatchEvent(evt);
	}
}



/* create ext layer
	_windowTitle - the title bar text
	_iframeId - id of the frame (non-existing frame)
	_width and _height - winwod sizes
	_url is mandatory if no _beforeHideHandler and _beforeShowHandlerspecified
	_beforeHideHandler and _beforeShowHandler - the default 'beforeHideHandler' will set the iframe's src to empty html and
		the default 'beforeShowHandler' - to the specified _url

*/
function createExtLayerInIframe(_windowTitle, _iframeId, _width, _height, _url, _beforeHideHandler, _beforeShowHandler)
{
	var window = new Ext.Window({
				title : _windowTitle,
				id: 'window_' + _iframeId,
				bodyCfg:{tag:'div'        //Customize the body layout
		             ,cls:'x-panel-body'
		             ,children:[{
		                 tag:'iframe',
		                 id  : _iframeId,
		                 name : _iframeId,
		                 src: '/content/empty.html',
		                 frameBorder:0,
		                 width:'100%',
		                 height:'100%',
		                 style: {overflow:'auto'}
		            }]
		        },
		        width : _width,
		        height: _height,
                stateful:false,
                autoScroll : true,
                footer:false,
                closeAction:'hide',
                header:true,
	            minimizable : false,
                maximizable : false,
                draggable : true,
                resizable:false,
                modal: true,
                layout : 'fit',
                shim:true
	});

	if (_beforeHideHandler)
	{
		window.on('beforehide', _beforeHideHandler);
	}
	else
	{
		window.on('beforehide', function(){
			Ext.get(_iframeId).dom.src = "/content/empty.html";
		});
	}


	if (_beforeShowHandler)
	{
		window.on('beforeshow', _beforeShowHandler);
	}
	else
	{
		window.on('beforeshow', function(){
			if (_url.indexOf('?') == -1)
				_url = _url + '?';
			else
				_url = _url + '&';

			Ext.get(_iframeId).dom.src = _url + "timestamp=" + (new Date()).getTime();
		});
	}


	return window;
}

/* show/hide list */
function showHideListByLinkPress(listId, linkId)
{
  	var list = document.getElementById(listId);
    var link = document.getElementById(linkId);
    if(list && link)
    {
	    var displayState = list.style.display;
	    if(displayState == "none")
	    {
	        list.style.display = "block";
	        link.className = "expandedLink";
	    }
	    else
	    {
	        list.style.display = "none";
	        link.className = "collapsedLink";
	    }
	}
}

function isDefined(object, variable){

	//check input data
	if (object ==null || typeof(object) == 'undefined') return false;
	if (variable==null || typeof(variable) == 'undefined') return false;

	//check member data
	var member = object[variable];
	if (member==null || typeof(member) == 'undefined') return false;

	//everything fine
	return true;
}


function scrollObjectVerticallyToElement(object, elementId)
{
	if (object && elementId && getEl(elementId))
	{
		Ext.get(object).scrollTo('top', 0);
		Ext.get(object).scrollTo('top', Ext.get(elementId).getTop());
	}
}


//standart layer functions
function showHideSimpleLayerToElement(layerId, alignToElement, position, distance)
{
	if (layerId && alignToElement && (position == 'top' || position == 'bottom' || position == 'right'))
	{
		if (!getEl(layerId).style.visibility || getEl(layerId).style.visibility == 'hidden')
		{
			var layer = getEl(layerId);

			if (layer)
			{
				if (!distance)
				{
					var distance = 3; //default distance
				}
				if (position == 'bottom')
				{
					var layerPositionLeft = getElementPositionLeft(alignToElement);
					var layerPositionTop = getElementPositionTop(alignToElement) + Ext.get(alignToElement).getHeight() + distance;
				}
				else if (position == 'top')
				{
					var layerPositionLeft = getElementPositionLeft(alignToElement);
					var layerPositionTop = getElementPositionTop(alignToElement) - (layer.offsetHeight + distance);
				}
				else if (position == 'right')
				{
					var layerPositionLeft = getElementPositionLeft(alignToElement) + Ext.get(alignToElement).getWidth() + distance;
					var layerPositionTop = getElementPositionTop(alignToElement);
				}

				layer.style.left = layerPositionLeft;
				layer.style.top = layerPositionTop;
				layer.style.visibility = 'visible';


				if (!Ext.isIE6)
				{
					document.onmouseup = hideSimpleLayer;
				}
				else
				{
					var layerExt = Ext.get(layer);
					var shim = layerExt.createShim();
					shim.setRegion(layerExt.getRegion());
					shim.setVisible(true);

					Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);
					document.onmouseup = function() {hideSimpleLayerIE6(shim)}
				}

			}
		}
		else
		{
			if (!Ext.isIE6)
			{
				document.onmouseup = hideSimpleLayer;
			}
			else
			{
				hideSimpleLayer(Ext.select('.ext-shim').first());
			}

		}
	}
}


// standart click-to-close layer functions
function showSimpleLayerToElement(layerId, alignToElement, position, distance)
{
	if (layerId && alignToElement && (position == 'bottom' || position == 'right' || position == 'top'))
	{
		var layer = getEl(layerId);

		if (layer)
		{
			if (!distance)
			{
				var distance = 3; //default distance
			}

			if (position == 'bottom')
			{
				var layerPositionLeft = getElementPositionLeft(alignToElement);
				var layerPositionTop = getElementPositionTop(alignToElement) + Ext.get(alignToElement).getHeight() + distance;
			}
			else if (position == 'right')
			{
				var layerPositionLeft = getElementPositionLeft(alignToElement) + Ext.get(alignToElement).getWidth() + distance;
				var layerPositionTop = getElementPositionTop(alignToElement);
			}
			else if (position == 'top')
			{
				var layerPositionLeft = getElementPositionLeft(alignToElement);
				var layerPositionTop = getElementPositionTop(alignToElement);
			}

			layer.style.left = layerPositionLeft;
			layer.style.top = layerPositionTop;
			layer.style.visibility = 'visible';


			if (!Ext.isIE6)
			{
				document.onmouseup = hideSimpleLayer;
			}
			else
			{
				var layerExt = Ext.get(layer);
				var shim = layerExt.createShim();
				shim.setRegion(layerExt.getRegion());
				shim.setVisible(true);

				Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);
				document.onmouseup = function() {hideSimpleLayerIE6(shim)}
			}

		}
	}
}

//standard click-to-close layer functions
function showSimpleLayerToElementExt(layer, alignToElement, position, layerEqAlignToElement, distance)
{
	layer = Ext.get(layer);
	alignToElement = Ext.get(alignToElement);

	if (layer && alignToElement)
	{
		if (!distance)
		{
			var distance = 1; //default distance
		}

		if (layerEqAlignToElement)
		{
			layer.setWidth(alignToElement.getWidth());
		}

		if (position == 'bl')
		{
			distance = [0, 1]
		}
		else if (position == 'tr')
		{
			distance = [1, 0];
		}

		layer.alignTo(Ext.fly(alignToElement), position, distance);
		layer.setStyle('visibility', 'visible');


		if (!Ext.isIE6)
		{
			document.onmouseup = hideSimpleLayer;
		}
		else
		{
			var layerExt = Ext.get(layer);
			var shim = layerExt.createShim();
			shim.setRegion(layerExt.getRegion());
			shim.setVisible(true);

			Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);
			document.onmouseup = function() {hideSimpleLayerIE6(shim)}
		}
	}

}


var dropDownVisible = false;
var dropDownClicked = false;
var dropDownId = '';

function showHideDropDownMenu(layerId, alignToElement, position, distance){

	if (layerId && alignToElement && (position == 'bottom' || position == 'right' || position == 'top')){

		var layer = getEl(layerId);

		if (layer){

			if (!distance){
				var distance = 3; //default distance
			}

			if (position == 'bottom'){
				var layerPositionLeft = getElementPositionLeft(alignToElement);
				var layerPositionTop = getElementPositionTop(alignToElement) + Ext.get(alignToElement).getHeight() + distance;
			} else if (position == 'right'){
				var layerPositionLeft = getElementPositionLeft(alignToElement) + Ext.get(alignToElement).getWidth() + distance;
				var layerPositionTop = getElementPositionTop(alignToElement);
			} else if (position == 'top'){
				var layerPositionLeft = getElementPositionLeft(alignToElement);
				var layerPositionTop = getElementPositionTop(alignToElement);
			}

			layer.style.left = layerPositionLeft;
			layer.style.top = layerPositionTop;
			layer.style.visibility = 'visible';

			if(dropDownId != layerId){
				dropDownVisible = false;
			}

			if(!dropDownVisible){
				layer.style.visibility = 'visible';
			} else {
			 	layer.style.visibility = 'hidden';
			}

			dropDownId = layerId;
			dropDownVisible = !dropDownVisible;
			dropDownClicked = true;

			if (!Ext.isIE6){
				document.onmouseup = function() {hideDropDownMenu(layerId)}
			} else {
				var layerExt = Ext.get(layer);
				var shim = layerExt.createShim();
				shim.setRegion(layerExt.getRegion());
				shim.setVisible(true);

				Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);
				document.onmouseup = function() {hideDropDownMenuIE6(layerId, shim)}
			}
		}
	}
}

function showHideDropDownMenuExt(layerId, alignToElementId, position, layerEqAlignToElement, distance){

	var layer = Ext.get(layerId);
	var alignToElement = Ext.get(alignToElementId);

	if (layer && alignToElement){

		if (!distance){
			var distance = 1; //default distance
		}

		if (layerEqAlignToElement){
			layer.setWidth(alignToElement.getWidth());
		}

		if (position == 'bl'){
			distance = [0, 1]
		} else if (position == 'tr'){
			distance = [1, 0];
		}

		layer.alignTo(Ext.fly(alignToElement), position, distance);

		if(dropDownId != layerId){
			dropDownVisible = false;
		}

		if(!dropDownVisible){
			layer.setStyle('visibility', 'visible');
		} else {
			Ext.select('.simpleLayer').setStyle({visibility: 'hidden', top: -10000, left: -10000});
		}

		dropDownId = layerId;
		dropDownVisible = !dropDownVisible;
		dropDownClicked = true;

		if (!Ext.isIE6){
			document.onmouseup = function() {hideDropDownMenu(layerId)}
		} else {
			var layerExt = Ext.get(layer);
			var shim = layerExt.createShim();
			shim.setRegion(layerExt.getRegion());
			shim.setVisible(true);

			Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);
			document.onmouseup = function() {hideDropDownMenuIE6(layerId, shim)}
		}
	}
}

function hideDropDownMenu(layerId){

	Ext.select('.simpleLayer').setStyle({visibility: 'hidden', top: -10000, left: -10000});
	if(!dropDownClicked){
		dropDownVisible = false;
	}
	dropDownClicked = false;
}

function hideDropDownMenuIE6(layerId, shim){
	hideDropDownMenu(layerId);

	Ext.EventManager.removeListener(getEl('popupContent') ? 'popupContent' : Ext.getBody(), 'scroll', layerIEFix);

	if (shim){
		shim.remove();
	}
}


function hideSimpleLayer()
{
	Ext.select('.simpleLayer').setStyle({visibility: 'hidden', top: -10000, left: -10000});
}

function hideSimpleLayerIE6(shim)
{
	hideSimpleLayer();

	Ext.EventManager.removeListener(getEl('popupContent') ? 'popupContent' : Ext.getBody(), 'scroll', layerIEFix);

	if (shim)
	{
		shim.remove();
	}
}



//standard layer with close button functions
function showLayerToElementExt(layer, alignToElement, position, layerCloseBtnId)
{
	layer = Ext.get(layer);
	alignToElement = Ext.get(alignToElement);

	if (layer && alignToElement)
	{
		var offset = [0, 0];

		if (position == 'bl')
		{
			var offset = [0, 1]
		}
		if (position == 'tr')
		{
			var offset = [1, 0];
		}
		if (position == 'br')
		{
			var offset = [-layer.getWidth(), 1];
		}

		// align and show the layer
		layer.alignTo(alignToElement, position, offset);
		layer.setVisible(true)

		// set layer (and iframe) close functions
		if (Ext.isIE6)
		{
			var shim = layer.createShim();
			shim.setRegion(layer.getRegion());
			shim.setVisible(true);

			Ext.EventManager.addListener(getEl('popupContent') ? popupContent : Ext.getBody(), 'scroll', layerIEFix, this, shim);

			getEl(layerCloseBtnId).onclick = function() {hideLayerIE6(layer, shim)}
		}
		else
		{
			getEl(layerCloseBtnId).onclick = function() {hideLayer(layer)}
		}
	}

}


function hideLayer(layer)
{
	if (layer)
	{
		layer.setVisible(false)
	}
}

function hideLayerIE6(layer, shim)
{
	hideLayer(layer);

	Ext.EventManager.removeListener(getEl('popupContent') ? 'popupContent' : Ext.getBody(), 'scroll', layerIEFix);

	if (shim)
	{
		shim.remove();
	}
}






//workaround for IE problem, showing selects over layer on scroll
function layerIEFix(e, t, shim)
{
	if (shim)
	{
		shim.setVisible(false);
		shim.setVisible(true);
	}
}


var Reflection = function()
{
	this.GetProperties = function(obj)
	{
	    var props = new Array();

	    for (var s in obj)
	    {
	        if (typeof(obj[s]) != "function")
	        {
	            props[props.length] = s;
	        }
	    }

	    return props;
	}

	this.GetMethods = function(obj)
	{
	    var methods = new Array();

	    for (var s in obj)
	    {
	        if (typeof(obj[s]) == "function")
	        {
	            methods[methods.length] = s;
	        }
	    }

	    return methods;
	}
}

// remove active classname if present
function deselectSubNavigationItems()
{
    var items = document.getElementsByClassName('MSNItem');

    for (var a = 0; a < items.length; a++)
    {
        items[a].className = 'MSNItem';
    }
}

function selectSubNavigationItem(itemId)
{
    var item = getEl(itemId);

    if (item)
    {
        deselectSubNavigationItems();
        item.className = 'MSNItem active';
    }
}

function removeArialFontFromBuildText(text)
{
	var regex = '<font face=\"[A-Za-z]+\">';
	var replacePattern = new RegExp(regex,'gi');

	var resultText;
	if (isDefined(text, 'value'))
		resultText = text.value;
	else
		resultText = text;

	resultText = resultText.replace(replacePattern,'').replace(/<\/font>/g,'');
	return resultText;
}


//fixes extjs mask size if it doesn't cover the whole mask container element
function fixExtMaskSize(maskEl, containerEl)
{
	if (maskEl)
	{
		maskEl.setWidth(containerEl.getWidth());
		maskEl.setHeight(containerEl.getHeight());
	}
}

function fixDefaultExtMaskSizePos()
{
	if(Ext.isIE)
	{
		var maskEl = Ext.select('.ext-el-mask').first();
		fixExtMaskSize(maskEl, Ext.getBody());
		maskEl.center();
	}
}


var PiURLUtils = {

	removeParameterFromURL : function(URL,param){
		var URL = String(URL);
		var regex = new RegExp( "\\?" + param + "=[^&]*&?", "gi");
		URL = URL.replace(regex,'?');
		regex = new RegExp( "\\&" + param + "=[^&]*&?", "gi");
		URL = URL.replace(regex,'&');
		URL = URL.replace(/(\?|&)$/,'');
		regex = null;
		return URL;
	},
	addParameterToURL : function(URL,param,value){
		var URL = this.removeParameterFromURL(URL,param);
		URL = URL + '&' + param + '=' + value
		if (!(/\?/.test(URL))) URL = URL.replace(/&/,'?');
		return URL;
	},
	extractParametersToObject : function(URL) {
		var paramsStartPosition = URL.indexOf('?');
		var parameters;

		// URL
		if(paramsStartPosition != -1)
		{
			parameters = parametersString(paramsStartPosition + 1);
		}
		// only params
		else
		{
			parameters = URL;
		}

		var paramsArray = parameters.split('&');

		var params = new Object();

		for(var i=0; i < paramsArray.length; i++)
        {
			var currentParameter = paramsArray[i];

			if(currentParameter != '')
			{
				var paramArray = currentParameter.split('=');
				var paramKey = paramArray[0];
				var paramValue = paramArray[1];

				if (params.hasOwnProperty(paramKey))
	        	{
		            if (params[paramKey] instanceof Array)
		            {
		            	params[paramKey].push(paramValue);
					}
					else
					{
						var newValue = new Array();
						newValue.push(params[paramKey]);
						newValue.push(paramValue);

						params[paramKey] = newValue;
					}
	        	}
				else
				{
					params[paramKey] = paramValue;
				}
			}
        }

		return params;
	}

}

function getMaxPossibleHeightForEXTWindow()
{
    var h = Math.round((getVisibleHeight())*0.90);
    return h;
}

function isOfficeDocumentSuffix(suffix)
{
	if (suffix == 'doc' || suffix == 'docx' || suffix == 'dot'
		|| suffix == 'xls' || suffix == 'xlsx' || suffix == 'xlt' || suffix == 'ppt' || suffix == 'pptx')
	{
		return true;
	}

	return false;
}

function postToURL(path, params, method, target)
{
    method = method || "post"; // Set method to post by default, if not specified.

    var form = document.createElement("form");
    form.setAttribute("action", path);
    form.setAttribute("method", method);

	if(target)
	{
		form.setAttribute("target", target); //"_blank" | "_parent" | "_self" | "_top" | window name
	}

    var addParam = function(paramName, paramValue)
    {
		var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", paramName);
        hiddenField.setAttribute("value", paramValue);

        form.appendChild(hiddenField);
    };

    // Params is an Associative array or Object.
    if(params instanceof Object)
    {
        for(var property in params)
        {
        	if (params.hasOwnProperty(property))
        	{
				var value = params[property];
	            if (value instanceof Array)
	            {
			        for(var i=0; i < value.length; i++)
			        {
			            addParam(property, value[i]);
			        }
				}
				else
				{
		            addParam(property, value);
				}
            }
        }
    }

    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form); // cleanup
}


function isEmptyObject(o)
{
	if(typeof(o) == 'undefined' || o == null)
	{
		return true;
	}

	if(o instanceof Array)
		return o.length == 0;

	for(var i in o)
	{
		return false;
	}

	return true;
}

function getRadioValue(form, elementName)
{
	var value;
	var radios = form.elements[elementName];

	if(radios)
	{
		for(var i=0; i < radios.length; i++)
		{
			var radio = radios[i];

			if(radio.checked)
			{
				value = radio.value;
			}
		}
	}

	return value;
}

function consoleLog(message)
{
	if ( typeof( console ) != 'undefined' )
	{
		if (console)
		{
			console.log(message);
		}
	}
}

function allowIntegersOnly(event)
{
	var key = 0;

	//check for shift combination
	  if((window.event && window.event.shiftKey) || (event && event.shiftKey))
    {
        return false;
    }

	if(!Ext.isEmpty(event))
		key = event.keyCode;

	//if the key is a number return true
    if ((key >= 48 && key <= 57) || (key >= 96 && key <= 105))
    {
        return true
    }

    //Backspace delete left right arrow
    if(key == 8 || key == 46 || key == 39 || key == 37)
        return true;

    return false;
}

function validateInteger(value)
{
    var intValue = parseInt(value);

    if (''+value == ''+intValue) {
        return true;
    } else {
        return false;
    }
}

var defaultErrorHandler = function(callBack)
{
	//Standard error call back
	var errorCallBack = function(message)
	{
		Ext.Msg.alert('', message, callBack);
	}

	return errorCallBack;
}

//check if there is an at least one checkbox checked
function hasCheckedCheckboxes(checkBoxesName)
{
	var checkBoxes = document.getElementsByName(checkBoxesName);
   	for (var i = 0; i < checkBoxes.length; i++)
   	{
   		if (checkBoxes[i].checked)
   		{
			return true;
   		}
   	}
   	return false;
}
