﻿var stepNo = 1;
var oldObj = null;
var oldObj2 = null;
var minRows = 5;
var passParamToNextStep = false;
var objTheForm = null;
var multipleArr = new Array();
var lclFrameWork = null;
var orgErrMsgHeight = null;
var lookUpLoaded = false;
var isShowBackMsg = true;

function doOnload()
{
	//Check browser Version	
	if(!isSupportedBrowser())
	{
		var msg = "This site is best viewed using "
		for(var i=0; i < SupportedBrowsers.length; i++)
			msg += SupportedBrowsers[i][2] + ' ' + SupportedBrowsers[i][1] + ' / '
		msg += " and up."
		alert(msg)
	}

	objTheForm = document.theForm;
	openFrame( stepNo, false );

	//Get error IFRAME Height
	orgErrMsgHeight = frames['DIVerror'].document.getElementById('TBerrorMessage').offsetHeight
	getObj('DIVerror').style.visibility = 'visible'
	hideErrorMessage();
if (screen.width<1024)
     {
    
     getObj('tablw').width="100%";
     }

	//Load LoockUps
	frames['lookUps'].location = "c.asp?action=employee.RegistrationWizard.lookUpTableFormat&Node=getLookUps&AffiliateId=" + document.theForm.AffiliateID.value + "&CountryId=" + defaultCountryId}

//---- General Functions -----
function changeFrameWork( tmpFrameWork )
{
	lclFrameWork = tmpFrameWork;
}

function colorProgressBar( jump )
{
	if( getObj('progress' + stepNo, this) != null )
		getObj('progress' + stepNo, this).className = "ProgressBar";
	
	for(var i=0;i<jump;i++)
	{
		if( getObj('progress' + (new Number(stepNo)+i), this) != null )
			getObj('progress' + (new Number(stepNo)+i), this).className = "ProgressBar";
	}
}

function changeOnOver( obj, isOver )
{
	if( obj.getAttribute('isEnabled') == 1 )
		swapSrc( obj, 'src2' );
}

function swapSrc( obj, attReplacer )
{
	var temp = obj.src;
	obj.src = obj.getAttribute(attReplacer);
	obj.setAttribute(attReplacer,temp);
}

function fieldFocus( objName )
{
	if( getObj(objName, lclFrameWork) != null )
		getObj(objName, lclFrameWork).focus();
}

function getTextFromId( valueId )
{
	return getObj('Text' + valueId, lclFrameWork).innerHTML;
}

function roleContinueButton()
{
	var objButton = getObj('continueButton', lclFrameWork);
	if( !lclFrameWork.isContinueButton  )
		objButton.style.display = 'none';
}

function changeStepName( stepNameText, stepNumber )
{
	getObj('titleStepName', this).innerHTML = stepNameText;
	//getObj('titleStepNumber', this).innerHTML = stepNumber;
}

function updateFrameAttribute( attributeName, value )
{
	var obj = getObj(lclFrameWork.name, this)
	obj.setAttribute(attributeName,value);	
}

function getNoValuesHTML( text )
{
	var HTML = '';
	HTML = '<TABLE cellpadding="0" cellspacing="0" class="noJobTitleTable">';
	HTML += '<TR><TD>' + text + '</TD></TR>';
	HTML += '</TABLE>';
	
	return HTML;
}	

function autoSelectField( obj )
{
	if(obj.createTextRange)
	{
		var rNew = obj.createTextRange();
		rNew.moveStart('character', obj.length) ;
		rNew.select();		
	}
}

function calculateJumpSameStep( frameStepName )
{
	var rtnVal = 1;

	for(var i=0;i<frames.length;i++)
	{
		try
		{					
			if( getObj(frameStepName).sourceIndex < getObj(frames[i].name).sourceIndex && getObj(frameStepName).getAttribute('stepName') == getObj(frames[i].name).getAttribute('stepName') )
				rtnVal = getObj(frames[i].name).sourceIndex - getObj(frameStepName).sourceIndex + 1;
		}
		catch (ex)
		{
			void(ex);
		}
	}
	
	return rtnVal;
}

function getRepeatedStepPosition( frameStepName )
{
	var rtnVal = 1;

	for(var i=0;i<frames.length;i++)
	{
		try
		{					
			if( getObj(frameStepName).sourceIndex > getObj(frames[i].name).sourceIndex && getObj(frameStepName).getAttribute('stepName') == getObj(frames[i].name).getAttribute('stepName') )
				rtnVal += 1;
		}
		catch (ex)
		{
			void(ex);
		}
	}
	
	return rtnVal;
}

function sortMethodByCategory(a,b)
{
	return ((a['Category'].toLowerCase() < b['Category'].toLowerCase()) ? -1 : ((a['Category'].toLowerCase() > b['Category'].toLowerCase()) ? 1 : 0));
}

function openCloseContent( obj, id, strArrName, levelArray, categoryId, strIdChecked, strIdCheckedLevel )
{
	var TDobj = getObj('cont'+id, lclFrameWork);
	strIdCheckedLevel = (strIdCheckedLevel=='null')?null:strIdCheckedLevel

	if(obj.getAttribute('isPrinted') == null)
	{
		TDobj.innerHTML = getHTML_Mult( strArrName, levelArray, false, categoryId );
		obj.setAttribute('isPrinted',"1");
		checkSelectedRows( strIdChecked, strIdCheckedLevel, levelArray );
	}

	var szDisplay = (obj.getAttribute('status') == "0")?"":"none";

	var tmpStatus = (Math.abs( new Number(obj.getAttribute('status')) - 1 )).toString();		//For Safari
	tmpStatus = tmpStatus.substr(tmpStatus.length-1,1);											//For Safari
	obj.setAttribute( 'status', tmpStatus );
	
	TDobj.style.display = szDisplay;
}

function showAddMode()
{
	if(lclFrameWork.jump > 1)
		getObj('addMore', lclFrameWork).style.display = "block"
}

function hideSpecialValueIframe( idx )
{
	if( getObj('DIVerror', this).style.visibility != 'hidden' )
	{
		getObj('DIVerror', this).style.visibility = 'hidden';		
		getObj('DIVerror', this).setAttribute('DoNotHideOnClick','0');

		if(idx != null)
			getObj('ObjId_' + idx, lclFrameWork).checked = false;

		changeContinueButton(true, 0);			
		frames['DIVerror'].location = 'registrationWizardError.html';	
	}	
}

function showSpecialValueIframe( idx )
{
	getObj('DIVerror', this).setAttribute('DoNotHideOnClick','1');	
	frames['DIVerror'].location = lclFrameWork.specialValueHTML + '?idx=' + idx;

	getObj('DIVerror', this).style.visibility = 'visible';
	changeContinueButton(false, 1);
}

function saveSpecialValue( sp, value, extraParam, emailAction )
{
	objTheForm.regValues.value = (typeof(value)=='undefined')?'':value;
	objTheForm.stepName.value = getObj(lclFrameWork.name, this).getAttribute('stepName');
	objTheForm.regSP.value = sp;
	objTheForm.extraParam.value = (typeof(extraParam)=='undefined' && extraParam != null)?'':extraParam; //can send more than 1 extraParam separating the parameters with '||'
	objTheForm.emailAction.value = (typeof(emailAction)=='undefined')?'':emailAction; //can send more than 1 extraParam separating the parameters with '||'

	objTheForm.action = "c.asp?action=employee.RegistrationWizard.saveSpecialValue";
	objTheForm.target = "myIframe";	
	objTheForm.submit();
}

function preventBack( )
{
	if(!isShowBackMsg)
		return;

	refreshCount = new Number( getObj(lclFrameWork.name, this).getAttribute('refreshCount') );
	getObj(lclFrameWork.name, this).setAttribute('refreshCount', refreshCount+1);
}
//---- General Functions -----

//---- Navigation Buttons Functions -----
function sendStep( val, extraParam )
{
	objTheForm.regValues.value = (typeof(val)=='undefined')?'':val;
	objTheForm.stepName.value = getObj(lclFrameWork.name, this).getAttribute('stepName');
	objTheForm.regSP.value = getObj(lclFrameWork.name, this).getAttribute('spForSave');
	objTheForm.extraParam.value = (typeof(extraParam)=='undefined')?'':extraParam; //can send more than 1 extraParam separating the parameters with '||'

	objTheForm.action = "c.asp?action=employee.RegistrationWizard.save";
	objTheForm.target = "myIframe";	
	objTheForm.submit();
}

function openFrame( stepNumber, fromSave )
{
	var jump = Math.abs(new Number(stepNumber) - new Number(stepNo));
	if( jump.toString().substr(0,1) == '-' ) jump.toString().substr(jump.length-1,1);	//For Safari

	var objActualFrame = getObj('frameStep' + stepNo, this);
	var objNextFrame = getObj('frameStep' + stepNumber, this);

	//Hide and Show frames
	objActualFrame.style.height = '0px';
	objNextFrame.style.height = '193px';

	//Focus the frame
	if( objNextFrame.focus )
		objNextFrame.focus();

	//Save locally variables
	if( oldObj != null )
		lclFrameWork.objRowPainted = oldObj;

	//Reset the saved painted row
	oldObj = null;
	oldObj2 = null;

	//Set frameWork
	changeFrameWork( frames[objNextFrame.name] );

	//Set the actual step number
	stepNo = stepNumber;
			
	//Check for buttons Navigations
	changeNavButtonStatus( );

	//Set jump attributes
	if(fromSave)
	{
		objActualFrame.setAttribute('jumpForward',jump);
		objNextFrame.setAttribute('jumpBack', jump);	
	}
	
	//Load the Frame
	if ( objNextFrame.getAttribute('isLoaded') == '0' || (fromSave && objNextFrame.getAttribute('isAlwaysLoad') == '1') )
	{						
		//Set isLoaded
		objNextFrame.setAttribute('isLoaded','1');
		
		//Set and submit theForm
		objTheForm.action = 'c.asp?action=employee.RegistrationWizard.' + objNextFrame.getAttribute('stepName') + '&StepId=' + objNextFrame.getAttribute('stepID') + '&spForGet=' + objNextFrame.getAttribute('spForGet') + '&isIframe=1&totalSteps=' + totalSteps;
		objTheForm.target = 'frameStep' + stepNumber;
		objTheForm.submit();
	}
}

function jumpForward( jump )
{
	if(new Number(stepNo) + new Number(jump) == totalSteps)
		isShowBackMsg = false;

	if( typeof(jump)!='undefined' && new Number(stepNo) + new Number(jump) <= totalSteps )
		openFrame( new Number(stepNo) + new Number(jump), true );
	else
	{

		objTheForm.target ='myIframe';
		objTheForm.action = "c.asp?action=employee.RegistrationWizard.endOfRegistration";
		objTheForm.submit();
	}
}

function finishRegistration()
{
		objTheForm.target ='_self';
		objTheForm.action = "c.asp?action=" + objTheForm.whereToGoWhenFinishRegistration.value;
		objTheForm.submit();
}

function nextStep( )
{
	if( getObj('buttonNext', this).getAttribute('isEnabled') == 1 )
	{
		var jump = getObj('frameStep' + stepNo, this).getAttribute('jumpForward');
		openFrame( new Number(stepNo) + new Number(jump), false );
	}
}

function previousStep( )
{
	if( getObj('buttonBack', this).getAttribute('isEnabled') == 1 )
	{
		var jump = getObj('frameStep' + stepNo, this).getAttribute('jumpBack');
		openFrame( new Number(stepNo) - new Number(jump), false );
	}
}

function changeNavButtonStatus( )
{
	var buttonBack = getObj('buttonBack', this);
	var buttonNext = getObj('buttonNext', this);

	//--- Check Back Button ---
	if( buttonBack != null )
	{
		if( stepNo == 1 && buttonBack.getAttribute('isEnabled') == 1 )
			changeNavButtonStatusComp( buttonBack, 0 );
		else if( stepNo > 1 && buttonBack.getAttribute('isEnabled') == 0 )
			changeNavButtonStatusComp( buttonBack, 1 );
	}
	
	//--- Check Next Button ---
	if( buttonNext != null )
	{
		var jump = getObj('frameStep' + stepNo, this).getAttribute('jumpForward');
		var tmp = getObj('frameStep' + (new Number(stepNo) + new Number(jump)), this);
		if( buttonNext.getAttribute('isEnabled') == 1 && ( tmp == null || (tmp != null && tmp.getAttribute('isLoaded') == 0) )  )
			changeNavButtonStatusComp( buttonNext, 0 );
		else if( tmp != null && tmp.getAttribute('isLoaded') == 1 && buttonNext.getAttribute('isEnabled') == 0 )
			changeNavButtonStatusComp( buttonNext, 1 );
	}
}

function changeNavButtonStatusComp( obj, status )
{
	swapSrc( obj, 'srcDis' );
	obj.setAttribute('isEnabled',status);
}

function changeContinueButton( isEnable, isKeepDisable )
{
	if(!lookUpLoaded && isEnable)
		return;

	if( typeof(isKeepDisable) != 'undefined' )
		getObj('buttonContinue', lclFrameWork).setAttribute('IsKeepDisable',isKeepDisable);		

	try
	{
		if( !(isEnable && getObj('buttonContinue', lclFrameWork).getAttribute('IsKeepDisable') == 1) && lclFrameWork.isContinueEnabled != isEnable )
		{
			getObj('buttonContinue', lclFrameWork).className = "nextButton_" + ((isEnable)?"Enable":"Disable");
			getObj('addMore', lclFrameWork).className = "addMore_" + ((isEnable)?"Enable":"Disable");
			lclFrameWork.isContinueEnabled = isEnable;
		}
	}
	catch(e)
	{
		return;
	}
}
//---- Navigation Buttons Functions -----

//---- Error Message Functions -----
function errorMessage( msgText )
{
	if(frames['DIVerror'])
	{
		getObj('DIVerror', this).style.display = 'inline';
		frames['DIVerror'].document.getElementById('errorMessage').innerHTML = msgText;

		var IframeHeight = frames['DIVerror'].document.getElementById('TBerrorMessage').offsetHeight ;
		if( orgErrMsgHeight < IframeHeight )
		{
			getObj('DIVerror', this).style.height = IframeHeight;
			centerErrorDIV();
		}
	}
	else
		alert(msgText)
}

function centerErrorDIV()
{
	var objFrameStep1 = getObj(lclFrameWork.name, this);
	var objDIVerror = getObj('DIVerror', this);

	objDIVerror.style.top = (((document.body.offsetHeight - objDIVerror.offsetHeight) / 2)).toString() + 'px';
	objDIVerror.style.left = ((document.body.offsetWidth - objDIVerror.offsetWidth) / 2).toString() + 'px';
}

function hideErrorMessage()
{
	if( getObj('DIVerror', this).getAttribute('DoNotHideOnClick')=='0' && getObj('DIVerror', this).style.display != 'none' )
	{
		getObj('DIVerror', this).style.height = orgErrMsgHeight;
		centerErrorDIV();	
		getObj('DIVerror', this).style.display = 'none';
	}
}
//---- Error Message Functions -----

//---- List down Functions -----
function fillAutoComplete( DIVname, mainArray, text, HTML )
{
	var DIVobj = getObj(DIVname, lclFrameWork);
	if(typeof(text)!='undefined' && text.length >= 1)
	{
		mainArray = getArrFromTxt( mainArray, text );

		if( mainArray.length > 0 )
			writeIntoDIV( 1, DIVname, mainArray );
		else if( typeof(HTML) != 'undefined' )
			writeIntoDIV( 3, DIVname, null, null, HTML );
	}
	else
		DIVobj.style.visibility = 'hidden';
}

function writeIntoDIV( Style, DIVname, mainArray, levelArray, preparedHTML, strIdChecked, strIdCheckedLevel )
{
	// -Styles-
	//1: List (can select only one object)
	//2: Multiple
	//3: preparedHTML (ex. for preferred location cities, loaded when the app up)
	//4: Simple with sub selection
	//5: Multiple without checkbox. Choose Level available
	var HTML = '';

	switch( Style )
	{
		case 1:	HTML = getHTML_Single( mainArray, levelArray, false );break;
		case 2:	HTML = getHTML_Mult( mainArray, levelArray, false, null, strIdChecked, strIdCheckedLevel );break;
		case 3: HTML = preparedHTML;break;
		case 4:	HTML = getHTML_Single( mainArray, levelArray, true );break;
		case 5:	HTML = getHTML_Mult( mainArray, levelArray, true, null, strIdChecked, strIdCheckedLevel );break;
	}

	getObj(DIVname, lclFrameWork).innerHTML = HTML;
	getObj(DIVname, lclFrameWork).style.visibility = 'visible';
	oldObj = getObj('firstRow', lclFrameWork);
	
	if( typeof(strIdChecked)!='undefined' )
	{
		checkSelectedRows( strIdChecked, strIdCheckedLevel, levelArray );
		openCategoriesWithSelectedValues( mainArray, levelArray, strIdChecked, strIdCheckedLevel );
	}

	if( getObj('tipTable',lclFrameWork) != null)		
		getObj(DIVname, lclFrameWork).style.height = (getObj(DIVname, lclFrameWork).offsetHeight - getObj('tipTable',lclFrameWork).offsetHeight - 3);

}

function checkSelectedRows( strIdChecked, strIdCheckedLevel, levelArray )
{
	var tmpArr = null;
	if(typeof(strIdChecked) != 'undefined' && strIdChecked != null)
		tmpArr = strIdChecked.split(',');

	var tmpExp = null;
	if(typeof(strIdCheckedLevel) != 'undefined' && strIdCheckedLevel != null)
		tmpExp = strIdCheckedLevel.split(',');

	if(tmpArr != null)
	{
		if(!(tmpExp != null && getObjA('multiLevel', lclFrameWork) == null))
			for(var i=0;i<tmpArr.length - 1;i++)
			{
				if(tmpExp == null)
				{
					if( getObj('ObjId_' + tmpArr[i], lclFrameWork) != null )
					{
						getObj('ObjId_' + tmpArr[i], lclFrameWork).checked = true;

						if( lclFrameWork.disableDefaults == true )
						{
							getObj('ObjId_' + tmpArr[i], lclFrameWork).disabled = true;
							getObj('Text' + tmpArr[i], lclFrameWork).onclick = null;
							getObj('Text' + tmpArr[i], lclFrameWork).style.cursor = 'default';
						}
					}
				}
				else
				{
					var tmp = getObjA('multiLevel', lclFrameWork)
					for(var j=0;j<tmp.length;j++)
						if( tmp[j].getAttribute('ObjectId') == tmpArr[i] )
						{
							storeInTD( tmp[j].getAttribute('idx'), tmpExp[i], getLevelText( tmpExp[i], levelArray ) );
							break;
						}
				}
			}
			
		checkMultiValidation( getObjA('multiLevel', lclFrameWork) );	
	}
	else
	{
		for(var j=0;j<getObjA('multiLevel', lclFrameWork).length;j++)
		{
			if(tmpExp[j] > -1)
				storeInTD( j, tmpExp[j], getLevelText( tmpExp[j], levelArray ) );
			else
				checkMultiValidation( getObjA('multiLevel', lclFrameWork)[j], j );
		}
	}
}

function getLevelText( id, levelArray )
{
	var levelArray = eval('lclFrameWork.' + levelArray);
	var valueRtn = -1;
	for(var i=0;i<levelArray.length;i++)
		if( levelArray[i][0] == id )
		{
			valueRtn = levelArray[i][1];
			break;
		}
	
	return valueRtn;
}

function getHTML_Single( arr, levelArray, isSingle )
{
	var isWithLevels = (typeof(levelArray)!='undefined' && levelArray != null && levelArray != false)?true:false;
	var HTML = '';
	var HTMLfirstRow = '';

	if(typeof(arr) == 'object')
	{
		HTML = '<table class="autoComplete" cellpadding="0" cellspacing="0" width="100%">';

		for(var i=0;i<arr.length;i++)
		{
			if(i==0)
				HTMLfirstRow = 'id="firstRow" class="autoComplete2"';
			else if(i==1)
				HTMLfirstRow = '';

			if (isWithLevels)
			{
				HTML += '<TBODY onMouseOver="parent.doMO(this,\'autoComplete\', false)" ' + HTMLfirstRow + '>';
				HTML +=		'<tr class="TD_text TD_text2">';
				HTML +=			'<td><INPUT name="multiLevel" Id="ObjId_' + arr[i][0] + '" ObjectId="' + arr[i][0] + '" idx="' + i + '" type="' + ((isSingle)?'radio':'checkbox') + '" onClick="parent.checkMultiValidationWlevels( this, ' + i + ', \'' + levelArray + '\' )"/></td>';
				HTML +=			'<td><img src=\"' + drawImage("../images/pixel.gif") + '\" width="8" height="1"/></td>';
				HTML +=			'<td nowrap>';
				HTML +=				'<SPAN onClick="parent.chooseLevel(' + i + ', \'' + levelArray + '\', false )" id="Text' + arr[i][0] + '">' + arr[i][1] + '</SPAN><br>';
				HTML +=				'<DIV class="DIVlevel" id="tmpDIVlevel1_' + i + '"/>';
				HTML +=			'</td>';
				HTML +=			'<td><img src=\"' + drawImage("../images/pixel.gif") + '\" width="8" height="1"/></td>';
				HTML +=			'<td width="100%" nowrap>';
				HTML +=				'<SPAN id="levelText' + i + '" name="levelText' + i + '" class="level" onClick="parent.chooseLevel(' + i + ', \'' + levelArray + '\', true)"></SPAN><br>';
				HTML +=				'<DIV class="DIVlevel" id="tmpDIVlevel2_' + i + '"/>';
				HTML +=			'</td>';
				HTML +=		'</tr>';
				HTML += '</TBODY>';
			}
			else
			{
				HTML += '<TBODY onClick="doOC(\'' + arr[i][0] + '\')" onMouseOver="parent.doMO(this,\'autoComplete\')" ' + HTMLfirstRow + '>';
				HTML +=		'<tr>';
				HTML +=			'<td class="TD_arrow"><img src=\"' + drawImage("../images/pixel.gif") + '\" width="23" height="23"/></td>';
				HTML +=			'<td class="TD_text"><img src=\"' + drawImage("../images/pixel.gif") + '\" width="8" height="1"/></td>';				
				HTML +=			'<td class="TD_text" width="100%" id="Text' + arr[i][0] + '">' + arr[i][1] + '</td>';				
				HTML +=		'</tr>';
				HTML += '</TBODY>';
			}
		}
		
		if( arr.length < minRows  )
		{
			for(var i=arr.length;i<minRows;i++)
			{
				HTML += '<TBODY>';
				HTML += '<tr>';
				HTML += '<td class="TD_arrow"><img src=\"' + drawImage("../images/pixel.gif") + '\" width="23" height="23"/></td>';
				HTML += '<td class="TD_text"><img src=\"' + drawImage("../images/pixel.gif") + '\" width="8" height="1"/></td>';
				HTML += '<td class="TD_text" width="100%"></td>';				
				HTML += '</tr>';
				HTML += '</TBODY>';
			}				
		}
		HTML += '</table>';
	}
	
	return HTML;
}


//-- If you change something in this HTML builder you need to update:
//----- genXSLLanguagesJavascriptHTML.xsl
// The parameter 'arr', can get the array as object or the name of the array, like in RelatedSkills
function getHTML_Mult( arr, levelArray, hideCheckboxShowChooseLevel, categoryId, strIdChecked, strIdCheckedLevel )
{
	var arryName = null;
	if( typeof(arr) == 'string')
	{
		arryName = arr;
		arr = eval('lclFrameWork.' + arr)
	}

	var isWithLevels = (typeof(levelArray)=='undefined' || levelArray == null || levelArray == 'null')?false:true;	
	var objectType = '';
	var category = '';
	var HTML = '';
	var szHidden = '';

	if(typeof(arr) == 'object')
	{
		var isMultipleCategories = checkMultipleCategories(arr)

		HTML = '<table class="listMultiple" cellpadding="0" cellspacing="0" width="100%">';
		for(var i=0;i<arr.length;i++)
		{
			if( isMultipleCategories == true && categoryId == null && typeof(arr[i]['Category']) != 'undefined' && typeof(arr[i]['CategoryId']) != 'undefined')
			{
				if(category != arr[i]['Category'])
				{
					HTML += '<tr><td class="TD_Category" width="100%" nowrap><a href="javascript:void(null)" name="cID' + arr[i]['CategoryId'] + '" id="cID' + arr[i]['CategoryId'] + '" idx="' + i + '" onClick="parent.openCloseContent(this,' + i + ',\'' + arryName + '\',\'' + levelArray + '\',\'' + arr[i]['CategoryId'] + '\',\'' + strIdChecked + '\',\'' + strIdCheckedLevel + '\')" status="0" title="Click to open/close this section">&nbsp;> ' + arr[i]['Category'] + '</a></td></tr>';
					HTML += '<TR><TD name="cont' + i + '" id="cont' + i + '" style="display:none"></TD></TR>';
				}				
				category = arr[i]['Category'];								
			}
			else if( categoryId == null || (categoryId != null && typeof(arr[i]['CategoryId']) != 'undefined' && categoryId == arr[i]['CategoryId']) )
			{			
				if(typeof(arr[i]['ObjectType']) != 'undefined')
					objectType = arr[i]['ObjectType'];
			
				HTML += '<TBODY onMouseOver="parent.doMO(this,\'autoComplete\', false)">';
				HTML += '<tr class="TD_text TD_text2">'; 
				HTML += '<td width="10"><INPUT name="multiLevel" Id="ObjId_' + arr[i][0] + '" ObjectId="' + arr[i][0] + '" idx="' + i + '" type="checkbox" ' + ((hideCheckboxShowChooseLevel==true)?' style="display:none" checked ':'') + ' ';
					if (isWithLevels)
						HTML += ' onClick="parent.checkMultiValidation( this, ' + i + ', \'' + levelArray + '\', \'' + objectType + '\' )"';
					else
						HTML += ' onClick="parent.doOnClick(' + arr[i][0] + ', false )"';
					HTML += '/></td>';
				HTML += '<td width="8"><img src="' + drawImage("../images/pixel.gif") + '" width="3" height="1"/></td>';


				if (isWithLevels)
				{
					HTML += '<td width="200" nowrap>';
					HTML +=		'<SPAN onClick="parent.chooseLevel(' + i + ', \'' + levelArray + '\', false, \'' + objectType + '\' )" id="Text' + arr[i][0] + '">' + arr[i][1] + '</SPAN><br>';
					HTML +=		'<DIV class="DIVlevel" id="tmpDIVlevel1_' + i + '"/>';
					HTML += '</td>';
					HTML += '<td width="8"><img src="' + drawImage("../images/pixel.gif") + '" width="8" height="1"/></td>';
					HTML += '<td nowrap>';
					HTML +=		'<SPAN id="levelText' + i + '" name="levelText' + i + '" onClick="parent.chooseLevel(' + i + ', \'' + levelArray + '\', true, \'' + objectType + '\')">&#160;</SPAN><br>';
					HTML +=		'<DIV class="DIVlevel" id="tmpDIVlevel2_' + i + '"/>';
					HTML +=	'</td>';
				}
				else
				{
					HTML += '<td width="100%" nowrap>';
					HTML +=		'<SPAN onClick="parent.doOnClick(' + arr[i][0] + ', true )" id="Text' + arr[i][0] + '">' + arr[i][1] + '</SPAN><br>';
					HTML += '</td>';
				}
				HTML += '</tr>';
				HTML += '</TBODY>';
			}
		}	
		HTML += '</table>';
	}			
	return HTML;
}	

function checkMultipleCategories( arr )
{
	var haveMultiple = false;
	var categoryId = null;

	for(var i=0;i<arr.length;i++)
	{
		if( typeof(arr[i]['CategoryId']) != 'undefined' )
		{
			if(categoryId!=null && categoryId != arr[i]['CategoryId'])
			{
				haveMultiple = true;
				break;
			}
			else
				categoryId = arr[i]['CategoryId'];
		}
		else
			break;
	}
	
	return haveMultiple;
}

function doOnClick( idx, needCheck )
{
	if(needCheck)
		getObj('ObjId_' + idx, lclFrameWork).checked = !getObj('ObjId_' + idx, lclFrameWork).checked;

	if( lclFrameWork.specialValueId == getObj('ObjId_' + idx, lclFrameWork).getAttribute('ObjectId') )
	{			
		if( getObj('ObjId_' + idx, lclFrameWork).checked )
		{
			showSpecialValueIframe( idx );
			return;		
		}
		else
			hideSpecialValueIframe( idx );
	}
		
	checkMultiValidation( getObjA('multiLevel', lclFrameWork) );
}

function chooseLevel( idx, levelArray, isSecondDIV, objectType )
{
	var tmpDIVlevel = getObj( 'tmpDIVlevel'+((isSecondDIV)?'2':'1') + '_' + idx, lclFrameWork );
	var DIVlevels = getObj('DIVlevels', lclFrameWork);

	DIVlevels.style.left = tmpDIVlevel.offsetLeft + tmpDIVlevel.offsetParent.offsetLeft + 'px';
	DIVlevels.style.top = tmpDIVlevel.offsetTop + tmpDIVlevel.offsetParent.offsetTop - getObj('DIVlist', lclFrameWork).scrollTop + 'px';
	DIVlevels.innerHTML = getHTML_levels( idx, levelArray, objectType );
	DIVlevels.style.display = "block";

	if( document.dir.toUpperCase() == 'RTL')
	{
		var DIVlist = getObj('DIVlist', lclFrameWork );
		DIVlevels.style.left = DIVlevels.offsetLeft + tmpDIVlevel.offsetWidth - DIVlevels.offsetWidth + ((DIVlist.clientHeight < DIVlist.scrollHeight)?18:0) +'px';
	}

	if( DIVlevels.offsetTop + DIVlevels.offsetHeight > lclFrameWork.document.body.offsetHeight )
		DIVlevels.style.top = DIVlevels.offsetTop - DIVlevels.offsetHeight - 10 + 'px';
}

function getHTML_levels( idx, levelArray, objectType )
{
	var levelArray = eval('lclFrameWork.' + levelArray);
	var HTMLfirstRow = "";

	var HTML = '';
	HTML = '<table class="levels" cellpadding="0" cellspacing="0" width="100%">';
	
	for(var i=0;i<levelArray.length;i++)
		if( objectType == '' || levelArray[i][3] == objectType )
		{
			HTML += '<TBODY onMouseOver="parent.doMO(this,\'levels\', true)">';
			HTML += '<tr class="TD_text">';
			HTML += '<td width="12" class="TD_arrow"><img src="' + drawImage("../images/pixel.gif") + '" width="12" height="12"/></td>';				
			HTML += '<td width="4"><img src="' + drawImage("../images/pixel.gif") + '" width="4" height="1"/></td>';				
			HTML += '<td onClick="parent.storeInTD(' + idx + ',' + levelArray[i][0] + ', this.innerHTML)" width="100%" nowrap>' + levelArray[i][1].substr(0,50) + '</td>';
			HTML += '</tr>';
			HTML += '</TBODY>';
		}
	HTML += '</table>';

	return HTML;
}

function storeInTD( idx, ID, txt )
{
	var tmp = getObjA('multiLevel', lclFrameWork);
	var objInput = null;
	for(var i=0;i<tmp.length;i++)
		if( tmp[i].getAttribute('idx') == idx )
		{
			objInput = tmp[i];
			break;
		}

	objInput.checked = true;
	objInput.setAttribute('LevelId',ID);	
	
	getObj('levelText' + objInput.getAttribute('idx'), lclFrameWork).className = 'level';
	getObj('levelText' + objInput.getAttribute('idx'), lclFrameWork).innerHTML = txt.substring(0,30);
	getObj('DIVlevels', lclFrameWork).style.display = 'none';	
	
	checkMultiValidation( objInput );
}

function getArrFromTxt( mainArr, txt )
{
	var arr = mainArr[txt.substr(0,1).toUpperCase()];

	if( typeof(mainArr[0]) == 'object')
	{
		arr = new Array();
		for(var j=0;j<mainArr.length;j++)
			if( (mainArr[j][1].substr(0,1)).toUpperCase() == txt.substr(0,1).toUpperCase() )
				arr[arr.length] = mainArr[j];
	}

	var backArr = arr;
	
	if( txt.length > 1 && typeof(arr) != 'undefined' )
	{
		var txtLength = txt.length;
		var backArr = new Array();
		var backIdx = 0;
		for(var i=0;i<arr.length;i++)
			if( txt.toUpperCase() == arr[i][1].substr(0,txtLength).toUpperCase() )
			{
				backArr[backIdx] = new Array( arr[i][0], arr[i][1] );
				backIdx += 1;
			}
	}
	
	if( typeof(backArr) == 'undefined' )
		backArr = new Array();
	
	return backArr;
}

function doMO( obj, className, isSecond )
{
	var objTxt = 'oldObj' + ((isSecond)?'2':'');
	var tmp = eval(objTxt);
		
	if(lclFrameWork.objRowPainted != null)
	{
		lclFrameWork.objRowPainted.className = className;
		lclFrameWork.objRowPainted = null;
	}

	if(tmp != obj)
	{
		if(tmp != null)		
			tmp.className = className;

		obj.className = className + '2';
		eval(objTxt + '= obj');
		
		if(!isSecond && getObj('DIVlevels', lclFrameWork) != null)
			getObj('DIVlevels', lclFrameWork).style.display = "none";
	}
}	

function checkMultiValidation( obj, idx, levelArray, objectType  )
{
	var objInput = getObjA('multiLevel', lclFrameWork);
	if( objInput == null )
		return;

	// Check for multiple selection with levels (ex. skills, languages)
	if( obj.checked )
	{
		if( obj.getAttribute('LevelId') == null && getObj('levelText' + idx, lclFrameWork) != null )
		{
			obj.setAttribute('LevelId',-999);
			getObj('levelText' + idx, lclFrameWork).className = 'level2';
			getObj('levelText' + idx, lclFrameWork).innerHTML = (lclFrameWork.strChooseLevel!=null)?lclFrameWork.strChooseLevel:'\u05d1\u05d7\u05e8 \u05e8\u05de\u05d4';
		}
	}
	
	var enableNextButton = true;
	var cntAllNotChecked = 0;
	for(var j=0;j<objInput.length;j++)
	{
		if( objInput[j].checked )
		{
			cntAllNotChecked += 1;
			if( objInput[j].getAttribute('LevelId') == -999 )
				enableNextButton = false;
		}
		else if( objInput[j].getAttribute('LevelId') != null )
		{
			objInput[j].removeAttribute('LevelId');
			getObj('levelText' + objInput[j].getAttribute('idx'), lclFrameWork).className = '';
			getObj('levelText' + objInput[j].getAttribute('idx'), lclFrameWork).innerHTML = '&#160;';
		}
	}

	if( (lclFrameWork.mustSelect && cntAllNotChecked == 0) || (lclFrameWork.maxSelect != null && cntAllNotChecked > lclFrameWork.maxSelect))
		enableNextButton = false;

	changeContinueButton(enableNextButton)
}

function openCategoriesWithSelectedValues( mainArray, levelArray, strIdChecked, strIdCheckedLevel )
{
	var tmpArr = mainArray;
	if( typeof(mainArray) == 'string' )
		tmpArr = eval('lclFrameWork.' + mainArray);
					
	var tmpIds = (','+strIdChecked+',').toString();
	var categories = new Array();
	
	if( tmpArr != null)
	{
		for(var z=0;z<tmpArr.length;z++)
			if( tmpIds.indexOf(','+tmpArr[z][0]+',') > -1 )
			{
				if( tmpArr[z]['CategoryId'] == null )
					break;
				else
					categories[categories.length] = tmpArr[z]['CategoryId'];
			}
			
		for(var c=0;c<categories.length;c++)
			if( getObj('cID' + categories[c], lclFrameWork) != null )
				openCloseContent( getObj('cID' + categories[c], lclFrameWork), getObj('cID' + categories[c], lclFrameWork).getAttribute('idx'), mainArray, levelArray, categories[c], strIdChecked, strIdCheckedLevel);
	}
}
//---- List down Functions -----

//---- Make XML functions -----
function getXML( objValues, attributeName, attributeValue, isBackEmptyROOT )
{
	var szTmp = "";
	var objInput = getObjA('multiLevel', lclFrameWork);
	
	var paramXML =  "";
	if( objInput != null )
		for(var i=0;i<objInput.length;i++)
			if( objInput[i].type=='text' || objInput[i].checked )
			{
				szTmp = "";

				if(objInput[i].getAttribute('ObjectId') != null)
					szTmp += " Id=\"" + objInput[i].getAttribute('ObjectId') + "\"";

				if(objInput[i].getAttribute('value') != null && objInput[i].getAttribute('value') != '' && objInput[i].type != 'radio' && objInput[i].type != 'checkbox')
					szTmp += " Value=\"" + escapeXML(objInput[i].getAttribute('value')) + "\"";

				if(objInput[i].getAttribute('LevelId') != null)
					szTmp += " LevelId=\"" + objInput[i].getAttribute('LevelId') + "\"";

				if( typeof(attributeName)!='undefined' && attributeName!='' && attributeName != null && typeof(attributeValue)!='undefined' && attributeValue != null )
					szTmp += " " + attributeName +"=\"" + escapeXML(attributeValue) + "\"";

				if( szTmp != "" )
					paramXML += "<XML" + szTmp + "/>";				

			}

	if(paramXML != '' || isBackEmptyROOT == true)
		return ("<ROOT>" + paramXML + "</ROOT>");
	else
		return false;
}
//---- Make XML functions -----

