

var TYPE_NAME 		= 0;
var TYPE_TITLE 		= 1;
var TYPE_ADDRESS1	= 2;
var TYPE_ADDRESS2 	= 3;
var TYPE_CITY	 	= 4;
var TYPE_PHONE1		= 5;
var TYPE_PHONE2		= 6;
var TYPE_PHONE3		= 7;
var TYPE_CELL		= 8;
var TYPE_FAX		= 9;
var TYPE_EMAIL		= 10;
var TYPE_WEBADDRESS	= 11;
var TYPE_TAGLINE	= 12;
var TYPE_TITLE2 	= 13;
    
    
function FieldOptionCategory(){
   this.id=0;
   this.customerId=0;
   this.categoryName="";
   this.optionList = new Array();
}

function FieldOption(){
   this.id=0;
   this.parentId=0;
   this.optionValue="";
   this.optionRelatedList = new Array();
}

function FieldOptionRelated(){
   this.id=0;
   this.parentId=0;
   this.fieldNameId="";
   this.fieldName="";
   this.fieldValue="";
}


//Note: will define: myCategoryList somewhere.

//get field option list by category name
function getFieldOptionList(categoryName){


   for (var i=0; i<myCategoryList.length; i++){
   	var myCategory = myCategoryList[i];
   	
   	if (myCategory.categoryName==categoryName){
   		return myCategory.optionList;
   	}  
   }	
   
   return null;
}


//get field option related by category name, and option value
function getFieldOptionRelatedList(categoryName,optionId){


   var optionList = getFieldOptionList(categoryName);

   if (optionList==null || optionList.length==0){
   	return null;
   }
   
   for (var i=0; i<optionList.length; i++){
   	var myOption = optionList[i];
   	
   	if (myOption.id==optionId){
   		return myOption.optionRelatedList;
	}
   }	
   
   return null;
}


//show options to location list
function initLocations(elemName,defaultValue){
	var obj = document.getElementById(elemName);
	if (!obj){
		return;
	}
	select_clearSelectedOptions(obj,true);	
	
	var optionList =getFieldOptionList(elemName);
	
	if (optionList){
		for (var i=0; i<optionList.length; i++){
			var myOption =optionList[i];
			var optionValue = unescape(myOption.optionValue);
			var optionObj  = select_addOption(obj,optionValue,myOption.id);	
			
			//alert("v1="+myOption.id+",v2="+defaultValue);
			
			if (optionObj && myOption.id==defaultValue){
				optionObj.selected = true;
			}
		}
	}
}

function changeLocation(elemName){
	var obj = document.getElementById(elemName);
	if (!obj){
		return;
	}
	
	var locationValue = obj.value;
	var relatedList   = getFieldOptionRelatedList(elemName,parseInt(locationValue));

	if (relatedList==null){
		return;
	}
	for (var i=0; i<relatedList.length; i++){
		var related = relatedList[i];
		var fieldVal = unescape(related.fieldValue);
		
		//****************************************
		//bc location - for business card profile
		//****************************************
		
		if ("bcLocation"==elemName){
				switch (related.fieldNameId){
					case TYPE_NAME:
						setElementValue("bcName",fieldVal);
						break;
					case TYPE_TITLE:
						setElementValue("bcTitle",fieldVal);
						break;
					case TYPE_ADDRESS1:
						setElementValue("bcAddress1",fieldVal);
						break;
					case TYPE_ADDRESS2:
						setElementValue("bcAddress2",fieldVal);
						break;
					case TYPE_CITY:
						setElementValue("bcCity",fieldVal);
						break;
					case TYPE_PHONE1:
						setElementValue("bcPhone1",fieldVal);
						break;
					case TYPE_PHONE2:
						setElementValue("bcPhone2",fieldVal);
						break;
					case TYPE_PHONE3:
						setElementValue("bcPhone3",fieldVal);
						break;
					case TYPE_CELL:
						setElementValue("bcCellphone",fieldVal);
						break;
					case TYPE_FAX:
						setElementValue("bcFax",fieldVal);
						break;
					case TYPE_EMAIL:
						setElementValue("bcEmail",fieldVal);
						break;
					case TYPE_WEBADDRESS:
						setElementValue("bcWeb",fieldVal);
						break;
					case TYPE_TAGLINE:
						setElementValue("bcSlogan",fieldVal);
						break;
					case TYPE_TITLE2:
						setElementValue("bcTitle2",fieldVal);
						break;	
				}
		
		//****************************************
		//title location
		//****************************************
		}else if ("titleLocation"==elemName){
		
				switch (related.fieldNameId){
					case TYPE_ADDRESS1:
						setElementValue("address1",fieldVal);
						break;
					case TYPE_ADDRESS2:
						setElementValue("address2",fieldVal);
						break;
					case TYPE_CITY:
						var csz =parseCityStateZip(fieldVal);
						if (csz){
							setElementValue("city",csz.city);
							setElementValue("state",csz.state);
							setElementValue("zip",csz.zip);
						}
						break;
					case TYPE_PHONE1:
						setElementValue("phone",fieldVal);
						break;
					case TYPE_PHONE2:
						setElementValue("phone2",fieldVal);
						break;
					case TYPE_CELL:
						setElementValue("cell",fieldVal);
						break;
					case TYPE_FAX:
						setElementValue("fax",fieldVal);
						break;
				}		
		}
	}
}

function setElementValue(elemName,elemValue){
	var obj = document.getElementById(elemName);
	if (obj){
		obj.value = elemValue;
	}
}

function CityStateZip(){
	this.city="";
	this.state="";
	this.zip="";
}

function parseCityStateZip(city){
	var csz = new CityStateZip();
	
	//city
	var lastDot = city.lastIndexOf(",");
	if (lastDot<0){
		csz.city = city;
		return csz;
	}
	
	//city
	var myCity =city.substring(0,lastDot);
	csz.city =myCity;
	
	if (lastDot>=city.length-1){
		return csz;
	}
	
	//state
	city = city.substring(lastDot+1);
	city =trimLeadingSpace(city);
	var lastSpace = city.indexOf(" ");

	
	if (lastSpace<0){
		csz.state=city;
		return csz;
	}
	
	var myState = city.substring(0,lastSpace);
	myState =trimLeadingSpace(myState);
	csz.state =myState;
	if (lastSpace>=city.length-1){
		return csz;
	}
	
	//zip
	var myZip = city.substring(lastSpace+1);
	myZip =trimLeadingSpace(myZip);
	csz.zip =myZip;
	return csz;

}

function trimLeadingSpace(text){
  var myText="";
  if (!text || text.length==0){
  	return myText;
  }
  
  var meetNonSpace=false;
  for (var i=0; i<text.length; i++){
  	var c = text.charAt(i);
  	if (c!=' ' || meetNonSpace){
  		myText +=c;
  		meetNonSpace = true;
  	}
  }
  
  return myText;
}



//some operations to HTML Select object

function select_addOption(theSel, theText, theValue)
{
	var newOpt = new Option(theText, theValue);
	var selLength = theSel.length;
	theSel.options[selLength] = newOpt;
	return newOpt;
}

function select_deleteOption(theSel, theIndex)
{	
	var selLength = theSel.length;
	if(selLength>0)
	{
		theSel.options[theIndex] = null;
	}
}

function select_clearSelectedOptions(selObj,initIt){
	selObj.options.length	=0;
	if (initIt){
		select_addOption(selObj,"","0");
	}	
}


//set default item in selection
function setSelectedItem(elemName,defaultValue){


	var obj = document.getElementById(elemName);
	if (!obj){
		return;
	}

		for (var i=0; i<obj.options.length; i++){
			var myOption =obj.options[i];
			var optionValue = myOption.value;
			
			
			if (optionValue==defaultValue){
				myOption.selected = true;
				break;
			}
		}
}


