var target_text="";
var hidden_field="";
var hidden_nec="-1";
var lcReq="-1";
var codeType="";
var appletId="";
var parentFieldCou=""; // select box (combo-box) for country
var parentFieldState=""; // text field for state code (hidden)
var parentFieldStateTxt=""; // text field for state title
var region = new Array("World","Continent","Country","State","City / Village");
var genFlag="N";
var hidden_level="";
function setTarget(){
	target_text=arguments[0];
	hidden_field=arguments[1];
	hidden_nec=arguments[2];
	appletId=arguments[3];
	lcReq="-1";
	codeType="";
	hidden_level=arguments[4];
}

function setTargetLevel(){
	setTarget(arguments[0], 
		  arguments[1], 
		  arguments[2], 
		  arguments[3]);
	setLevelRequired(arguments[4],
			 arguments[5]);
}

function setTargetGen(){
	setTarget(arguments[0], 
		  arguments[1], 
		  arguments[2], 
		  arguments[3]);

	setLevelRequired(arguments[4],
			 arguments[5]);
	if (arguments[4]=="3" || arguments[4]=="4"){
		// city will be selected,
		// set state
		parentFieldState=arguments[6];
		parentFieldStateTxt=arguments[7];
		// set country
		parentFieldCou=arguments[8];
	}
	genFlag="Y";
}

function setTargetParentCou(){
	setTarget(arguments[0], 
		  arguments[1], 
		  arguments[2], 
		  arguments[3]);
	parentFieldCou=arguments[4];
	setLevelRequired(3, "State");
}

function setTargetParentCityCou(){
	setTarget(arguments[0], 
		  arguments[1], 
		  arguments[2], 
		  arguments[3]);
	parentFieldCou=arguments[4];
	setLevelRequired(4, "City");
}

function setTargetParentStateCou(){
	setTargetParentCou(arguments[0], 
		  arguments[1], 
		  arguments[2], 
		  arguments[3],
		  arguments[6]);
	parentFieldState=arguments[4];
	parentFieldStateTxt=arguments[5];
	setLevelRequired(4, "City");
}

function getNoTitle() {
	var appletObjectR=arguments[0];
	if(appletObjectR==null){
		alert("Please click on relevant 'Search' link first before using an Applet.");
		return false;
	}
	if (appletId!=appletObjectR.name){
		alert("You have clicked wrongly on 'Cancel' button.\n\n"
			+"Please click on correct "
			+"'Search' link\n"
			// +"is compulsory "
			+"before using this button.");
		return false;
	}
	appletObjectR.clearUIOTitle();
	if (appletObjectR.getLevelCount()>=0)
		appletObjectR.deselect();
	target_text.focus();
	return true;
}
function getTitle() {
	
	var appletObjectR=arguments[0];
	
	var caller=arguments[1];

	if(appletObjectR==null){
	// This will never happen
		alert("Please click on relevant 'Search' link first before using an Applet.");
		return false;
	}
	if (appletId!=appletObjectR.name){
		alert("You have clicked wrongly on 'Done' button.\n\n"
			+"Please click on correct "
			+"'Search' link\n"
			+"before using this button.");
		return false;
	}
	var uioTitle=appletObjectR.getUIOTitle();
	if(appletObjectR.getTitle() == "" && (uioTitle == ""))
	{
 	   alert("Please do selection / entry in applet before clicking on 'Done' button.");
 	   return false; // (false);
	}
	if(uioTitle!=""){
	// for uio
		if (CharValid(uioTitle)==false){
		 	   return false;
		}
		target_text.value=uioTitle;
		hidden_nec.value=appletObjectR.getLevelCode(eval(appletObjectR.getLevelCount()));
		hidden_field.value="-1";
		if (caller==null){
			appletObjectR.clearUIOTitle();
			if (appletObjectR.getLevelCount()>=0)
				appletObjectR.deselect();
		}
		
		target_text.focus();
		return true;
	}
	// not a uio
	var lc=appletObjectR.getLevelCount();
	if(lcReq!=-1 && lc!=lcReq)
	{
		if (eval(lcReq)>=0 && eval(lcReq)<=4) // 17/01/05
			alert("Please select value of "
			     +codeType+" only"
			     +" (your selection [ "
			     +appletObjectR.getLevelTitle(eval(lc))
			     +" ] is a "+region[lc]+").");
		else
			alert("Please select value of "
			     +codeType+" at level "+lcReq+" only"
			     +" (your selection [ "
			     +appletObjectR.getLevelTitle(eval(lc))
			     +" ] is at level "+lc+").");
		return (false);
	}
	if (appletObjectR.getLevelTitle(eval(lc)).indexOf("Any City") != -1 || appletObjectR.getLevelTitle(eval(lc)).indexOf("Any State") != -1)
	{
		alert('You can not select Any City / Any State. Instead please select State / Country in wich the City / State present');
		return false;
	}
	target_text.value=appletObjectR.getLevelTitle(eval(lc));
	hidden_field.value=appletObjectR.getLevelCode(eval(lc));
	hidden_nec.value="-1"; // nec;
	
	if (genFlag=="Y"){
		if (eval(lcReq)==3 || eval(lcReq)==4){
			if (parentFieldCou!=null)
				optionSelect(parentFieldCou, appletObjectR.getLevelCode(2));
			if (eval(lcReq)==4 && parentFieldState!=null){
				parentFieldState.value=appletObjectR.getLevelCode(lc - 1);
				parentFieldStateTxt.value=appletObjectR.getLevelTitle(lc - 1);
			}
		}
	}
	if (caller==null){
			if(hidden_level!=null){
				hidden_level.value=appletObjectR.getLevelCount();
			}	
		if (appletObjectR.getLevelCount()>=0)
			appletObjectR.deselect();
	}
	target_text.focus();
	return true;
}

function clearValue()
{
	var appletObjectR=arguments[0];
	if(appletObjectR==null){
	// This will happen when clearValues() is called without argument(applet).
		alert("Please click on relevant 'Search' link first before using an Applet.");
		return false;
	}
	if (appletId!=appletObjectR.name){
		alert("You have clicked wrongly on 'Clear Old Entry' button.\n\n"
			+"Please click on correct "
			+"'Search' link before using this "
			+"button.");
		return false;
	}
	appletObjectR.clearUIOTitle();
	if (appletObjectR.getLevelCount()>=0)
		appletObjectR.deselect();
	target_text.value ="";
	hidden_field.value="0";
	hidden_nec.value="0";

	if (parentFieldState!=null){
		parentFieldState.value="";
		parentFieldStateTxt.value="";
	}
	if (parentFieldCou!="")
		optionSelect(parentFieldCou, 0);
	target_text.focus();
}

function setLevelRequired(){
	lcReq=arguments[0];
	codeType=arguments[1];
}

function getTitleParentCou()
{
// to set country from region code
	
	var appletObjectR=arguments[0];
	var caller=arguments[1];
	if (getTitle(appletObjectR, "parentCou")==false)
		return false;
	if (appletObjectR.getLevelCode(2)<0)
		optionSelect(parentFieldCou, 0);
	else
		optionSelect(parentFieldCou, appletObjectR.getLevelCode(2));
	if (caller==null){
		if(hidden_level!=null){
			hidden_level.value=appletObjectR.getLevelCount();
		}	
		
		appletObjectR.clearUIOTitle();
		if (appletObjectR.getLevelCount()>=0)
			appletObjectR.deselect();
	}
	return true;
}

function getTitleParentStateCou()
{
// to set country and state from region code
	
	var appletObjectR=arguments[0];
	var caller=arguments[1];
	if (getTitleParentCou(appletObjectR, "parentStateCou")==false)
		return false;
 	var lc=appletObjectR.getLevelCount();
 	if (appletObjectR.getUIOTitle()!=""){
	 	parentFieldState.value=appletObjectR.getLevelCode(eval(lc)); // lc - 1 --> lc
	  	parentFieldStateTxt.value=appletObjectR.getLevelTitle(eval(lc)); // lc - 1 --> lc
	}
	else {
	 	parentFieldState.value=appletObjectR.getLevelCode(lc - 1);
	  	parentFieldStateTxt.value=appletObjectR.getLevelTitle(lc - 1);
	}
  	// it had no effect: intention is to disallow modi. of state when it is derived from city.
	if (caller==null){
		appletObjectR.clearUIOTitle();
		if (appletObjectR.getLevelCount()>=0)
			appletObjectR.deselect();
	}
	return true;
}
function CharValid()
{
	var strVal=new String(arguments[0]);
	var ret=true;
	for (var i=0 ; i<strVal.length; i++){
		var charv = strVal.charCodeAt(eval(i));
		if (eval(charv)>=32 && eval(charv)<=126)
			;
		else{
	 	   	alert("Please do not type special character: "+strVal.charAt(eval(i))+" in your entry: "+strVal);
			ret=false;
		}
	}
	return ret;
}