/*

Name 		: 	dynamicTemplateFormula.js
Author		:	Priyam Chatterjee
Date		:	16/07/2013
Description	:	File contains all the js functions for dynamic template formula implementation

*/

var formulaDivId="formulaContent";
var tempattFieldsetIdText="tempattFieldSet_";  // tempattFieldSet_<tempattId>_<formulaIndex>
var expCountIdText="expCount_";  // expCount_<tempattId>_<formulaIndex>
var expressionTabIdText="expTab_";  //expTab_<tempattId>_<expIndex>
var expCondFlagIdText="expCondFlag_";  //expCondFlag_<tempattId>_<expIndex>
var expCondCountIdText="expCondCount_";  //expCondCount_<tempattId>_<expIndex>
var expValRowIdText="expValRow_";  //expValRow_<tempattId>_<expIndex>_<rowIndex>
var expTabIdText="expTab_";  //expTab_<tempattId>_<expIndex>
var expDivIdText="expDiv_";  //expDiv_<tempattId>_<expIndex>
var expCondValIdText="expCond_"; //expCond_<tempattId>_<expIndex>
var expCondValRowIdText="expCondRow_"; //expCondRow_<tempattId>_<expIndex>_<expCondIndex>

var valCondOperatorIdText="valCondOperator_";  			//valCondOperator_<tempattId>_<expIndex>_<expCondIndex>
var expCondTempattIdText="tempattId_";					//tempattId_<tempattId>_<expIndex>_<expCondIndex>
var expCondTempattTypeIdText="tempattType_";			//tempattType_<tempattId>_<expIndex>_<expCondIndex>
var expCondConditionalOperatorIdText="conditionalOperator_";	//conditionalOperator_<tempattId>_<expIndex>_<expCondIndex>
var expCondRightConditionTabIdText="rightConditionTab_";	//rightConditionTab_<tempattId>_<expIndex>_<expCondIndex>

var expValIdText="expVal_";  //expVal_<tempattId>_<expIndex>
var expValTrueIdText="expVal_true_";  //expVal_true_<tempattId>_<expIndex>
var expValFalseIdText="expVal_false_";  //expVal_false_<tempattId>_<expIndex>

var expFormulaIdText="expFormula_";  //expFormula_<tempattId>_<expIndex>
var expFormulaTrueIdText="expFormula_true_";  //expFormula_true_<tempattId>_<expIndex>
var expFormulaFalseIdText="expFormula_false_";  //expFormula_false_<tempattId>_<expIndex>


var expValParamExpValTypeIdText="expParamValType_"; //expParamValType_<tempattId>_<expIndex>
var expValParamTempattIdText="expParamValTempattId_"; //expParamValTempattId_<tempattId>_<expIndex>
var expValParamTempattTypeIdText="expParamValTempattTypeId_"; //expParamValTempattTypeId_<tempattId>_<expIndex>
var expValParamSymbolIdText="expParamSymbol_"; //expParamSymbol_<tempattId>_<expIndex>
var expValParamStaticValIdText="expParamStaticVal_"; //expParamStaticVal_<tempattId>_<expIndex>
	
var expValParamTempattRadioIdText="expParamValTempattId_radio_"; //expParamValTempattId_radio_<tempattId>_<expIndex>   // expParam_radio_<tempattId>_<expIndex>
var expValParamSymbolRadioIdText="expParamSymbol_radio_"; //expParamSymbol_radio_<tempattId>_<expIndex>			// expParam_radio_<tempattId>_<expIndex>
var expValParamStaticValRadioIdText="expParamStaticVal_radio_"; //expParamStaticVal_radio_<tempattId>_<expIndex>		// expParam_radio_<tempattId>_<expIndex>
var expParamRadioNameText="expParam_radio_";     // expParam_radio_<tempattId>_<expIndex>
 
// attributeListMap[<formulaIndex>].expFormulaMap[<expIndex>].validationConditionMap[<expCondIndex>]

function addFormulaExpression(tempattId, formulaIndex, conditionFlag)
{
	var this_expCountIdText=expCountIdText+tempattId+"_"+formulaIndex;
	var this_expCount=document.getElementById(this_expCountIdText).value;
	//alert(this_expCount);
	
	var this_tempattFieldsetIdText="#"+tempattFieldsetIdText+tempattId+"_"+formulaIndex;
	var htmlContent=getFormulaExpressionContent(tempattId, formulaIndex, conditionFlag, this_expCount);
	
	$(this_tempattFieldsetIdText).append(htmlContent);
	document.getElementById(this_expCountIdText).value=parseInt(this_expCount)+1;
}


function getFormulaExpressionContent(tempattId, formulaIndex, conditionFlag, expCount)
{
	var htmlContent="";
	
	var this_expressionNamePrefix="attributeListMap["+formulaIndex+"].expFormulaMap["+expCount+"]";
		
	var this_expTab=expTabIdText+tempattId+"_"+expCount;
	var this_expDivIdText=expDivIdText+tempattId+"_"+expCount;
	htmlContent+="<center><div id='"+this_expDivIdText+"' style='border:1px solid #909090;margin-bottom:20px;width:80%;'>";
	
	/* CONDITION FLAG   */
	var this_expCondFlagIdText=expCondFlagIdText+tempattId+"_"+expCount;
	htmlContent+="<input type='hidden' name='"+this_expressionNamePrefix+".expCondFlag' id='"+this_expCondFlagIdText+"' value='"+conditionFlag+"' />"; 
	
	/* CONDITION COUNT  */
	var this_expCondCountIdText=expCondCountIdText+tempattId+"_"+expCount;
	htmlContent+="<input type='hidden' name='"+this_expressionNamePrefix+".expCondCount' id='"+this_expCondCountIdText+"' value='"+conditionFlag+"' />"; 
	
	/* IS EXISTING EXPRESSION (SET ZERO) */
	htmlContent+="<input type='hidden' name='"+this_expressionNamePrefix+".isExisting' id='"+this_expCondCountIdText+"' value='0' />"; 
	
	htmlContent+="<table id='"+this_expTab+"' align='center'  border='0' cellspacing='0' cellpadding='5' width='80%'>";
	//expValRow_<tempattId>_<expIndex>_<rowIndex>
	var this_expValRow=expValRowIdText+tempattId+"_"+expCount+"_";
	//priyam
	
	
	var this_expValParamExpValTypeIdText=expValParamExpValTypeIdText+tempattId+"_"+expCount;
	var this_expValParamTempattIdText=expValParamTempattIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolIdText=expValParamSymbolIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValIdText=expValParamStaticValIdText+tempattId+"_"+expCount;
	var this_expValParamTempattTypeIdText=expValParamTempattTypeIdText+tempattId+"_"+expCount;
	
	var this_expValParamTempattRadioIdText=expValParamTempattRadioIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolRadioIdText=expValParamSymbolRadioIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValRadioIdText=expValParamStaticValRadioIdText+tempattId+"_"+expCount;
	
	var this_expParamRadioNameText=expParamRadioNameText+tempattId+"_"+expCount;
	
	if(conditionFlag==0)
	{
		/* THIS IS FOR EXPRESSION WITH NO CONDITION */
		
		htmlContent+="<tr class='dataGroupHeader'><td colspan='10' align='right'><a href=\"javascript:deleteFormulaExpression('"+this_expDivIdText+"');\" style='color:white;'>Delete</a></td></tr>";
		var this_expValIdText=expValIdText+tempattId+"_"+expCount;
		var this_expFormulaIdText=expFormulaIdText+tempattId+"_"+expCount;
		
		
		/*  TOP FORMULA PARAMETERS BAR START */
		
		htmlContent+="<tr class='alternateColumnClass'><td colspan='10' align='right'>";
		htmlContent+="<select name='dt' id='"+this_expValParamExpValTypeIdText+"' style='width:200px;'><option value='1'>EXPRESSION</option></select>";
		htmlContent+="<select name='dt' id='"+this_expValParamTempattTypeIdText+"' style='width:200px;'><option value='C'>COMPUTED VALUE(C)</option><option value='E'>ENTERED VALUE(E)</option></select>";
		
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamTempattRadioIdText+"' value='1' checked/>";
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdText+"' style='width:200px;'>"+getAllFormulaExpConditionTempattIdCombo(tempattId)+"</select>";
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamSymbolRadioIdText+"' value='1'/>";
		htmlContent+="<select name='dt' id='"+this_expValParamSymbolIdText+"' style='width:200px;'>"+getAllFormulaExpSymbols()+"</select>";
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamStaticValRadioIdText+"' value='1'/>";
		htmlContent+="<input type='text' name='dt' id='"+this_expValParamStaticValIdText+"' value=''/>";
		htmlContent+="<a href=\"javascript:addToFormulaExpression("+tempattId+","+formulaIndex+","+expCount+");\" style='margin-right:20px;'>Add to Formula</a></td></tr>";
		
		/*  TOP FORMULA PARAMETERS BAR END  */
		
		htmlContent+="<tr id='"+this_expValRow+"1'><td class='fieldLabel' width='20%'>Expression </td>";
		htmlContent+="<td class='field'><textarea name='"+this_expressionNamePrefix+".expVal' id='"+this_expValIdText+"' rows='2' cols='100' style='resize:none;' readOnly='true'></textarea>";
		htmlContent+="<br/><input type='text' name='"+this_expressionNamePrefix+".expFormula' id='"+this_expFormulaIdText+"' style='width:850px;' readonly='true'/></td></tr>";
		
	}
	else
	{
		/* THIS IS FOR EXPRESSION WITH CONDITION */
		
		htmlContent+="<tr class='dataGroupHeader'><td colspan='10' align='right'><a href=\"javascript:addFormulaCondition("+tempattId+","+formulaIndex+","+expCount+");\" style='margin-right:20px;color:white;'>Add Condition</a>";
		htmlContent+="<a href=\"javascript:deleteFormulaExpression('"+this_expDivIdText+"');\" style='color:white;'>Delete</a></td></tr>";
		var this_expValTrueIdText=expValTrueIdText+tempattId+"_"+expCount;
		var this_expValFalseIdText=expValFalseIdText+tempattId+"_"+expCount;
		var this_expCondValIdText=expCondValIdText+tempattId+"_"+expCount;
		var this_expFormulaTrueIdText=expFormulaTrueIdText+tempattId+"_"+expCount;
		var this_expFormulaFalseIdText=expFormulaFalseIdText+tempattId+"_"+expCount;
		
		/*  TOP FORMULA PARAMETERS BAR START */
		
		htmlContent+="<tr class='alternateColumnClass'><td colspan='10' align='right'>";
		htmlContent+="<select name='dt' id='"+this_expValParamExpValTypeIdText+"' style='width:200px;'><option value='1'>THEN EXPRESSION</option><option value='2'>ELSE EXPRESSION</option></select>";
		htmlContent+="<select name='dt' id='"+this_expValParamTempattTypeIdText+"' style='width:200px;'><option value='C'>COMPUTED VALUE(C)</option><option value='E'>ENTERED VALUE(E)</option></select>";
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamTempattRadioIdText+"' value='1' checked/>";
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdText+"' style='width:200px;'>"+getAllFormulaExpConditionTempattIdCombo(tempattId)+"</select>";
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamSymbolRadioIdText+"' value='1'/>";
		htmlContent+="<select name='dt' id='"+this_expValParamSymbolIdText+"' style='width:200px;'>"+getAllFormulaExpSymbols()+"</select>";
		
		htmlContent+="<input type='radio' name='"+this_expParamRadioNameText+"' id='"+this_expValParamStaticValRadioIdText+"' value='1'/>";
		htmlContent+="<input type='text' name='dt' id='"+this_expValParamStaticValIdText+"' value=''/>";
		htmlContent+="<a href=\"javascript:addToFormulaExpression("+tempattId+","+formulaIndex+","+expCount+");\" style='margin-right:20px;'>Add to Formula</a></td></tr>";
		
		/*  TOP FORMULA PARAMETERS BAR END  */
		
		htmlContent+="<tr id=''><td colspan='10'><table id='"+this_expCondValIdText+"' align='center'  border='0' cellspacing='0' cellpadding='5' width='100%' style='margin-bottom:20px;'>";
		htmlContent+=getFormulaConditionContent(tempattId,formulaIndex,expCount,0);
		htmlContent+="</table></td></tr>";
		
		htmlContent+="<tr id='"+this_expValRow+"1' class='alternateColumnClass'><td class='fieldLabel' width='20%'>THEN Expression </td>";
		htmlContent+="<td class='field'><textarea name='"+this_expressionNamePrefix+".expVal_true' id='"+this_expValTrueIdText+"' rows='2' cols='100' style='resize:none;' readOnly='true'></textarea>";
		htmlContent+="<br/><input type='text' name='"+this_expressionNamePrefix+".expFormula_true' id='"+this_expFormulaTrueIdText+"' style='width:850px;' readonly='true'/></td></tr>";
		
		htmlContent+="<tr id='"+this_expValRow+"1'><td class='fieldLabel' width='20%'>ELSE Expression </td>";
		htmlContent+="<td class='field'><textarea name='"+this_expressionNamePrefix+".expVal_false' id='"+this_expValFalseIdText+"' rows='2' cols='100' style='resize:none;' readOnly='true'></textarea>";
		htmlContent+="<br/><input type='text' name='"+this_expressionNamePrefix+".expFormula_false' id='"+this_expFormulaFalseIdText+"' style='width:850px;' readonly='true'/></td></tr>";
		
	
	}
	
	htmlContent+="</table></div></center>";
	return htmlContent;
	
}


function deleteFormulaExpression(deleteFormulaExpDivId)
{
	var r=confirm("Are you sure, you want to delete Expression ?")
	if (r==false) return;
	
	var deleteFormulaExpDivId="#"+deleteFormulaExpDivId;
	$(deleteFormulaExpDivId).remove();
}


function addFormulaCondition(tempattId,formulaIndex,expCount)
{
	//alert(tempattId+","+formulaIndex+","+expCount);
	var this_expCondCountIdText=expCondCountIdText+tempattId+"_"+expCount;
	var this_expCondCount=document.getElementById(this_expCondCountIdText).value;
	var htmlContent=getFormulaConditionContent(tempattId,formulaIndex,expCount,this_expCondCount);
	
	var this_expCondValIdText="#"+expCondValIdText+tempattId+"_"+expCount;
	$(this_expCondValIdText).append(htmlContent);
	document.getElementById(this_expCondCountIdText).value=parseInt(this_expCondCount)+1;
}


function getFormulaConditionContent(tempattId,formulaIndex,expCount,expCondCount)
{
	
	var this_valCondOperatorIdText=valCondOperatorIdText+tempattId+"_"+expCount+"_"+expCondCount;  //valCondOperator_
	var this_expCondTempattIdText=expCondTempattIdText+tempattId+"_"+expCount+"_"+expCondCount;    //tempattId_
	var this_expCondTempattTypeIdText=expCondTempattTypeIdText+tempattId+"_"+expCount+"_"+expCondCount;    //tempattType_
	var this_expCondConditionalOperatorIdText=expCondConditionalOperatorIdText+tempattId+"_"+expCount+"_"+expCondCount;    //conditionalOperator_
	var this_expCondRightConditionTabIdText=expCondRightConditionTabIdText+tempattId+"_"+expCount+"_"+expCondCount;    //rightConditionTab_
	
	var htmlContent="";
	var this_expCondValRowIdText=expCondValRowIdText+tempattId+"_"+expCount+"_"+expCondCount;
	
	var this_condtionNamePrefix="attributeListMap["+formulaIndex+"].expFormulaMap["+expCount+"].validationConditionMap["+expCondCount+"]";
	
	htmlContent+="<tr id='"+this_expCondValRowIdText+"'>";
	
	if(expCondCount==0)
	{
		htmlContent+="<td align='right'><input type='hidden' name='"+this_condtionNamePrefix+".conditionalOperatorId' id='"+this_valCondOperatorIdText+"' value='0' />-</td><td width='30%'>";
	}
	else
	{
		htmlContent+="<td align='right'><select name='"+this_condtionNamePrefix+".conditionalOperatorId' id='"+this_valCondOperatorIdText+"' style='width:100px;'><option value='1'>AND</option><option value='2'>OR</option></select></td><td width='30%'>";
	}
	
	htmlContent+="<select name='"+this_condtionNamePrefix+".tempattId' id='"+this_expCondTempattIdText+"' style='width:200px;' onChange=\"javascript:getAllFormulaConditionTempattTypeCombo('"+this_expCondTempattTypeIdText+"',this.value);\">"+getAllFormulaConditionTempattIdCombo()+"</select>";
	
	
	htmlContent+="<select name='"+this_condtionNamePrefix+".tempattType' id='"+this_expCondTempattTypeIdText+"' style='width:200px;' onChange=\"javascript:getFormulaRightConditionTabContent("+formulaIndex+","+tempattId+","+expCount+","+expCondCount+",this.value);\"></select>";
	
	htmlContent+="<select name='"+this_condtionNamePrefix+".tempattOperatorId' id='"+this_expCondConditionalOperatorIdText+"'>"+getAllFormulaConditionOperators()+"</select>";
	htmlContent+="</td><td id='"+this_expCondRightConditionTabIdText+"' width='25%' align='left'></td>";
	if(expCondCount==0)	htmlContent+="<td width='20%' align='left'>-</td></tr>";
	else	htmlContent+="<td width='20%' align='left'><a href=\"javascript:deleteFormulaValidationCondition('"+this_expCondValRowIdText+"');\">Delete</a></td></tr>";
	
	return htmlContent;
}

function deleteFormulaValidationCondition(deleteValidationConditionRowId)
{
	var r=confirm("Are you sure, you want to delete Condition ?")
	if (r==false) return;
	
	var deleteValidationConditionRowId="#"+deleteValidationConditionRowId;
	$(deleteValidationConditionRowId).remove();
}


function getAllFormulaConditionTempattIdCombo()
{
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattText=document.getElementById("allTempattText").value;
	var allTempattCode=document.getElementById("allTempattCode").value;
	var allTempattId_array=allTempattId.split(",");
	var allTempattText_array=allTempattText.split("|");
	var allTempattCode_array=allTempattCode.split(",");
	
	//alert(allTempattCode_array.length);
	var tempattComboContent="<option value='0'>SELECT ATTRIBUTES</option>";
	for(var i=0;i<allTempattId_array.length;i++)
	{
		tempattComboContent+="<option value='"+allTempattId_array[i]+"'>"+allTempattText_array[i]+"("+allTempattCode_array[i]+")</option>";
	}
	return tempattComboContent;
}


function getAllFormulaConditionTempattTypeCombo(targetComboId, thisTempattId)
{
	//alert(targetComboId);
	
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattIndicator=document.getElementById("allTempattIndicator").value;
	var allTempattOptionCount=document.getElementById("allTempattOptionCount").value;
	
	var allTempattId_array=allTempattId.split(",");
	var allTempattIndicator_array=allTempattIndicator.split(",");
	var allTempattOptionCount_array=allTempattOptionCount.split(",");
	
	var tempattTypeComboContent="<option value='0'>SELECT TYPE</option>";
	var thisIndicatorCount="";
	var thisOptionCount="";
	
	for(var i=0;i<allTempattId_array.length;i++)
	{
		if(allTempattId_array[i]==thisTempattId)
		{
			thisIndicatorCount=allTempattIndicator_array[i];
			thisOptionCount=allTempattOptionCount_array[i];
			break;
		}
		
	}
	
	if(thisOptionCount>0)	tempattTypeComboContent+="<option value='O'>OPTION(O)</option>";
	if(thisIndicatorCount>0)	tempattTypeComboContent+="<option value='I'>INDICATOR(I)</option>";
	tempattTypeComboContent+="<option value='E'>ENTERED VALUE(E)</option>";
	
	targetComboId="#"+targetComboId;
	$(targetComboId).html(tempattTypeComboContent);
	
	var rightConditionTabId=targetComboId.replace("tempattType","rightConditionTab"); 
	$(rightConditionTabId).html("");
	
}

function getAllFormulaConditionOperators()
{
	var operator_array=new Array('==','!=','>','<','>=','<=','IN');
	var operator_text_array=new Array('EQUAL(==)','NOT EQUAL(!=)','GREATER THAN(>)','LESS THAN(<)','GREATER THAN EQUAL(>=)','LESS THAN EQUAL(<=)','IN');
	var operatorComboContent="<option value='0'>SELECT OPERATOR</option>";
	for(var i=0;i<operator_array.length;i++)
	{
		operatorComboContent+="<option value='"+(i+1)+"'>"+operator_text_array[i]+"</option>";
	}
	return operatorComboContent;
}



function getFormulaRightConditionTabContent(formulaIndex, tempattId, expCount, expCondCount, tempattType)
{

	var this_expCondRightConditionTabIdText=expCondRightConditionTabIdText+tempattId+"_"+expCount+"_"+expCondCount;    //rightConditionTab_
	var this_expCondTempattIdText=expCondTempattIdText+tempattId+"_"+expCount+"_"+expCondCount;    //tempattId_
	var tagetTab="#"+this_expCondRightConditionTabIdText;
	var tempattId=this_expCondTempattIdText;
	//alert(tempattId);
	var thisTempattId=document.getElementById(tempattId).value;
	//alert(tagetTab);
	
	var this_condtionNamePrefix="attributeListMap["+formulaIndex+"].expFormulaMap["+expCount+"].validationConditionMap["+expCondCount+"]";
	
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattIndicator=document.getElementById("allTempattIndicator").value;
	var allTempattOptionCount=document.getElementById("allTempattOptionCount").value;
	var allTempattOptionId=document.getElementById("allTempattOptionId").value;
	var allTempattOptionText=document.getElementById("allTempattOptionText").value;
	
	var allTempattId_array=allTempattId.split(",");
	var allTempattIndicator_array=allTempattIndicator.split(",");
	var allTempattOptionCount_array=allTempattOptionCount.split(",");
	var allTempattOptionId_array=allTempattOptionId.split(",");
	var allTempattOptionText_array=allTempattOptionText.split("~");
	
	var thisIndicatorCount="";
	var thisOptionCount="";
	var thisOptionId="";
	var thisOptionText="";
	
	for(var i=0;i<allTempattId_array.length;i++)
	{
		if(allTempattId_array[i]==thisTempattId)
		{
			thisIndicatorCount=allTempattIndicator_array[i];
			thisOptionCount=allTempattOptionCount_array[i];
			thisOptionId=allTempattOptionId_array[i];
			thisOptionText=allTempattOptionText_array[i];
			break;
		}
		
	}
	
	var tagetTabContent="";
	if(tempattType=="E")
	{
		tagetTabContent+="<input type='radio' name='"+this_condtionNamePrefix+".isStaticEnteredVal' id='' value='0' checked/>";
		tagetTabContent+="<select name='"+this_condtionNamePrefix+".tempattConditionValEnteredTempatt' id='' style='width:200px;'>"+getAllFormulaConditionTempattIdCombo()+"</select><br/>";
		tagetTabContent+="<input type='radio' name='"+this_condtionNamePrefix+".isStaticEnteredVal' id='' value='1'/>";
		tagetTabContent+="<input type='text' name='"+this_condtionNamePrefix+".tempattConditionValEnteredStatic' />";
	}
	else if(tempattType=="I")
	{
		tagetTabContent+="<select name='"+this_condtionNamePrefix+".tempattConditionVal' id='' style='width:200px;'><option value='0'>SELECT INDICATOR</option>";
		if(thisIndicatorCount==1)	tagetTabContent+="<option value='100'>VALUE</option>";
		else if(thisIndicatorCount==2)	tagetTabContent+="<option value='101'>PERCENTAGE</option>";
		else if(thisIndicatorCount==3 || thisIndicatorCount==4)	tagetTabContent+="<option value='100'>VALUE</option><option value='101'>PERCENTAGE</option>";
		tagetTabContent+="</select>";
		
		/* 0 - NONE, 1 - VALUE, 2 - PERCENTAGE, 3 - BOTH  */
	}
	
	else if(tempattType=="O")
	{
		/*alert(thisOptionId);
		alert(thisOptionText);*/
		
		thisOptionId = thisOptionId.replace('{','');
		thisOptionId = thisOptionId.replace('}','');
		var thisOptionId_array=thisOptionId.split("|");
		
		thisOptionText = thisOptionText.replace('{','');
		thisOptionText = thisOptionText.replace('}','');
		var thisOptionText_array=thisOptionText.split("|");
		
		tagetTabContent+="<select name='"+this_condtionNamePrefix+".optionList' id='' style='width:200px;' multiple='multiple' size='3'>";
		//tagetTabContent+="<select name='' id='' style='width:200px;'><option value='0'>SELECT OPTION</option>";
		for(var j=0;j<thisOptionId_array.length;j++)
		{
			tagetTabContent+="<option value='"+thisOptionId_array[j]+"'>"+thisOptionText_array[j]+"</option>";
			
		}
		
		tagetTabContent+="</select>";
	}
	
	
	
	$(tagetTab).html(tagetTabContent);
}


function addToFormulaExpression(tempattId,formulaIndex,expCount)
{	
	
	
	var this_expValParamExpValTypeIdText=expValParamExpValTypeIdText+tempattId+"_"+expCount;
	var this_expValParamTempattIdText=expValParamTempattIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolIdText=expValParamSymbolIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValIdText=expValParamStaticValIdText+tempattId+"_"+expCount;
	var this_expValParamTempattTypeIdText=expValParamTempattTypeIdText+tempattId+"_"+expCount;
	
	var this_expValParamTempattRadioIdText=expValParamTempattRadioIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolRadioIdText=expValParamSymbolRadioIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValRadioIdText=expValParamStaticValRadioIdText+tempattId+"_"+expCount;
	
	var thisValExpText="";
	var thisValExpFormula="";
	if(document.getElementById(this_expValParamTempattRadioIdText).checked)
	{	
		thisValExpText="{"+document.getElementById(this_expValParamTempattIdText).options[document.getElementById(this_expValParamTempattIdText).selectedIndex].text+"}";
		thisValExpFormula="{"+document.getElementById(this_expValParamTempattIdText).value+document.getElementById(this_expValParamTempattTypeIdText).value+"}";
	}
	else if(document.getElementById(this_expValParamSymbolRadioIdText).checked)
	{
		thisValExpText=document.getElementById(this_expValParamSymbolIdText).value;
		thisValExpFormula=document.getElementById(this_expValParamSymbolIdText).value;
	}
	else if(document.getElementById(this_expValParamStaticValRadioIdText).checked)
	{
		thisValExpText=document.getElementById(this_expValParamStaticValIdText).value;
		thisValExpFormula=document.getElementById(this_expValParamStaticValIdText).value;
	}
	
	//append to formula
	//append to text
	
	var this_expCondFlagIdText=expCondFlagIdText+tempattId+"_"+expCount;
	if(document.getElementById(this_expCondFlagIdText).value==0)
	{
		var this_expValIdText=expValIdText+tempattId+"_"+expCount;
		var this_expFormulaIdText=expFormulaIdText+tempattId+"_"+expCount;
		
		document.getElementById(this_expValIdText).value+=thisValExpText;
		document.getElementById(this_expFormulaIdText).value+=thisValExpFormula;
		
	}
	else
	{
		var this_expValTrueIdText=expValTrueIdText+tempattId+"_"+expCount;
		var this_expValFalseIdText=expValFalseIdText+tempattId+"_"+expCount;
			
		var this_expFormulaTrueIdText=expFormulaTrueIdText+tempattId+"_"+expCount;
		var this_expFormulaFalseIdText=expFormulaFalseIdText+tempattId+"_"+expCount;
		
		if(document.getElementById(this_expValParamExpValTypeIdText).value==1)
		{
			document.getElementById(this_expValTrueIdText).value+=thisValExpText;
			document.getElementById(this_expFormulaTrueIdText).value+=thisValExpFormula;
		}
		else
		{
			document.getElementById(this_expValFalseIdText).value+=thisValExpText;
			document.getElementById(this_expFormulaFalseIdText).value+=thisValExpFormula;
		}
		
	}
	
	

	
	
}


function getAllFormulaExpConditionTempattIdCombo(tempattId)
{
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattText=document.getElementById("allTempattText").value;
	var allTempattCode=document.getElementById("allTempattCode").value;
	var allTempattId_array=allTempattId.split(",");
	var allTempattText_array=allTempattText.split("|");
	var allTempattCode_array=allTempattCode.split(",");
	
	//alert(allTempattCode_array.length);
	var tempattComboContent="<option value='0'>SELECT ATTRIBUTES</option>";
	for(var i=0;i<allTempattId_array.length;i++)
	{
		tempattComboContent+="<option value='"+allTempattId_array[i]+"'>"+allTempattText_array[i]+"("+allTempattCode_array[i]+")</option>";
		if(tempattId==allTempattId_array[i]) break;
	}
	return tempattComboContent;
}


function getAllFormulaExpSymbols()
{
	var operator_array=new Array('+','-','*','/','(',')');
	//var operator_text_array=new Array('EQUAL(==)','NOT EQUAL(!=)','GREATER THAN(>)','LESS THAN(<)','GREATER THAN EQUAL(>=)','LESS THAN EQUAL(<=)','IN');
	var operatorComboContent="<option value='0'>SELECT OPERATOR</option>";
	for(var i=0;i<operator_array.length;i++)
	{
		operatorComboContent+="<option value='"+operator_array[i]+"'>"+operator_array[i]+"</option>";
	}
	return operatorComboContent;
}


function getFormElelemets(formName){
	  var elements = document.forms[formName].elements;
	  for (i=0; i<elements.length; i++){
	    alert(elements[i].name);
	  }
	  return false;
	}


/*               NEW TEMPLATE VALIDATION JS START              */

function addNewValidationExpression(tempattId, formulaIndex, conditionFlag)
{
	var this_expCountIdText=expCountIdText+tempattId+"_"+formulaIndex;
	var this_expCount=document.getElementById(this_expCountIdText).value;
	//alert(this_expCount);
	
	var this_tempattFieldsetIdText="#"+tempattFieldsetIdText+tempattId+"_"+formulaIndex;
	var htmlContent=getNewValidationExpressionContent(tempattId, formulaIndex, conditionFlag, this_expCount);
	
	$(this_tempattFieldsetIdText).append(htmlContent);
	document.getElementById(this_expCountIdText).value=parseInt(this_expCount)+1;
}


function getNewValidationExpressionContent(tempattId, formulaIndex, conditionFlag, expCount)
{
	var htmlContent="";
	
	var this_expressionNamePrefix="attributeListMap["+formulaIndex+"].tempattValidationMap["+expCount+"]";
		
	var this_expCondCountIdText=expCondCountIdText+tempattId+"_"+expCount;	
	var this_expTab=expTabIdText+tempattId+"_"+expCount;
	var this_expDivIdText=expDivIdText+tempattId+"_"+expCount;
	htmlContent+="<center><div id='"+this_expDivIdText+"' style='border:1px solid #909090;margin-bottom:20px;width:60%;'>";
	
	/* CONDITION FLAG   */
	var this_expCondFlagIdText=expCondFlagIdText+tempattId+"_"+expCount;
	
	
	htmlContent+="<table id='"+this_expTab+"' align='center'  border='0' cellspacing='0' cellpadding='5' width='80%'>";
	//expValRow_<tempattId>_<expIndex>_<rowIndex>
	var this_expValRow=expValRowIdText+tempattId+"_"+expCount+"_";
	//priyam
	
	var this_expValParamOptionIdText="expOption_"+tempattId+"_"+expCount;
	
	var this_expValParamExpValTypeIdText=expValParamExpValTypeIdText+tempattId+"_"+expCount;
	var this_expValParamTempattIdText=expValParamTempattIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolIdText=expValParamSymbolIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValIdText=expValParamStaticValIdText+tempattId+"_"+expCount;
	var this_expValParamTempattTypeIdText=expValParamTempattTypeIdText+tempattId+"_"+expCount;
	
	var this_expValParamTempattRadioIdText=expValParamTempattRadioIdText+tempattId+"_"+expCount;
	var this_expValParamSymbolRadioIdText=expValParamSymbolRadioIdText+tempattId+"_"+expCount;
	var this_expValParamStaticValRadioIdText=expValParamStaticValRadioIdText+tempattId+"_"+expCount;
	
	var this_expValParamTempattIdOptionText=expValParamTempattIdText+"OPTION_"+tempattId+"_"+expCount;
	var this_expParamRadioNameText=expParamRadioNameText+tempattId+"_"+expCount;
	
	if(conditionFlag==0)
	{
		/* THIS IS FOR EXPRESSION HIDDEN STRING */
		
		var this_expValIdText=expValIdText+tempattId+"_"+expCount;
		var this_expFormulaIdText=expFormulaIdText+tempattId+"_"+expCount;
				
		htmlContent+="<tr class='dataGroupHeader'><td colspan='10' align='right'><a href=\"javascript:addExpression('"+this_expValParamOptionIdText+"','"+this_expValParamTempattIdText+"','"+this_expValIdText+"','"+this_expFormulaIdText+"');\" style='color:white;'>Add to Expression</a> | <a href=\"javascript:deleteNewValidationExpression('"+this_expDivIdText+"');\" style='color:white;'>Delete</a></td></tr>";
		
		htmlContent+="<tr class='alternateColumnClass'><td colspan='10' align='right'>";
		
		/******/
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdText+"_attr' style='width:200px;vertical-align:top;' onChange=\"javascript:getOptionListByTempatt('"+this_expValParamOptionIdText+"',this.value);\" ><option value='0'>SELECT ATTRIBUTE</option>"+getAllNewValidationExpConditionTempattIdComboForHidden(tempattId)+"</select>";
		
		/*htmlContent+="<select name='dt' id='"+this_expValParamOptionIdText+"' style='width:200px;vertical-align:top;'>"+getOptionValuesByTempattId(tempattId)+"</select>";*/
		
		htmlContent+="<select name='dt' id='"+this_expValParamOptionIdText+"' style='width:200px;vertical-align:top;'><option value='0'>SELECT ATTRIBUTE</option></select>";
		/******/
		
		
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdText+"' style='width:200px;' size='2' multiple>"+getAllNewValidationExpConditionTempattIdCombo(tempattId)+"</select>";
		
		
		htmlContent+="</td></tr>";
		
		
		htmlContent+="<tr id='"+this_expValRow+"1'><td class='fieldLabel' width='20%'>Expression </td>";
		htmlContent+="<td class='field'><textarea name='"+this_expressionNamePrefix+".expValText' id='"+this_expValIdText+"' rows='2' cols='55' style='resize:none;' readOnly='true'></textarea>";
		htmlContent+="<br/><input type='text' name='"+this_expressionNamePrefix+".expVal' id='"+this_expFormulaIdText+"' style='width:406px;' readonly='true'/><input type='hidden' name='"+this_expressionNamePrefix+".valType' id='' value='1' /></td></tr>";
		
	}
	else
	{
		/* THIS IS FOR DISSABLE HIDDEN STRING */
		
		var this_expValIdText=expValIdText+tempattId+"_"+expCount;
		var this_expFormulaIdText=expFormulaIdText+tempattId+"_"+expCount;
				
		htmlContent+="<tr class='dataGroupHeader'><td colspan='10' align='right'><a href=\"javascript:addDisableExpression('"+this_expValParamOptionIdText+"','"+this_expValParamTempattIdText+"','"+this_expValIdText+"','"+this_expFormulaIdText+"','"+this_expValParamTempattIdOptionText+"');\" style='color:white;'>Add to Expression</a> | <a href=\"javascript:deleteNewValidationExpression('"+this_expDivIdText+"');\" style='color:white;'>Delete</a></td></tr>";
		
		htmlContent+="<tr class='alternateColumnClass'><td colspan='10' align='right'>";
		
		htmlContent+="<select name='dt' id='"+this_expValParamOptionIdText+"' style='width:200px;vertical-align:top;'>"+getOptionValuesByTempattId(tempattId)+"</select>";
		
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdText+"' style='width:200px;vertical-align:top;' onChange=\"javascript:getOptionListByTempatt('"+this_expValParamTempattIdOptionText+"',this.value);\" ><option value='0'>SELECT ATTRIBUTE</option>"+getAllNewValidationExpConditionTempattIdCombo(tempattId)+"</select>";
		
		htmlContent+="<select name='dt' id='"+this_expValParamTempattIdOptionText+"' style='width:200px;' size='2' multiple></select>";
		
		
		htmlContent+="</td></tr>";
		
		
		htmlContent+="<tr id='"+this_expValRow+"1'><td class='fieldLabel' width='20%'>Expression </td>";
		htmlContent+="<td class='field'><textarea name='"+this_expressionNamePrefix+".expValText' id='"+this_expValIdText+"' rows='2' cols='55' style='resize:none;' readOnly='true'></textarea>";
		htmlContent+="<br/><input type='text' name='"+this_expressionNamePrefix+".expVal' id='"+this_expFormulaIdText+"' style='width:406px;' readonly='true'/><input type='hidden' name='"+this_expressionNamePrefix+".valType' id='' value='2' /></td></tr>";
		
	
	}
	
	htmlContent+="</table></div></center>";
	return htmlContent;
	
}

function addExpression(this_expValParamOptionIdText,this_expValParamTempattIdText,this_expValIdText,this_expFormulaIdText){
	
	var optionVal="";
	var optionValText="";
	$("#"+this_expValParamOptionIdText+"").find("option:selected").each(function(i) {
		optionVal=this.value;
		optionValText=$(this).text();
	});
	
	var attributeVal="";
	var attributeValText="";
	$("#"+this_expValParamTempattIdText+"_attr").find("option:selected").each(function(i) {
		attributeVal=this.value;
		attributeValText=$(this).text();
	});
	
	var attributeListCode=[];
	var attributeListDescription=[];
	
	$("#"+this_expValParamTempattIdText+"").find("option:selected").each(function(i) {
			//alert(this.value+"-"+this.label);
			attributeListCode.push(this.value);
			attributeListDescription.push($(this).text());
	});
	
	/*var hiddenStringExp=optionVal+"~"+attributeListCode.join();
	var hiddenStringText=optionValText+"-"+attributeListDescription.join();*/
	
	var hiddenStringExp=attributeVal+"-"+optionVal+"~"+attributeListCode.join();
	var hiddenStringText=attributeValText+"-"+optionValText+"->"+attributeListDescription.join();
	
	var previousExp_array=$("#"+this_expFormulaIdText+"").val().split("~");
	if(previousExp_array[0]!=""){
		hiddenStringExp=previousExp_array[0]+"+"+hiddenStringExp;
	}	
	
	var previousExpText_array=$("#"+this_expValIdText+"").val().split("->");
	if(previousExpText_array[0]!=""){
		hiddenStringText=previousExpText_array[0]+" AND "+hiddenStringText;
	}
	
	//alert(hiddenStringExp);
	//alert(hiddenStringText);
	
	$("#"+this_expFormulaIdText+"").val(hiddenStringExp);
	$("#"+this_expValIdText+"").val(hiddenStringText);
	
	
}


function deleteNewValidationExpression(deleteFormulaExpDivId)
{
	var r=confirm("Are you sure, you want to delete Expression ?")
	if (r==false) return;
	
	var deleteFormulaExpDivId="#"+deleteFormulaExpDivId;
	$(deleteFormulaExpDivId).remove();
}

function getOptionValuesByTempattId(tempattId) {
	
	//var tagetTab="#"+targetElemenet;
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattIndicator=document.getElementById("allTempattIndicator").value;
	var allTempattOptionCount=document.getElementById("allTempattOptionCount").value;
	var allTempattOptionId=document.getElementById("allTempattOptionId").value;
	var allTempattOptionText=document.getElementById("allTempattOptionText").value;
	
	var allTempattId_array=allTempattId.split(",");
	var allTempattIndicator_array=allTempattIndicator.split(",");
	var allTempattOptionCount_array=allTempattOptionCount.split(",");
	var allTempattOptionId_array=allTempattOptionId.split(",");
	var allTempattOptionText_array=allTempattOptionText.split("~");
	
	var thisIndicatorCount="";
	var thisOptionCount="";
	var thisOptionId="";
	var thisOptionText="";
	
	for(var i=0;i<allTempattId_array.length;i++)
	{
		if(allTempattId_array[i]==tempattId)
		{
			thisIndicatorCount=allTempattIndicator_array[i];
			thisOptionCount=allTempattOptionCount_array[i];
			thisOptionId=allTempattOptionId_array[i];
			thisOptionText=allTempattOptionText_array[i];
			break;
		}
		
	}
	
	var tagetTabContent="";

		/*alert(thisOptionId);
		alert(thisOptionText);*/
		
		thisOptionId = thisOptionId.replace('{','');
		thisOptionId = thisOptionId.replace('}','');
		var thisOptionId_array=thisOptionId.split("|");
		
		thisOptionText = thisOptionText.replace('{','');
		thisOptionText = thisOptionText.replace('}','');
		var thisOptionText_array=thisOptionText.split("|");
		
		//tagetTabContent+="<select name='"+this_condtionNamePrefix+".optionList' id='' style='width:200px;' multiple='multiple' size='3'>";
		//tagetTabContent+="<select name='' id='' style='width:200px;'><option value='0'>SELECT OPTION</option>";
		for(var j=0;j<thisOptionId_array.length;j++)
		{
			tagetTabContent+="<option value='"+thisOptionId_array[j]+"'>"+thisOptionText_array[j]+"</option>";
			
		}
		
		//tagetTabContent+="</select>";
	
	return tagetTabContent;
	
	//$(tagetTab).html(tagetTabContent);
	
}


function getAllNewValidationExpConditionTempattIdCombo(tempattId)
{
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattText=document.getElementById("allTempattText").value;
	var allTempattCode=document.getElementById("allTempattCode").value;
	var allTempattId_array=allTempattId.split(",");
	var allTempattText_array=allTempattText.split("|");
	var allTempattCode_array=allTempattCode.split(",");
	
	//alert(allTempattCode_array.length);
	var displayFlag=0;
	var tempattComboContent="";
	for(var i=0;i<allTempattId_array.length;i++)
	{
		if(displayFlag==1){
			tempattComboContent+="<option value='"+allTempattId_array[i]+"'>"+allTempattText_array[i]+"("+allTempattCode_array[i]+")</option>";
		}
		if(tempattId==allTempattId_array[i]) displayFlag=1;
	}
	return tempattComboContent;
}

function getOptionListByTempatt(this_expValParamTempattIdOptionText,tempattId){
	var optionHTMLContent=getOptionValuesByTempattId(tempattId);
	$("#"+this_expValParamTempattIdOptionText+"").html(optionHTMLContent);
	
}

function addDisableExpression(this_expValParamOptionIdText,this_expValParamTempattIdText,this_expValIdText,this_expFormulaIdText,this_expValParamTempattIdOptionText){
	
	var optionVal="";
	var optionValText="";
	$("#"+this_expValParamOptionIdText+"").find("option:selected").each(function(i) {
		optionVal=this.value;
		optionValText=$(this).text();
	});
	
	var attributeListCode=[];
	var attributeListDescription=[];
	
	$("#"+this_expValParamTempattIdText+"").find("option:selected").each(function(i) {
			//alert(this.value+"-"+this.label);
			attributeListCode.push(this.value);
			attributeListDescription.push($(this).text());
	});
	
	var optionListCode=[];
	var optionListCodeDescription=[];
	$("#"+this_expValParamTempattIdOptionText+"").find("option:selected").each(function(i) {
			//alert(this.value+"-"+this.label);
			optionListCode.push(this.value);
			optionListCodeDescription.push($(this).text());
	});
	
	var disableStringExp=optionVal+"~"+attributeListCode.join()+"-"+optionListCode.join();
	var disableStringText=optionValText+"->"+attributeListDescription.join()+"-"+optionListCodeDescription.join();
	
	//alert(hiddenStringExp);
	//alert(hiddenStringText);
	
	$("#"+this_expFormulaIdText+"").val(disableStringExp);
	$("#"+this_expValIdText+"").val(disableStringText);
	
	
}


function getAllNewValidationExpConditionTempattIdComboForHidden(tempattId)
{
	var allTempattId=document.getElementById("allTempattId").value;
	var allTempattText=document.getElementById("allTempattText").value;
	var allTempattCode=document.getElementById("allTempattCode").value;
	var allTempattId_array=allTempattId.split(",");
	var allTempattText_array=allTempattText.split("|");
	var allTempattCode_array=allTempattCode.split(",");
	
	//alert(allTempattCode_array.length);
	var displayFlag=0;
	var tempattComboContent="";
	for(var i=0;i<allTempattId_array.length;i++)
	{
		/*if(tempattId==allTempattId_array[i]) displayFlag=1;
		if(displayFlag==1){*/
			tempattComboContent+="<option value='"+allTempattId_array[i]+"'>"+allTempattText_array[i]+"("+allTempattCode_array[i]+")</option>";
		/*}*/
		
	}
	return tempattComboContent;
}