var totalSelected=0;
function multiSelectDTO(id,code,codeDesc,checked, preferred){
	this.id=id;
	this.code=code;
	this.codeDesc=codeDesc;
	this.checked=checked;
	this.preferred=preferred;
}

function multicomCreateObject(oParam, flag){	
//	alert("called ---multicomCreateObject ");
//	alert("flag ---multicomCreateObject "+flag);
 	try{
		var sourceStr=oParam.sourceStr;
		if(sourceStr){
			var multiDTOsListStr=sourceStr.split("|");
			for(count=0;count<multiDTOsListStr.length;count++){
				if(multiDTOsListStr){
					var multiDTOStr=multiDTOsListStr[count].split("~");
						if(flag=='true' || flag==true) multiDTOStr[3]='false';
						oParam.finalList[oParam.finalList.length]=new multiSelectDTO(multiDTOStr[0],multiDTOStr[1],multiDTOStr[2],multiDTOStr[3], multiDTOStr[4]);
				}
			}
		}
//		alert("oParam.finalList:::"+oParam.finalList);
		multicom_refreshTable(oParam);
 	}
 	catch(e){
		//alert(e.message);
	}
 }

 function multiSelect_createTr(oParam,rowcount){
		var loc_multiSelectDTO=oParam.finalList[rowcount];
	    var tr = document.createElement("tr");
		var td = createTd(null,null,null,"","left","top","");
		var isDisabled=isDisabeld(loc_multiSelectDTO,oParam);
		if(oParam.disabled){isDisabled=true;}
		
			var checkBox=createEl(("multiSelectDiv"+rowcount),null,rowcount,'checkbox',null,((loc_multiSelectDTO.checked=='true' || loc_multiSelectDTO.checked==true)?'checked':null),isDisabled);
		
		//td.innerHTML="<input type='checkbox' "+checked+" onclick='multicom_seleccted(this,\""+rowcount+"\");' value='"+arry[1]+"~"+arry[2]+"' id='multiSelectDiv"+rowcount+"' name='multiSelectDiv"+rowcount+"'/>"
		//alert("checkBox.checked......"+checkBox.checked+".before."+totalSelected);
		checkBox.checked=(loc_multiSelectDTO.checked=='true')?true:false;
		//alert("checkBox.checked ---- "+checkBox.checked);
		if(checkBox.checked){
			//alert("total count *****  --- "+totalSelected);
			totalSelected++;
		}
		//alert("total count *****  --- "+totalSelected);
		//alert("totalSelected-----------"+totalSelected);
		checkBox.onclick=function(){ multicom_seleccted(this,oParam); };
		td.appendChild(checkBox);
		tr.appendChild(td);
		var td1 = createTd(null,null,null,"","left","top","");
//		alert("is preferred ---> "+loc_multiSelectDTO.preferred);
		if(loc_multiSelectDTO.preferred=='true'){
//			alert("Inside bold preference");
			var bold = document.createElement("b");
			bold.appendChild(document.createTextNode(loc_multiSelectDTO.code+"-"+loc_multiSelectDTO.codeDesc));
			td1.appendChild(bold);
		}
		else 	
			td1.appendChild(document.createTextNode(loc_multiSelectDTO.code+"-"+loc_multiSelectDTO.codeDesc));
		tr.appendChild(td1);
		return tr;
 }	

 function multicom_seleccted(obj,oParam){
 	//alert("checked value.."+obj.value+"obj.."+obj.id);
	try{
		if(!eval(oParam.compId+"_precall(obj,oParam)")){
		}
	}
	catch(e){}
	var index=obj.id.substring(14,obj.id.length);
	//alert("index..."+index);
	if(obj.value){
		//alert("oParam.finalList"+oParam.finalList[index].checked);
		if(oParam.finalList)
		oParam.finalList[index].checked=(obj.checked)?'true':'false';
	}
 	multicom_getFinalString(oParam);
 }

 function multicom_refreshTable(oParam){
 	if(oParam.finalList){
			var table = createTable("","","0","0","0","100%","100%","","");
			var tbody= document.createElement("tbody");
			//alert("oParam.finalList_length"+oParam.finalList);
			totalSelected=0;
			for(count=0;count<oParam.finalList.length;count++){
				if(oParam.finalList[count].code && oParam.finalList[count].codeDesc){
					//alert("count..checked."+oParam.finalList[count].checked);
					//alert("count..checked."+oParam.finalList[count].code +"-------"+ oParam.finalList[count].codeDesc);
					//if(oParam.finalList[count].checked=='true')totalChecked++;
					var trObj=multiSelect_createTr(oParam,count);
					if(trObj)tbody.appendChild(trObj);
			}
			}
			oParam.totalSelected=totalSelected;
			table.appendChild(tbody);
			var divObj=document.getElementById('dv'+oParam.compId);
			//alert("before append...divObj");
			divObj.innerHTML="";
			divObj.appendChild(table);
			multicom_getFinalString(oParam);
		}
 }
 function multicom_getFinalString(oParam){
 	var selectString="";
 	var prefStr="";
	if(oParam.finalList){
		for(count=0;count<oParam.finalList.length;count++){
			if(oParam.finalList[count]){
				if(oParam.finalList[count].code&&oParam.finalList[count].codeDesc){
					selectString=selectString+"|"+oParam.finalList[count].id+"~"+oParam.finalList[count].code+"~"+oParam.finalList[count].codeDesc+"~"+oParam.finalList[count].checked+"~"+oParam.finalList[count].preferred;
					if(oParam.finalList[count].preferred=='true'){
						prefStr+="|"+oParam.finalList[count].id+"~"+oParam.finalList[count].code+"~"+oParam.finalList[count].codeDesc+"~"+oParam.finalList[count].checked+"~"+oParam.finalList[count].preferred;
					}
				}
			}
		}
	}
	oParam.preferredList=prefStr;
 	if(oParam.hdnSourceComp) oParam.hdnSourceComp.value=selectString;
 	//alert(selectString);
 }
 function multicom_addCode(oParam,multiSelectDTO){
	 //alert(multiSelectDTO.code);
	if(multiSelectDTO){
		var duplicateFlag=multicom_checkforDuplicates(multiSelectDTO,oParam);
		//alert("duplicateFlag...."+duplicateFlag);
		if(!duplicateFlag){
			 oParam.finalList[oParam.finalList.length]=multiSelectDTO;
			 	 //multicom_refreshTable(oParam);
		}
		//S706849-Added to check existing records which was selected
		multicom_refreshTable(oParam);
	}
 }

 function multicom_removeCode(oParam,multiSelectDTO){
	 if(oParam.finalList){
	    var finaArray=new Array();
		for(i=0;i<oParam.finalList.length;i++){
			var selectDTO=oParam.finalList[i];
			if(selectDTO && selectDTO.code!=multiSelectDTO.code){
				finaArray[finaArray.length]=selectDTO
			}
		}
		oParam.finalList=finaArray;
	 }
	 multicom_refreshTable(oParam);
 }

 function  multicom_checkforDuplicates(objDto,oParam){
 //S706849-Added to check existing records which was selected
	for(i=0;i<oParam.finalList.length;i++){
		var selectDTO=oParam.finalList[i];
		if(selectDTO && selectDTO.code == objDto.code){
			selectDTO.checked = true;
		}
	}
	 
  	if(oParam.hdnSourceComp)
  	if(oParam.hdnSourceComp.value){
	  return (oParam.hdnSourceComp.value.indexOf(objDto.code+"~")!=-1)?true:false;
  	}
	return false;	
 }
function isDisabeld(loc_multiSelectDTO,oParam){
	var disbledFlag=false;
	if(oParam.disabledCodes){
		disbledFlag=(oParam.disabledCodes.indexOf(loc_multiSelectDTO.code)!= -1)?true:false;
	}
	return disbledFlag;
}
