{

//-------------------------Generated by MultiMeasurement.GenerateJS------------------------------
var arAreaFactors = new Array(0.092903423361080000,1.000000000000000000,929.034233610800000000,0.000000035900000000,144.000000000000000000,0.000022956500000000,0.111111105800000000,0.000009290342336108,0.000000092903423361,0.055797621600000000,0.027898810800000000,0.028109845688400000,0.028109845688400000,0.023225760000000000,0.000232257600000000,0.000058064400000000); 
var arAreaUnits = new Array(101,102,103,400,401,404,409,410,411,600,601,602,603,605,606,607);
var arGeneralFactors = new Array(1);
var arGeneralUnits = new Array(0);
var arLengthFactors = new Array(0.3048,1,12,0.0003048,30.48,0.3333333333,0.0001893939);
var arLengthUnits = new Array(11,21,22,12,13,23,24);
var arPeriodFactors = new Array(1,4,12,4,12,1);
var arPeriodUnits = new Array(4,5,6,405,406,407);
var arTimeFactors = new Array(24,1440,1,86400,24,1440,1,86400,0.1428571429,0.1428571429,0.002739726,0.002739726);
var arTimeUnits   = new Array(1,2,3,300,301,303,304,305,306,307,308,309);
var arWeightFactors = new Array(1,0.4535923700,453.5923700000,16.0000017700,0.0004535920,0.0005000000);
var arWeightUnits = new Array(202,200,201,203,204,312);
//arWeightFactors = new Array(1,1000,2.2046226218,35.27396584,0.001,0.0011023114);
//arWeightUnits = new Array(200,201,202,203,204,312);
//-------------------------Generated by MultiMeasurement.GenerateJS------------------------------

//getDomElement('GROSS_AREA_DIS').attachEvent('onchange',handleConvetLable);


/* Add The IS_MULTI_MEASURMENT property to all of the MultiMeasurments fields

var effectiveInput;

function MultiMeasurmentInit()
{	
	var oInputElement;
	var r;
	var sInputElement;
	var oDivEntries = document.all.tags("DIV");		
	for(var index=0;index < oDivEntries.length;index++)
	{
		iPlace = oDivEntries[index].id.search(new RegExp ('_MeasurementUtilityDiv', 'gi'))
		if(iPlace>0)
		{
			sInputElement = oDivEntries[index].id.slice(0,iPlace);					
			oInputElement = getDomElement(sInputElement);
			oInputElement.setAttribute("IS_MULTI_MEASURMENT",1);			
		}	
	}		
}	 
*/
function handleMeasure(TargetInput,DimensionID,arOldUnit,UnitCombo,masterMeasureName,dPortfolioFactor,externalPagesIds)
{
	//ConvertMeasure(TargetInput,DimensionID,arOldUnit,UnitCombo.value, dPortfolioFactor);
	handleValues(TargetInput,masterMeasureName, UnitCombo, dPortfolioFactor);
	
	//check if the unitsCombo effected inputs from other pages(parent or frames)
	if(externalPagesIds!=null)
    {
		externalPagesIds = externalPagesIds.toString();
		var arPages = externalPagesIds.split(',');
		var externalPageId;
		var externalFrame;
		
		for (var i=0;i<arPages.length;i++)
		{
			externalPageId = arPages[i];
			externalFrame='Frame'+externalPageId;
	
			if(window.parent.m_PageID==externalPageId)
				window.parent.handleValues(TargetInput,masterMeasureName, UnitCombo, dPortfolioFactor);
			if (frameExists(window, externalFrame))
				window.frames[externalFrame].handleValues(TargetInput,masterMeasureName, UnitCombo, dPortfolioFactor);
		}
	}		
}

function handleDisable(currLabel, UnitCombo)
{	// the return looks strange but its ok!
	var retVal=true;
	if(currLabel.HANDLE_DISABLE=='True')
	{
		if(currLabel.TYPE=='COMBO_DES')
		{
			effectiveInput=getDomElement(currLabel.EFFECTIVE_INPUT)
			if(effectiveInput.className=='ReadOnlyField')
			{	
				if(effectiveInput.NOT_ROUNDED_VALUE=='')
					effectiveInput.NOT_ROUNDED_VALUE=effectiveInput.value;
				effectiveInput.NOT_ROUNDED_VALUE=(UnitCombo.options[UnitCombo.selectedIndex].FACTOR/currLabel.FACTOR)*effectiveInput.NOT_ROUNDED_VALUE;
				effectiveInput.value=roundFloat(effectiveInput.NOT_ROUNDED_VALUE,2);
				currLabel.innerHTML=UnitCombo.options[UnitCombo.selectedIndex].text;
				currLabel.FACTOR=UnitCombo.options[UnitCombo.selectedIndex].FACTOR;
				return true;
			}
			else
				return false;
				
		}
		return true;
	}
	return false;
}

function handleValues(TargetInput,masterMeasureName, UnitCombo, dPortfolioFactor)
{
		var oLabels=window.document.getElementsByTagName("LABEL");
		var effectiveInputValue;
		effectiveInput=TargetInput;
		
		for (i=0;i<oLabels.length;i++)
		{
			if(oLabels[i].MASTER_NAME==masterMeasureName)
			{
				// if the input is disabled and <PARAM> "HANDLE_DISABLE" is true the gui will update the left side and not the right.
				if(!handleDisable(oLabels[i], UnitCombo, effectiveInput))
				{	//hide portfolio values if the combo value equal to the portfolio value or the <PARAM HIDE_PORTFOLIO_VALUES=1>
					if(((dPortfolioFactor==UnitCombo.options[UnitCombo.selectedIndex].FACTOR)&&((oLabels[i].TYPE=='CONV_VALUE')||(oLabels[i].TYPE=='CONV_DES')))||(oLabels[i].HIDE_PORT_VALUES=='True'))
						oLabels[i].innerHTML='';
					else
					{	
						if(oLabels[i].TYPE=='COMBO_DES')
						{
						   //if the type is 'COMBO_DES' we're needs to change the effective input
						   effectiveInput=getDomElement(oLabels[i].EFFECTIVE_INPUT)
						   oLabels[i].innerHTML=UnitCombo.options[UnitCombo.selectedIndex].text;
						   oLabels[i].FACTOR=UnitCombo.options[UnitCombo.selectedIndex].FACTOR;
						}
						if(oLabels[i].TYPE=='CONV_VALUE')
						{  
						   if(effectiveInput.NOT_ROUNDED_VALUE=='')
							  effectiveInputValue=effectiveInput.value;
						   else
						   	  effectiveInputValue=effectiveInput.NOT_ROUNDED_VALUE;
						   oLabels[i].innerHTML='('+formatNumber(setPrecision(effectiveInputValue*(dPortfolioFactor/UnitCombo.options[UnitCombo.selectedIndex].FACTOR),2));	
						}
						if(oLabels[i].TYPE=='CONV_DES')
						   oLabels[i].innerHTML=oLabels[i].PORT_UNITS+')';
					}   
				}	
			}
		}	
}

function handleConvetLable(objID)
{
	if(typeof(objID)=="object" || objID==null) objID = event.srcElement.id;
	
	var effectiveLabel   	= objID + '_CONV_VALUE';
	var effectiveInputId 	= objID;  
	var oLabels=window.document.getElementsByTagName("LABEL");
	var currFactor;
  		
	for (var i=0;i<oLabels.length;i++)
	{	
		if(oLabels[i].LABEL_ID==effectiveLabel)
		{	
			//if the combo factor equal to user factor - do nothing
			currFactor=getCurrFactor(getDomElement(effectiveInputId).name)
			if((oLabels[i].USER_FACTOR==currFactor)||(oLabels[i].HIDE_PORT_VALUES=='True'))
				return;
			if(isFloat(getDomElement(effectiveInputId).value))
				oLabels[i].innerHTML='('+formatNumber(setPrecision(getDomElement(effectiveInputId).value*oLabels[i].USER_FACTOR/currFactor,2));
			else if(isEmpty(getDomElement(effectiveInputId).value))	
				 oLabels[i].innerHTML='(0';
		}
	}
}

function ConvertMeasure(TargetInput,DimensionID,arOldUnit,NewUnitID)
{				
	var NewFactor,OldFactor,OldVal;
	if((TargetInput.value == null) || (TargetInput.value.length == 0))
		return;
		
			
	if(TargetInput.NOT_ROUNDED_VALUE!="")
	{	
		OldVal=parseFloat(TargetInput.NOT_ROUNDED_VALUE);
	}
	else
	{	
		OldVal=parseFloat(TargetInput.value);		
	}					
	switch(DimensionID)
	{
		case 2: //Length
		{
			NewFactor=getFactor(arLengthUnits,NewUnitID,arLengthFactors);		
			OldFactor=getFactor(arLengthUnits,arOldUnit[0],arLengthFactors);		
			break;
		}	
		case 5 : //Weight
		{
			NewFactor=getFactor(arWeightUnits,NewUnitID,arWeightFactors);
			OldFactor=getFactor(arWeightUnits,arOldUnit[0],arWeightFactors);
			break;	
		}
		case 1 : //Time
		{
			NewFactor=getFactor(arTimeUnits,NewUnitID,arTimeFactors);
			OldFactor=getFactor(arTimeUnits,arOldUnit[0],arTimeFactors);		
			break;	
		}
		case 3 : //Area
		{
			NewFactor=getFactor(arAreaUnits,NewUnitID,arAreaFactors);
			OldFactor=getFactor(arAreaUnits,arOldUnit[0],arAreaFactors);
			break;	
		}
		case 4 : //Period
		{
			NewFactor=getFactor(arPeriodUnits,NewUnitID,arPeriodFactors);
			OldFactor=getFactor(arPeriodUnits,arOldUnit[0],arPeriodFactors);
			break;	
		}
		case 0: //General
		{
			NewFactor=getFactor(arGeneralUnits,NewUnitID,arGeneralFactors);
			OldFactor=getFactor(arGeneralUnits,arOldUnit[0],arGeneralFactors);
			break;	
		}									
	}
	arOldUnit[0]= NewUnitID;
		
	if (TargetInput.IS_ROUNDED)
	{		
		if(TargetInput.IS_ROUNDED == 'TRUE')
		{							
			var iDecimalPlaces=0;
			if(TargetInput.SCALE) iDecimalPlaces = parseInt(TargetInput.SCALE);									
			
			TargetInput.NOT_ROUNDED_VALUE = roundFloat((OldVal*(NewFactor / OldFactor)),10);
			TargetInput.value = roundFloat(TargetInput.NOT_ROUNDED_VALUE,iDecimalPlaces);											
		}		
	}
	else
	{
		TargetInput.value = (OldVal*(NewFactor / OldFactor));		
		TargetInput.NOT_ROUNDED_VALUE = TargetInput.value;
	}
	
}
function ConvertArea(Area,OldUnit,NewUnit)
{
	var NewFactor=getFactor(arAreaUnits,NewUnit,arAreaFactors);
	var OldFactor=getFactor(arAreaUnits,OldUnit,arAreaFactors);
	var nArea=roundFloat((Area*(NewFactor / OldFactor)),2);
	return nArea;
}

	
function getFactor(arUnits,Unit,arFactors)
{
	for (var i = 0 ; i < arUnits.length ; i++)
		if (arUnits[i]==Unit) return(parseFloat(arFactors[i])); 
}
	
function ConvertToServerUnits(TargetInput)
{//very temp!
return TargetInput.value;

	var ServerFactor,CurrentFactor,DimensionID,value,CurrentUnit;
	
	if(TargetInput.value=="")
		return(0);
		
	if(TargetInput.NOT_ROUNDED_VALUE>0)
	{		
		value = parseFloat(TargetInput.NOT_ROUNDED_VALUE);		
	}
	else
	{				
		value=parseFloat(TargetInput.value);		
	}				 	
		
	CurrentUnit=eval("(getDomElement('" + TargetInput.name + "_MeasurementUtilityCombo')).value;");
	CurrentUnit=parseFloat(CurrentUnit);
	ServerFactor=eval(TargetInput.name + '_OldUnitArray[1]');  //server factor(1)
	DimensionID=eval(TargetInput.name + '_OldUnitArray[2]');   //method id					
		 
	switch(DimensionID)
	{
		case 2: //Length
		{
			CurrentFactor=getFactor(arLengthUnits,CurrentUnit,arLengthFactors);
			break;
		}
		case 5 : //Weight
		{
			CurrentFactor=getFactor(arWeightUnits,CurrentUnit,arWeightFactors);
			break;	
		}
		case 1 : //Time
		{
			CurrentFactor=getFactor(arTimeUnits,CurrentUnit,arTimeFactors);
			break;	
		}
		case 3 : //Area
		{
			CurrentFactor=getFactor(arAreaUnits,CurrentUnit,arAreaFactors);			
			break;	
		}
		case 4 : //Period
		{
			CurrentFactor=getFactor(arPeriodUnits,CurrentUnit,arPeriodFactors);
			break;	
		}
		case 0: //General
		{
			CurrentFactor=getFactor(arGeneralUnits,CurrentUnit,arGeneralFactors);
			break;	
		}						
	}	
		
	if(CurrentFactor==ServerFactor)	
		var result = value;		
	else	 
		var result = roundFloat(value * (ServerFactor / CurrentFactor),10);	
					
	return result;	
}

//---------------- Calculator Support -----------------
var objTarget;
function OpenCalc(obj)
{
	if (isNaN(parseFloat(obj.value)) && obj.length > 0)
		return;
	objTarget=obj;
	
	if(!(obj.className=='ReadOnlyField')&&!(obj.className=='MandatoryReadOnlyField'))
		openGeminiCalculator(obj.name);	
	//window.open('Calculator.htm','Calculator','top=' + (screen.height-180)/2 + ',left=' + (screen.width-180)/2 + ' width=140,height=180,history=no,menubar=no,status=no,resizable=no,center=yes');
	//openGeminiWindow(1030900,-1,1000000)
	//openGeminiWindow(1030900,-1,1000000,null, null,null,null ,null ,null ,null ,0);		
}

function GetTargetInput()
{
	 if (isNaN(parseFloat(objTarget.value)))
		return (0);
	 else 
		return(parseFloat(objTarget.value));
}

function SetTargetInput(Value)
{	
	if (!(objTarget.className=='ReadOnlyField')&&!(objTarget.className=='MandatoryReadOnlyField'))
	{
		if (objTarget.IS_ROUNDED == 'TRUE')
		{			
			var iDecimalPlaces=0;
			if(objTarget.SCALE)iDecimalPlaces = parseInt(objTarget.SCALE);			
			objTarget.NOT_ROUNDED_VALUE = Value;
			objTarget.value = Value //roundFloat(objTarget.NOT_ROUNDED_VALUE,iDecimalPlaces);
			if (objTarget.onchange != null)
				objTarget.onchange();
		}
		else
		{
			objTarget.value = Value;
			if (objTarget.onchange != null)
					objTarget.onchange();
			objTarget.NOT_ROUNDED_VALUE = objTarget.value;
		}
	}		
}

function ConvertToClientUnits(Value,TargetInput,UpdateFlag)
{//Function for validate multi mesurment

	var ServerFactor,CurrentFactor,DimensionID,value,CurrentUnit;	
	var iDecimalPlaces=0;
	
	if(UpdateFlag==null) 
		UpdateFlag=true;
		
	if(TargetInput.SCALE)iDecimalPlaces = TargetInput.SCALE;
		
	TargetUnit=eval("(getDomElement('" + TargetInput.name + "_MeasurementUtilityCombo')).value;");
	TargetUnit=parseFloat(TargetUnit);	 
	 
	ServerFactor=eval(TargetInput.name + '_OldUnitArray[1]');  //server factor(1)
	DimensionID=eval(TargetInput.name + '_OldUnitArray[2]');   //method id					
	 
	switch(DimensionID)
	{
		case 2: //Length
		{
			CurrentFactor=getFactor(arLengthUnits,TargetUnit,arLengthFactors);
			break;
		}
		case 5 : //Weight
		{
			CurrentFactor=getFactor(arWeightUnits,TargetUnit,arWeightFactors);
			break;	
		}
		case 1 : //Time
		{
			CurrentFactor=getFactor(arTimeUnits,TargetUnit,arTimeFactors);
			break;	
		}
		case 3 : //Area
		{
			CurrentFactor=getFactor(arAreaUnits,TargetUnit,arAreaFactors);			
			break;	
		}
		case 4 : //Period
		{
			CurrentFactor=getFactor(arPeriodUnits,TargetUnit,arPeriodFactors);
			break;	
		}
		case 0: //General
		{
			CurrentFactor=getFactor(arGeneralUnits,TargetUnit,arGeneralFactors);
			break;	
		}						
	}		
	 
	if(CurrentFactor==ServerFactor)		
		var result = Value;				
	else	
		var result = Value * (CurrentFactor/ServerFactor );					 								
	
	if(UpdateFlag == true) 
		TargetInput.NOT_ROUNDED_VALUE = result;    // Update the NOT_ROUNDED_VALUE of the Target Input
	
	return roundFloat(result,iDecimalPlaces);	
}


function getMultiMeasurmentName(InputName)
{	
	var ComboName = InputName.name + "_MeasurementUtilityCombo";
	var oMultiMeasurmentCombo = getDomElement(ComboName);
	return oMultiMeasurmentCombo.options[oMultiMeasurmentCombo.selectedIndex].text;
	
}

function getMultiMeasurmentComboValue(InputName)
{	
	var ComboName = InputName.name + "_MeasurementUtilityCombo";
	var oMultiMeasurmentCombo = getDomElement(ComboName);
	return oMultiMeasurmentCombo.value;
}

function getCurrFactor(InputName)
{	
	var oMultiMeasurmentCombo = getObjUnitCombo(InputName);
	
	if(oMultiMeasurmentCombo!=null)
		return oMultiMeasurmentCombo.options[oMultiMeasurmentCombo.selectedIndex].FACTOR;
	var oLabel=getLabelByInput(InputName);
	if(oLabel!=null)
		return(oLabel.FACTOR);
	return 1;	
}

function getObjUnitCombo(InputName)
{
	var ComboName = InputName + "_MeasurementUtilityCombo";
	var oMultiMeasurmentCombo = getDomElement(ComboName);
	
	if(oMultiMeasurmentCombo!=null)
		return oMultiMeasurmentCombo;
	return null;	
}

function getLabelByInput(InputName)
{
		var oLabels=window.document.getElementsByTagName("LABEL");
		
		for (i=0;i<oLabels.length;i++)
			if(oLabels[i].EFFECTIVE_INPUT==InputName)
				return oLabels[i];
		return null;		
}

function getFactorByUnit(oMultiMeasurmentCombo, UnitID)
{
	for(var i=0;i<oMultiMeasurmentCombo.length;i++)
		if(UnitID==oMultiMeasurmentCombo[i].value)
			return oMultiMeasurmentCombo.options[i].FACTOR;
	return 0;
}

function convertFromUnitToUnit(oInputName,oMultiMeasurmentCombo,fromUnitID,toUnitID)
{
	var fromUnitFactor=getFactorByUnit(oMultiMeasurmentCombo, fromUnitID);
	var toUnitFactor=getFactorByUnit(oMultiMeasurmentCombo, toUnitID);
	
	if((fromUnitFactor!=0)&&(toUnitFactor!=0))
		return(fromUnitFactor/toUnitFactor)*oInputName;
	return 0;	
}

function manualUnitChange(oMultiMeasurmentCombo,newComboUnitValue)
{
	if(newComboUnitValue==0)
		return;
	oMultiMeasurmentCombo.value=newComboUnitValue;
	eval(oMultiMeasurmentCombo.MyOnChange);
}
}
