	function DTDOtherChargesDTO(){
		this.action='';
		this.chargeCode='';
		this.chargeValue='';
		this.chargeId='';
        this.totalCharges='';
	}
	var currentRowIndex=null;
	function getAmendChargesArray(oParam,notresetFlag){
		//alert("Entering into getAmendChargesArray");
		var finalString = oParam.hdnComponent.value;
        if(!notresetFlag)
            oParam.amendChargesList=new Array();
		if(finalString!=""){
				var colArrays=finalString.split('|');
				for(i=0;i<colArrays.length;i++){
					var dto=new DTDOtherChargesDTO();
					if(colArrays[i]){
						var rowArray=colArrays[i].split('~');

						dto.chargeCode=rowArray[0];
						dto.chargeValue=rowArray[1];
						dto.chargeId=rowArray[2];
						dto.action=rowArray[3];
						oParam.amendChargesList[oParam.amendChargesList.length]=dto;
					}
				}
		}
		//alert("Exiting from getAmendChargesArray");
	}

	function getAmendChargesString(oParam){
		var finalString="";
		var mesg=_amendCharges_ValidateChargeCodes(oParam);
			 var erString="";
			 for(k=0;k<mesg.messages.length;k++){
			 	erString+=mesg.messages[k]+"\n";
			 }
			if(!isBlank(erString)){	alert(erString);return false;}

		for(i=0;i<oParam.amendChargesList.length;i++){
            if(oParam.amendChargesList[i]){
            	if((oParam.amendChargesList[i].action=="1") && ((oParam.amendChargesList[i].chargeCode=='')||(oParam.amendChargesList[i].chargeValue=='')))
            		continue;
            	else
            	finalString+=oParam.amendChargesList[i].chargeCode
                    +'~'+oParam.amendChargesList[i].chargeValue
                    +'~'+((oParam.amendChargesList[i].chargeId)?oParam.amendChargesList[i].chargeId:'')+"~"+oParam.amendChargesList[i].action+'|';
            }
		}
		oParam.hdnComponent.value=finalString;
		return true;
		//alert(finalString);
	}
	var popupObj;
	function open_amendCharges(oParam,notresetFlag){
        try{
			if(!eval(oParam.componentId+"_preCallTotalBaseCharges(oParam);")) return;

		}catch(e){
			//alert(e.message);
		}
		//alert("Entering into open_amendCharges");
		oParam.saveFlag=false;
		oParam.isModified=false;
		popupObj = new popupDTO('Amend Charges');
		popupObj.isprocessing = false;
		//alert(oParam.componentId);
		popupObj.componentid = oParam.componentId;
		var saveBtnAccFlag = oParam.isReadOnly;
		popupObj.isSaveEnabled=(!saveBtnAccFlag)?true:false;
		if(!notresetFlag) getAmendChargesArray(oParam,notresetFlag);
		popupObj.data=create_amendCharges_PopupContent(oParam);
		popupObj.height=150;
		popupObj.width=320;
		popupObj.top=250;
		popupObj.left=200;
        popupObj.instanceNo=oParam.popUpInstance;
        displayPopUp(popupObj);
		_amendCharges_calTotal(oParam);
		//alert("Exiting from open_amendCharges");
	}

	function create_amendCharges_PopupContent(oParam){
		//alert("Entering into create_amendCharges_PopupContent");
		var containerTB = createTable(null,"","0","0","0","100%","100%","center");
		tbody = document.createElement("tbody");
		containerTB.appendChild(tbody);
		var tr = createTr();
		tbody.appendChild(tr);
        var td=createTd();
	    tr.appendChild(td);
	   // var testTB=getAmendCharges_Table(oParam);
	   // td.appendChild(testTB);
	    var mainTB= getAmendCharges_mainTable(oParam);
	    td.appendChild(mainTB);
	    //alert('container inner html---->'+containerTB.innerHTML);
		return containerTB;
		//alert("Entering from create_amendCharges_PopupContent");
	}

	function getAmendCharges_mainTable(oParam){
		//alert("Entering into getAmendCharges_mainTable");
		var mnTB=createTable(null,"",null,null,"0","100%");
		tbody = document.createElement("tbody");
		mnTB.appendChild(tbody);
		var tr=createTr();
		tbody.appendChild(tr);
		var td=createTd(null,"borderall",null,null,null,"top");
	    tr.appendChild(td);

	    var contTB=createTable(null,"",null,null,"0","100%");
	    td.appendChild(contTB);
	    tbodycnt = document.createElement("tbody");
	    contTB.appendChild(tbodycnt);
	    var trcnt1=createTr();//first row
	    tbodycnt.appendChild(trcnt1);
	    var tdcnt1=createTd(null,"",null,null,null,null);
	    trcnt1.appendChild(tdcnt1);

	    var accTB=getComponent_AmendChargesTable(oParam);
	    tdcnt1.appendChild(accTB)
	    //alert("Exiting from getAmendCharges_mainTable");
	    return mnTB;
	}
	function getComponent_AmendChargesTable(oParam){
		//alert("Entering into getComponent_AmendChargesTable");
		var consAccTB=createTable(null,"",null,null,"0","100%");
		tbody = document.createElement("tbody");
		consAccTB.appendChild(tbody);
		var tr=createTr();
		tbody.appendChild(tr);
		var td=createTd();
		tr.appendChild(td);
		//var titleAccTB= _amendCharges_createTitleTB("Amend Charges","200px","80px","110px","10px");
		//td.appendChild(titleAccTB);
		//crate div here append string of generation table
		var mainDiv=createDiv();
		td.appendChild(mainDiv);
		mainDiv.innerHTML=getAmendCharges_Table(oParam);

		return consAccTB;
	}
	function  _amendCharges_createTitleTB(text,tbwidth,td1w,td2w,td3w){
		//alert("Entering into _amendCharges_createTitleTB");
		try{
			var titleTB=createTable(null,"","0","0","0",((tbwidth)?tbwidth:"100%"),"","");
			tbody=document.createElement("tbody");
			titleTB.appendChild(tbody);
			var tr=createTr();
			tbody.appendChild(tr);

			var td1=createTd(null,"borderbottom",((td1w)?td1w:"5%"),null,null,null,null,null,null,null);
			tr.appendChild(td1);
			var img1=createImage(null,"images/CellFiller.JPG",null,null,null);
			td1.appendChild(img1);

			var td2=createTd(null,"panelname",((td2w)?td2w:"10%"),"5",null,"middle",null,"2",null,null);
			tr.appendChild(td2);
			title=document.createTextNode(text);
			td2.appendChild(title);

			var td3=createTd(null,"borderbottom",((td3w)?td3w:"85%"),null,null,null,null,null,null,null);
			tr.appendChild(td3);
			var img2=createImage(null,"images/CellFiller.JPG",null,null,null);
			td3.appendChild(img2)

			var tr1=createTr();
			tbody.appendChild(tr1);
			var td4=createTd(null,"borderleft");
			tr1.appendChild(td4);
			var img3=createImage(null,"images/CellFiller.JPG");
			td4.appendChild(img3);

			var td5=createTd(null,"borderright");
			tr1.appendChild(td5);
			var img4=createImage(null,"images/CellFiller.JPG");
			td5.appendChild(img4);
		}catch(e){alert(e.message);}
		//alert("Exiting from _amendCharges_createTitleTB");
		return titleTB;
	}

    function getAmendCharges_Table(oParam){
		//alert("Entering into getAmendCharges_Table");
		var mainStr="";
        var btnStr="";
		//btnStr+="<td colspan=\"2\" align=\"right\" valign=\"bottom\">";
		if(minimumRows==maximumRows)reado=true;
		if(!reado){
			btnStr+="<input type=\"button\" class=\"button\" value=\"Add\" onclick=\"_amendCharges_addRow("+oParam.componentId+"_amendChargesComp);\"/>";
		}
        //mainStr+="<table width=\"200px\" border=0 class=\"borderall\" cellspacing=\"0\" cellpadding=\"0\" >";
        //mainStr+="<tr><td>";
		mainStr+="<table width=\"275px\" border=0 cellspacing=\"0\" cellpadding=\"0\" >";
		mainStr+="<tr><td class=\"comp_grdRowTopFirst\" nowrap>Charges Quoted</td><td align=\"left\" class=\"comp_grdRowDataTopFirst\"><input type=\"input\" class=\"inputsReadOnly\" readOnly=\"true\" id=\"txtTotCharges\" style=\"width:100px;text-align:right;\" name=\"txtTotCharges\" value=\""+FormatNRoundNumber(null,-1,-1,2,false,10,oParam.totalCharges,true)+"\" onfocus=\"onFocus_FieldClassChange(this,'DECIMAL2');\"/>&nbsp;<input type=\"button\" class=\"button\" value=\"Add\" onclick=\"_amendCharges_addRow("+oParam.componentId+"_amendChargesComp);\"/></td></tr>";
        //mainStr+="<tr><th class=\"comp_paneltableheader\" align=\"center\">Code</th><th  class=\"comp_paneltableheader\" align=\"center\">Value</th></tr>";
		var tdCss = new Array("comp_grdRowDataFirst","comp_grdRowData");
		var strdisabled="";
		var minimumRows=0;
		var maximumRows=oParam.maxRows;
		var count=0;
		for(rows=0;rows<oParam.amendChargesList.length;rows++){
			if(oParam.amendChargesList[rows].action!="2")	count++;
		}
		for(tempCount=count;tempCount<oParam.minRows;tempCount++){
			_amendCharges_addEmptyObj(oParam);
		}
		for(rows=0;rows<oParam.amendChargesList.length;rows++){
			if(oParam.amendChargesList[rows].action!="2"){
				var dtoProps=new Array(	oParam.amendChargesList[rows].chargeCode,FormatNRoundNumber(null,-1,-1,2,false,10,oParam.amendChargesList[rows].chargeValue,true));
				var trClass=(rows%2==0)?"grdRow":"grdRowAlt";
				mainStr+="<tr class=\""+trClass+"\">";
					var strTr="";
						for(i=0;i<dtoProps.length;i++){
							var reado = oParam.isReadOnly;
							strTr+=_amendCharges_generateControl(oParam,tdCss[i],dtoProps[i],rows,i,reado);
						}
                    mainStr+=strTr;
					mainStr+="</tr>";
					minimumRows++;
			}
		}

        mainStr+="<tr><td class=\"comp_grdRowDataFirst\">Total</td><td align=\"left\" class=\"comp_grdRowData\"><input type=\"input\" class=\"inputsReadOnly\" readOnly=\"true\" id=\"txtTotal\" style=\"width:100px;text-align:right;\" name=\"txtTotal\" onfocus=\"onFocus_FieldClassChange(this,'DECIMAL2');\" /></td></tr></table>";
		return mainStr;
	}

	function _amendCharges_generateControl(oParam,css,val,row,col,flag){
		//alert("Entering into _amendCharges_generateControl");
		var strdisabled = (flag)?((col==0||col==1)?"disabled":"readOnly"):"onchange=\"_amendCharges_upDateValues("+oParam.componentId+"_amendChargesComp,this,"+row+","+col+")\"";
		var str="";
		var tdWidth=(col==0)?"style=\"width:75px\"":"style=\"width:100px\"";
		str+="<td class=\""+css+"\" align=\"left\" "+tdWidth+">";


		var max=((col==0)?3:10);
		var inputCSS=(col==0)?("style=\"width:50px;text-align:left;text-transform:uppercase;\""):("style=\"width:100px;text-align:right;\"");
		var imgStr=(flag)?"":"<a href=\"javascript:_amendCharges_invokeCodesLOV("+oParam.componentId+"_amendChargesComp,"+row+")\" ><img src=\"images/ico_LOV.gif\" border=0 id=\"amdChargeID\"></a>";
		var codeStr="<input type=\"input\" nowrap class=\"inputs\""+inputCSS+" id=\"txtCode"+row+"\" name=\"txtCode"+row+"\" value=\""+val+"\" "+strdisabled+" maxlength=\""+max+"\" onblur=\"onBlur_FieldClassChange(this,'UCALPHA');\"onfocus=\"onFocus_FieldClassChange(this,'UCALPHA');\">"+imgStr+"";
		var descStr="<input type=\"input\" class=\"inputs\""+inputCSS+"id=\"txtCodeDesc"+row+"\" name=\"txtCodeDesc"+row+"\" value=\""+val+"\" "+strdisabled+" maxlength=\""+max+"\" onblur=\"onBlur_FieldClassChange(this,'DECIMAL2');\"onfocus=\"onFocus_FieldClassChange(this,'DECIMAL2');\">";
		str+=(col==0)?codeStr:descStr;


		str+="</td>";
		//alert("Exiting from _amendCharges_generateControl");
		return str;
	}

    function _amendCharges_addEmptyObj(oParam){
		//alert("Entering into _amendCharges_addEmptyObj");
		var dtoEmpty=new DTDOtherChargesDTO();
		dtoEmpty.action="1";
		dtoEmpty.chargeCode='';
		dtoEmpty.chargeValue='';
		oParam.amendChargesList[oParam.amendChargesList.length]=dtoEmpty;
	}

    function _amendCharges_addRow(oParam){
    	//alert("Entering into _amendCharges_addRow");
		if(oParam.amendChargesList.length>=oParam.minRows){
                _amendCharges_addEmptyObj(oParam)
            }
        open_amendCharges(oParam,true);
        if(oParam.chargeCode!="" && oParam.chargeValue!="")
			oParam.isModified=true;
	}
	function _amendCharges_upDateValues(oParam,obj,row,col){
		var type=((col==0)?"UCALPHA":"DECIMAL2");
		var maxlen=((col==0)?3:10);
		var str=obj.value;
		/*if(col==0){
			str=doCaseChange(obj,type,maxlen);
			if(!validateDataType(type,str)){
				//obj.value="";
				str="";
			}
		}*/
        /*if(str==""){
            oParam.amendChargesList[row].chargeCode='';
			oParam.amendChargesList[row].chargeValue='';
		}*/
		if (oParam.amendChargesList[row].action!="2"){
			oParam.amendChargesList[row].action=((oParam.amendChargesList[row].action!="1")?((str==""))?"2":"0":oParam.amendChargesList[row].action);
			if(oParam.amendChargesList[row].action!="3"){
				oParam.isModified=true;
			}
			switch(col){
				case 0:
				oParam.amendChargesList[row].chargeCode=str;
				break;
				case 1:
				oParam.amendChargesList[row].chargeValue=str;
				_amendCharges_calTotal(oParam);
				break;

			}
		}
	}

	function _amendCharges_invokeCodesLOV(oParam,row){
		var str=oParam.amendChargesList[row].chargeCode;
		//oParam.rowIndex=row;
		currentRowIndex=row;
		amdChargeID_onclick(str);
	}

	function amdChargeID_call(obj,preCall){
        obj.lovsearchval=preCall;
        return true;
    }
	function amdChargeID_callBack(arrData,isChecked){
		chargeCode=arrData[0];
		if(isChecked){
				eval("popupObj.formpopup.txtCode"+currentRowIndex+".value=\""+chargeCode+"\";");
				eval("popupObj.formpopup.txtCode"+currentRowIndex+".onchange()");
		}

	}

	function  _amendCharges_ValidateChargeCodes(oParam){
		var errMsg=new errorMessageDTO();
		if(oParam.amendChargesList){
			oParam.currentChargeCodes="";
			for(m=0;m<oParam.amendChargesList.length;m++){
				if(oParam.amendChargesList[m].chargeCode!=""){
					if(oParam.currentChargeCodes.indexOf(oParam.amendChargesList[m].chargeCode+",")!=-1){
						errMsg.messages[errMsg.messages.length++]="Duplicate Charge Code "+(oParam.amendChargesList[m].chargeCode).toUpperCase();//+" "+_amendCharges_errorMessages.dupchargeCode;
					}
					else{
						oParam.currentChargeCodes+=oParam.amendChargesList[m].chargeCode+",";
					}
				}
			}
			for(j=0;j<oParam.amendChargesList.length;j++){
				if(oParam.amendChargesList[j]){
					var chargeCode = oParam.amendChargesList[j].chargeCode;
					var chargeValue = oParam.amendChargesList[j].chargeValue;
					//alert("chargeCode== "+chargeCode);
					//alert("chargeValue== "+chargeValue);
					if(chargeCode != "" && chargeValue == ""){
						errMsg.messages[errMsg.messages.length++]="Please enter charge amount for charge code "+chargeCode.toUpperCase()+"\n";
						//alert("Please enter charge amount for charge code "+chargeCode);
						//return false;
					}else if(chargeCode == "" && chargeValue != ""){
						errMsg.messages[errMsg.messages.length++]="Charge code is mandatory if charge amount is entered\n";
					}
				}
			}
		}
		return errMsg;

	}
	
	function _amendCharges_calTotal(oParam){
		//alert("....._amendCharges_calTotal() called......");
		var totalAmount = parseFloat(eval("popupObj.formpopup.txtTotCharges.value"));
		if(oParam.amendChargesList){
			for(i=0;i<oParam.amendChargesList.length;i++){
				//alert("oParam.amendChargesList[i]"+oParam.amendChargesList[i]);
				if(oParam.amendChargesList[i].chargeValue){
					if((oParam.amendChargesList[i].chargeValue)!=''){
						//alert("value is:"+parseFloat(oParam.amendChargesList[i].chargeValue));
						if(!isNaN(parseFloat(oParam.amendChargesList[i].chargeValue))){
							totalAmount += parseFloat(oParam.amendChargesList[i].chargeValue);
						}
					}
				}
			}
		}
		//oParam.rateResponseRateDetailsDTO.otherChargesTotal=totalAmount;
		totalAmount=FormatNRoundNumber(null,-1,-1,2,false,10,totalAmount,true);
		eval("popupObj.formpopup.txtTotal.value=\""+totalAmount+"\";");
		oParam.totalCharges = totalAmount;		
	}



