/** 
//	Description: mlmAjx object handles all asynchronous calls to the database.
*/

var mlmAjx=new Object();

mlmAjx.READY_STATE_UNINITIALIZED=0;
mlmAjx.READY_STATE_LOADING=1;
mlmAjx.READY_STATE_LOADED=2;
mlmAjx.READY_STATE_INTERACTIVE=3;
mlmAjx.READY_STATE_COMPLETE=4;


/*--- content loader object for cross-browser requests ---*/
mlmAjx.ContentLoader=function(url,onload,onerror,method,params,contentType){
  this.req=null;
  mlmAjx.currentLoader=this;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loadXMLDoc(url,method,params,contentType);
}

mlmAjx.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
  if (!method){
    method="GET";
  }
  if (!contentType && method=="POST"){
    contentType='application/x-www-form-urlencoded';
  }
  if (window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
  } else if (window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (this.req){
    try{
      var loader=this;
      if (!isNull(this.onload) && !isUndefined(this.onload)) {
	      this.req.onreadystatechange=function(){
	        mlmAjx.ContentLoader.onReadyState.call(loader);
	      }
      }
      this.req.open(method,url,true);
      if (contentType){
        this.req.setRequestHeader('Content-Type', contentType);
      }
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}


mlmAjx.ContentLoader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==mlmAjx.READY_STATE_COMPLETE){
     var httpStatus=req.status;
    if(httpStatus==200 || httpStatus==0){
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
}

mlmAjx.ContentLoader.prototype.defaultError=function(){
	jAlert("error fetching data!"
    +"\n\nreadyState:"+this.req.readyState
    +"\nstatus: "+this.req.status
    +"\nheaders: "+this.req.getAllResponseHeaders());
}

/* ----------------------------------------- */

function doCleanUp() {
    if (sessionId != "") {
        var url = _mlmBaseHref + "/cleanup?id=" + escape(sessionId);
        var loader = new mlmAjx.ContentLoader(url, null, null, "GET");
    }
    len = window.parent.myOpenWinArr.length;
	if (len > 0) {
		for (i = 0; i < len; i++) {   
	        var c = window.parent.myOpenWinArr[i];
	        if (c != null) {
	        	c.close();
	        }
    	}
	}
    
}

//////////////////////////////////////////////////////////////////////////
var zip;
var zipFieldId;
var city;
var county;
var state;

function getZipInformation(zipCode, zipId, cityId, countyId, stateId) {

	zip = zipCode;
	city = cityId;
	county = countyId;
	state = stateId;
	zipFieldId = zipId;
	var url = _mlmBaseHref + "/lookupServlet?zip=" + zipCode;
	// jAlert(url);
	var loader = new mlmAjx.ContentLoader(url,fillAddressInformation,null,"GET");
}

/*
	XML Sample returned by the lookupServlet:
	<?xml version="1.0" ?>
	<selectChoice>
		<selectElement>
			<status>found</status>
		</selectElement>
		<city>
			<type>list</type>
			<cityentry>
				<value>testA</value>
			</cityentry>
			<cityentry>
				<value>testB</value>
			</cityentry>
			<cityentry>
				<value>testC</value>
			</cityentry>
		</city>
		<county>
			<type>text</type>
			<countyentry>countyA</countyentry>
		</county>
		<state>
			<type>text</type>
			<stateentry>stateA</stateentry>
		</state>
	</selectChoice>
*/
function fillAddressInformation() {
	var req = this.req;
	var cityElement = null;
    if (req.readyState == 4) {
        if (req.status == 200) {
			var xmlDoc = req.responseXML.documentElement;
			var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
			var strStatus = xSel.childNodes[0].firstChild.nodeValue;
			if (strStatus == "found") {
				processAddressElement("city", city, xmlDoc); 
				processCountyElement("county", county, xmlDoc); 
				var xState = xmlDoc.getElementsByTagName("state")[0];
				var stateElement = xGetElementById(state);
				if (typeof stateElement != 'undefined' && stateElement != null) {
					var stateValue = xState.childNodes[1].firstChild.nodeValue;
					for (i=0; i<stateElement.length; i++) {
						if (stateElement.options[i].value == stateValue) {
							stateElement.options[i].selected = true;
							break;
						}
					}
				}
//alert('1');				
				//Set focus to city element.
				cityElement = xGetElementById(city);
				if (cityElement.style.display == "") {
					cityElement.focus();
//alert('2');				
				} else {
					xGetElementById(city + "_select").focus();
				}
			} else {
//alert('4');				
				clearAddressElement(city);
				clearCountyElement(county);
				var stateElement = xGetElementById(state);
				if (typeof stateElement != 'undefined' && stateElement != null) {
					stateElement.options[0].selected = true;
				}
				//Set focus to city element.
//alert('5');				
				xGetElementById(zipFieldId).focus();
			}
		}
	}
}

function clearAddressElement(fieldId) {
	var element2 = xGetElementById(fieldId + "_select");
	element2.options.length = 0;
	element2.style.display = "none";
	var element = xGetElementById(fieldId);
	element.value = "";
	element.style.display = "";
	element.className = element.className.replace("disabled ", "");
	element.disabled = false;
}

function clearCountyElement(fieldId) {
	var element = xGetElementById(fieldId);	
	element.value = "";	
}


function processAddressElement(tagName, fieldId, xmlDoc) {
	var xAdd = xmlDoc.getElementsByTagName(tagName)[0];
	var strType = xAdd.childNodes[0].firstChild.nodeValue;
	var inputElement = xGetElementById(fieldId);
	var selectElement = xGetElementById(fieldId + "_select");
	var strValue;
	if (strType == "text") {
		strValue = xAdd.childNodes[1].firstChild.nodeValue;
		inputElement.style.display = "";
		inputElement.value = strValue;
		selectElement.style.display = "none";		
	} else {
		var xRows = xmlDoc.getElementsByTagName(tagName + "entry");
		var arrKey = new Array();
		var arrDisplay = new Array();
		var i;		
		if (tagName == "city") {
			for (i=0; i<xRows.length; i++) {
				arrKey[i] = xRows[i].childNodes[0].firstChild.nodeValue;
				arrDisplay[i] = xRows[i].childNodes[0].firstChild.nodeValue;
			}
		}
		populateSelectList(selectElement, arrKey, arrDisplay);
		selectElement.style.display="";
		selectElement.className = selectElement.className.replace("disabled ", "");
		//inputElement.style.display = "none";
		inputElement.value = selectElement.value; 
	}
}

function processCountyElement(tagName, fieldId, xmlDoc) {
	var xAdd = xmlDoc.getElementsByTagName(tagName)[0];
	var strType = xAdd.childNodes[0].firstChild.nodeValue;
	var inputElement = xGetElementById(fieldId);

	if (strType == "text") {
		inputElement.value = xAdd.childNodes[1].firstChild.nodeValue;
	} else {
		var xRows = xmlDoc.getElementsByTagName(tagName + "entry");
		var i;		
		if (tagName == "county") {
			for (i=0; i<1; i++) {
				inputElement.value = xRows[i].childNodes[0].firstChild.nodeValue;
			}
		} 
	}
}

//////////////////////////////////////////////////////////////////////////////////////
//SIC VALIDATION
var sic;
var sicField;
var sicFieldHidden;
var sicOrgValue_hidden;
function getSICInformation(sicCodeId, sicFieldId, sicFieldHiddenId, sicOrgValue_hiddenId) {

	sicCode = sicCodeId;
	sicField = sicFieldId;
	sicFieldHidden = sicFieldHiddenId;
	sicOrgValue_hidden = sicOrgValue_hiddenId;

	var url = _mlmBaseHref + "/lookupServlet?sic=" + sicCode;
	// alert(url);
	var loader = new mlmAjx.ContentLoader(url,fillSICInformation,null,"GET");
}

/*
	XML Sample returned by the lookupServlet:
	<?xml version="1.0" ?>
	<selectChoice>
		<selectElement>
			<status>found</status>
		</selectElement>
		<sictext>
			<type>text</type>
			<sictextentry>Industry desc abc...</sictextentry>
		</sictext>		
	</selectChoice>
*/
function fillSICInformation() {
	var req = this.req;
    if (req.readyState == 4) {
        if (req.status == 200) {
			var xmlDoc = req.responseXML.documentElement;
			var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
			var strStatus = xSel.childNodes[0].firstChild.nodeValue;
			if (strStatus == "found") {
				processSICTextElement("sictext", sicFieldHidden, xmlDoc); 
				xGetElementById(sicOrgValue_hidden).value = sicCode;				
			} else {
				jAlert('SIC Code "' + sicCode + '" is not found. \nPlease enter a valid SIC Code before continuing.');				
				//Set focus to sic element.	
				xGetElementById(sicField).value='';			
				xGetElementById(sicField).focus();
			}
		}
	}
}

function processSICTextElement(tagName, fieldId, xmlDoc) {
	var xAdd = xmlDoc.getElementsByTagName(tagName)[0];
	var strType = xAdd.childNodes[0].firstChild.nodeValue;
	var inputElement = xGetElementById(fieldId);
	//alert('3==' + inputElement.value);
	inputElement.value = xAdd.childNodes[1].firstChild.nodeValue;
	//alert('4==' + inputElement.value);
}

//////////////////////////////////////////////////////////////////////////////////////
//SIC INDUSTRY
var divisionValue;
var sectorValue;
var industryField
function getSICIndustryInformation(divisionString, sectorString, industryFieldId) {

	divisionValue = divisionString;
	sectorValue = sectorString;
	industryField = industryFieldId;

	var url = _mlmBaseHref + "/lookupServlet?division=" + divisionValue + "&sector=" + sectorValue;
	// alert(url);
	var loader = new mlmAjx.ContentLoader(url,fillSICIndustryInformation,null,"GET");
}

/*
	XML Sample returned by the lookupServlet:
	<?xml version="1.0" ?>
	<selectChoice>
		<selectElement>
			<status>found</status>
		</selectElement>
		<industry>
			<type>list</type>
			<industryentry>
				<key>0111</key>
				<value>testA</value>
			</industryentry>
			<industryentry>
				<key>0112</key>
				<value>testB</value>
			</industryentry>
			<industryentry>
				<key>0113</key>
				<value>testC</value>
			</industryentry>
		</industry>		
	</selectChoice>
*/
function fillSICIndustryInformation() {
	var req = this.req;
    if (req.readyState == 4) {
        if (req.status == 200) {
			var xmlDoc = req.responseXML.documentElement;
			var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
			var strStatus = xSel.childNodes[0].firstChild.nodeValue;
			if (strStatus == "found") {
				processIndustryElement("industry", industryField, xmlDoc); 			
			} else {
				deleteOptions(industryField);
			}
		}
	}
}


function processIndustryElement(tagName, fieldId, xmlDoc) {
	var xAdd = xmlDoc.getElementsByTagName(tagName)[0];
	var strType = xAdd.childNodes[0].firstChild.nodeValue;
	var selectElement = xGetElementById(fieldId);
	var inputElement = xGetElementById(fieldId+'sic');
	var strValue;

	var xRows = xmlDoc.getElementsByTagName(tagName + "entry");
	var arrKey = new Array();
	var arrDisplay = new Array();
	arrKey[0]='';
	arrDisplay[0]='';
	var i;	
	for (i=1; i<=xRows.length; i++) {
		arrKey[i] = xRows[i-1].childNodes[0].firstChild.nodeValue;
		arrDisplay[i] = xRows[i-1].childNodes[1].firstChild.nodeValue;
	}
	
	if (xRows.length > 0 && inputElement != null) {
		inputElement.value = arrKey[0];
	}
	populateSelectList(selectElement, arrKey, arrDisplay);
}

//////////////////////////////////////////////////////////////////////////////////////
//SIC Keyword Search
function getSICKeywordSearchInformation(keyword, industryFieldId) {
	industryField = industryFieldId;
	var url = _mlmBaseHref + "/lookupServlet?sickeyword=" + keyword;
	var loader = new mlmAjx.ContentLoader(url, fillSICKeywordSearchInformation, null, "GET");
}
function fillSICKeywordSearchInformation() {
	var req = this.req;
    if (req.readyState == 4) {
        if (req.status == 200) {
			var xmlDoc = req.responseXML.documentElement;
			var xSel = xmlDoc.getElementsByTagName('selectElement')[0];
			var strStatus = xSel.childNodes[0].firstChild.nodeValue;
			if (strStatus == "found") {
				processSICKeywordSearchElement("industry", industryField, xmlDoc); 			
			} else {
				jAlert('No matches Found.');				
				deleteOptions(xGetElementById(industryField));
			}
		}
	}
}
function processSICKeywordSearchElement(tagName, fieldId, xmlDoc) {
	var xAdd = xmlDoc.getElementsByTagName(tagName)[0];
	var strType = xAdd.childNodes[0].firstChild.nodeValue;
	var selectElement = xGetElementById(fieldId);
	var strValue;

	var xRows = xmlDoc.getElementsByTagName(tagName + "entry");
	var arrKey = new Array();
	var arrDisplay = new Array();
	arrKey[0]='';
	arrDisplay[0]='';
	var i;
	for (i=0; i<xRows.length; i++) {
		arrKey[i] = xRows[i].childNodes[0].firstChild.nodeValue;
		arrDisplay[i] = xRows[i].childNodes[1].firstChild.nodeValue;
	}
	populateSelectList(selectElement, arrKey, arrDisplay);
}

//////////////////////////////////////////////////////////////////////////////////////
function getOrganizationByAgency(agencyId, searchStr) {
	var url = _mlmBaseHref + "eCommerceLookupServlet?agencyId=" + agencyId + "&searchStr=" + searchStr;
	var loader = new mlmAjx.ContentLoader(url,fillInsuredList,null,"GET");
}

/*
	XML Sample returned by the lookupServlet:
	<?xml version="1.0" ?>
	<insuredName>
		<value>insuredA</value>
	</insuredName>
	<insuredName>
		<value>insuredB</value>
	</insuredName>
	<insuredName>
		<value>insuredC</value>
	</insuredName>
*/
function fillInsuredList() {
	var req = this.req;
	var cityElement = null;
    if (req.readyState == 4) {
        if (req.status == 200) {
//        alert('here');
			var xmlDoc = req.responseXML.documentElement;
			
			var xRows = xmlDoc.getElementsByTagName('insuredName');
			var arrKey = new Array();
			for (i=0; i<xRows.length; i++) {
				arrKey[i] = xRows[i].childNodes[0].firstChild.nodeValue;
			}
		}
	}
	__AutoComplete[id]['MainForm:blazeTest:bvg'] = arrKey;
}


