var alternateJumpTo='';
var postBackType='';
var qType='';
var MScroller = null;
var scrollObj;
var MScrollerIntersection = null;
var scrollObjIntersection;
var win=null;
var pageLoaded='';
var mapWidth=0;
var mapHeight=0;
var histID='';
var sessID='';
var curGroup='BaseMap';
var curOrthoGroup='BaseMap';
var isMultiOrtho='';
var orthoName='';
var appMinHeight=0;
var appMinWidth=0;
var isPageLoaded=false;
var postProcessComplete=false;
var _isPrint=false;
var _doUpdate=false;
var searchForTitle='';
var searchForText='';
var hasIntersection=false;
var dlg;
var locSelected=false;
var disclaimerURL;
var splashAreaUrl;
/*popUp's*/
function popUpPreviewWindow(otherAPNS,searchAddr){
	$('dialogTitle').innerHTML='Select a location';
  openPopUpPreviewWindow();
	setContentPopUpPreviewWindow(otherAPNS,searchAddr,'');
}
function setContentPopUpPreviewWindow(otherAPNS,searchAddr,sKey){
	var el = Ext.get("dialogBody");
	var mgr = el.getUpdateManager();
	var s=buildParams('^',$F('mapKey'),sKey,otherAPNS,searchAddr);
  mgr.update(postURL+'?wizard=buildPreviewPopUp&data='+s);
}
function openPopUpPreviewWindow(){
  if(!dlg){
    dlg = new Ext.BasicDialog("extdlg", {
      height: 215,
      width: 350,
      modal: true,
      proxyDrag: false,
      shadow: true,
      resizable : false,
      collapsible: false,
      closable: true
    });
    dlg.addKeyListener(27, dlg.hide, dlg); // ESC can also close the dialog
  }
  dlg.show();
}
function openDisclaimer(){
  var dlg = new Ext.BasicDialog("extdlg2", {
    height: 600,
    width: 700,
    modal: true,
    proxyDrag: true,
    shadow: true,
    resizable : false,
    collapsible: false,
    closable: false
	});
	dlg.addKeyListener(27, dlg.hide, dlg); // ESC can also close the dialog
	dlg.show();
}
function popUpMultiAddr(status,id){
	var popUp=$('popUp');
	var popUpText=$(id+'_text');
	if(status=='on'){
		popUpText.className='popUpBackGroundHover';
	  setPos(popUp.id,160,0,popUpText.id,true);
		popUp.className='popUpArea';
		popUp.innerHTML=$(id).innerHTML;
		popUp.show();
	}else{
		popUpText.className='popUpBackGround';
		popUp.hide();
	}
}
function toggleLegendPopUp(){
	posLegendPopUp();
	$('legendViewPopUp').toggle();
}
function toggleOrthoPopUp(bOn){
	if(!isMultiOrtho){
		if(curOrthoGroup=='BaseMap'){
			switchOrtho('Ortho');
		}else{
			switchOrtho('BaseMap');
		}
		return;
	}
	if(pageLoaded=='report'){
		orthoPopUp(bOn);
	}else{
		orthoPopUpInteractive(bOn);
	}
	return;
}
function orthoPopUpInteractive(bOn){
	if(bOn){
		$('orthoLinkArea').show();
	}else{
		$('orthoLinkArea').hide();
	}
}
function orthoPopUp(bOn){
	if(bOn){
			$('orthoLinkArea').show();
			posOrthoPopUp();
	}else{
		$('orthoLinkArea').hide();
	}
}
function posOrthoPopUp(bInteractive){
	if($('orthoLinkArea')){
		if($('orthoLinkArea').getDimensions().height<100){
			$('orthoLinkArea').style.height='100px'
		}
	}
	if(bInteractive){
		setPos('orthoLinkArea',0,0);
	}else{
		setPos('orthoLinkArea',3,27,'orthoBtn',true);
	}
}
function posLegendPopUp(){
	setPos('legendViewPopUp',3,27,'legendBtn',true);
}
/*End PopUp's*/

/*Change Map View/Ortho*/
function turnOffOrthoPopUp(){
	if(isMultiOrtho){
		if(pageLoaded=='report'){
			orthoPopUp(false)
		}else{
			orthoPopUpInteractive(false);
		}
	}
}
function switchOrtho(group){
	turnOffOrthoPopUp();
	if(group==curOrthoGroup)return;
	if(pageLoaded=='report'){
		doSwitchOrtho(group);
	}else{
		doSwitchOrthoInteractive(group);
	}
}
function doSwitchOrtho(group){
	if(group==curOrthoGroup)return;
	setMapDimensions();
	var s=buildParams('^',mapWidth,mapHeight,group,curOrthoGroup)
	curOrthoGroup=group;
	var el = Ext.get("mainMapArea");
	var mgr = el.getUpdateManager();
	mgr.update(postURL+'?wizard=switchView&data='+s);
	return;
}
function doSwitchOrthoInteractive(group){
	if(group==curOrthoGroup)return;
	var s=buildParams('^',group,curOrthoGroup);
	curOrthoGroup=group;
	doPostBack_Request('switchViewInteractive',null,s);
	return;
}
function switchView(bIsSwatch,swatchGroup){
	var group=$F('viewChanger');
	if(bIsSwatch){
		group=swatchGroup;
		setValue('viewChanger',group);
	}
	if(group==curGroup)return;
	setMapDimensions();
	var s=buildParams('^',mapWidth,mapHeight,group,curGroup)
	curGroup=group;
	var el = Ext.get("mainMapArea");
	var mgr = el.getUpdateManager();
	mgr.update(postURL+'?wizard=switchView&data='+s,null,getLegend);
}
/*End Change Map View/Ortho*/
/*Main Menu*/
function menuClick(type, n){
	var searchType=$('searchType');
  var searchTypeLabel=$('searchTypeLabel');
  $('candidates').innerHTML='';
  toggleMainMenu();
  searchTypeLabel.innerHTML=n;
  var x=$$('div.navSearchInput');
  for(idx=0;idx<x.length;idx++){
    x[idx].style.zIndex=0;
    x[idx].hide();
  }
	switch(type){
	case 'ADDRESS':
		var searchAddress=$('searchAddress');
		searchAddress.show();
    searchAddress.style.zIndex=999;
		searchType.value='addressSearch';
		var f=$('ADDRESS');
    f.value='';
		f.focus();
    doPostBack_Updater('doHelp','candidates','ADDRESSHelp')
 	break;
	case 'APN':
		var searchAPN=$('searchAPN');
		searchAPN.show();
    searchAPN.style.zIndex="999";
	  searchType.value='apnSearch';
		var f=$('APN');
	  f.value='';
		f.focus();
    doPostBack_Updater('doHelp','candidates','APNHelp')
		break;
	case 'STREET':
		var searchStreet=$('searchStreet');
		searchStreet.show();
    searchStreet.style.zIndex="999";
	  searchType.value='streetSearch';
		var f=$('STREET');
	  f.value='';
		f.focus();
    doPostBack_Updater('doHelp','candidates','STREETHelp')
		break;
	}
}
function toggleMainMenu(){
  $('return').toggle();
  $('searchDiv').toggle();
  $('navSearch').toggle();
	$('divWeather').toggle();
}
/*End Main Menu*/
/*type ahead*/
function GetQualifiers(type,i,t){
	var aValues,s1,inputStr,tValue,minInput=3;
	if(type=='APN')minInput=6;
	if(type=='STREET')minInput=3;
  inputStr=cleanUpQualifier(i);
	if(inputStr.length <minInput) return;
	var command=type + 'Qualifiers';
	doPostBack_Updater(command,'candidates',inputStr,false);
  scrollObj = $("divScroller-1");
  MScroller = new MPTScroll(scrollObj, 173, 200,'divScrollerContainer','divScrollContainerInner');
}
function cleanUpQualifier(s){
  s=s.replace(/'/g,"''")
  return s;
}
function do_Post(wizard,data){
	var params = 'wizard=' + wizard +'&data=' + data;
	var ajax = new Ajax.Request(postURL, {method: 'get', parameters: params, onComplete: doResult});
	return false;
}
function getWeather(divId, wizard, data){
  if(pageLoaded!='default'){
    return;
  }
	var params = 'wizard=' + wizard +'&data=' + data;
	var ajax = new Ajax.Updater({success: divId},postURL,{method: 'get', parameters: params, onFailure: reportError});
}
function doResult(result){
	var rt=result.responseText;
	if(rt.indexOf('ERR-LRSAIDSO|')!=-1){doError(rt);return;}
	switch(postBackType){
		case 'help':
			input.innerHTML=rt;
			break;
		case 'getSelected':
			doMapSelected(rt);
			break;
		case 'doSwitchView':
			doSwitchView(rt);
			break;
		case 'getImageURL':
			$('mainMapArea').innerHTML=rt;
			break;
    case 'zoomIntersection':
      var mapFrameInteractive=$('mapFrameInteractive')
      if(mapFrameInteractive)mapFrameInteractive.src=appPath+'/map/?'+rt;
      break;
	}
	return false;
}
function reportError(){
	return ""
}
function doMapSelected(s){
	var searchType=$('searchType');
	var mapKey=$('mapKey');
  var ra,ras;
  var divSelectionMsg;
  var resultsBackToXList;
  if($('resultsArea'))ra=$('resultsArea');
  if($('resultsAreaStreet'))ras=$('resultsAreaStreet');
  if($('divSelectionMsg'));divSelectionMsg=$('divSelectionMsg');
  if($('resultsBackToXList'))resultsBackToXList=$('resultsBackToXList');
  if(s){
    var aResult=s.split('|');
	  if(aResult[1]=='streetSearch'){
      ra.style.display='none';
      ras.style.display='block';
      divSelectionMsg.style.display='none';
      ras.innerHTML=aResult[0];
      scrollObj = $("divScroller-1");
      MScroller = new MPTScroll(scrollObj, 173, 200,'divScrollerContainer','divScrollContainerInner');
      searchType.value='streetSearch';
    }else{
      if(ras){
        if(hasIntersection){
          ras.style.display='none';
          ra.style.display='block';
          resultsBackToXList.style.display='block';
        }else{
          ras.style.display='none';
          ra.style.display='block';
        }
      }else{
        ra.style.display='block';
      }
      divSelectionMsg.style.display='block'
      ra.innerHTML=aResult[0];
      mapKey.value=aResult[1];
      searchType.value='apnSearch';
      locSelected=true;
    }
	}else{
 		ra.innerHTML='Selecting a location on the map.';
	}
	toggleLoading(false);
}
function hoverScroller(scrollId,d,s,o){
	    if(s=='on'){
			o.src='images/'+o.id+'_o.png';
			scrollId.startScroll(0, d);
		}else{
			o.src='images/'+o.id+'.png';
			scrollId.stopScroll();
		}
}
/*end Type Ahead*/
function turnOffSplash(){
  if(!splashAreaUrl){
    splashAreaUrl='splash.html';
  };
  switch(pageLoaded){
    case 'disclaimer':
      window.frames['disclaimerFrame'].location=disclaimerURL;
      break;
    case 'default':
      window.frames['splFrame'].location=splashAreaUrl;
      break;
  }
}
function toggleLoading(bIsLoading){
	turnOffSplash();
	if(bIsLoading){
		loadMessage(bIsLoading,'Loading...','Please Wait...')
	}else{
		loadMessage(bIsLoading);
	}
}
function setValue(s,v){
	var o=$(s);
	var j=0;
	if(o==null)return;
	if(o.length>0){
		for(j=0;j<o.length;j++){
			if(o.options[j].value==v){
				o.selectedIndex=j;
			}
		}
	}else{
		o.value=v;
	}
}
/*Link handling*/
function doAppLink(url,useKey,target){
var fUrl='';
var key=$F('mapKey');
  if(pageLoaded=='report')locSelected=true;
	if((key=='')||(key==null)||(key=='undefined')||(!locSelected)){
		Ext.Msg.alert('Map Selection', 'Select a location to continue.');
		return;
	}
	if(!target)target='appWin';
	if(useKey){
		fUrl=url+$F('mapKey');
		var win=open(fUrl,target);
	}else{
		var win=open(url,target);
	}
}
function popWinMsg(p){
	var ans=confirm('Leaving City Website');
	if(ans)popUpWin(p);
}
/*End Link handling*/

/*Submit Searches*/
function submitIntersectionSearch(sData){
  do_Post('zoomIntersection',sData);
  postBackType='zoomIntersection';
}

function submitAddrSearch(searchType, keyValue, dataType, address, APNCount){
	var addrInput=$('searchData');
	var dataDsp=$('searchDspText');
	addrInput.value=address;
	dataDsp.value=address;
	submitSearch(searchType, keyValue, address, null, APNCount);
}
function submitAddrSearchFromPreview(searchType,keyValue,address,apnCount){
	$("mapKey").value=keyValue;
	submitSearch(searchType,address,null,null,apnCount);
}
function submitTractSearch(searchType, keyValue, TractNLot){
	var dataInput=$('searchData');
	var dataDsp=$('searchDspText');
	dataInput.value=TractNLot;
	submitSearch('tractSearch', keyValue,'tract');
}
function viewReport(){
	var key=$F('mapKey');
	if((key=='')||(key==null)||(key=='undefined')||(!locSelected)){
			Ext.Msg.alert('Map Selection', 'Select a location to continue.');
			return;
	}
	submitSearch('apnSearch',key);
}
function submitSearch(searchType, searchValue, subParam, id, APNCount){
	var key=$('KEY');
	var street=$('STREET');
	var wizard=$('wizard');
	var results=$('divResults');
	var inputs=$('inputs');
	var searchData=$('searchData');
	var searchDsp=$('searchDspText');
	var searchTypeField=$('searchType');
	var interactiveMap=$('interactiveMap');

	searchTypeField.value=searchType;
	switch(searchType){
		case 'apnSearch':
			var mapKey=$('mapKey');
			if($('APN'))$('APN').value=mapKey.value;
			mapKey.value=searchValue;
			searchData.value=searchValue;
			searchDsp.value=subParam;
			break;
		case 'streetSearch':
			$('streetParts').value=searchValue;
      $('streetCodeLeftRight').value=subParam;
			break;
		default:
			$('addrType').value=subParam;
			$('APNCount').value=APNCount;
			break;
	}
	setMapDimensions();
	wizard.value=searchType;
	key.value = searchValue;

	toggleLoading(true,true);
	document.forms['frmMain'].submit();
}
/*End Submit Searches*/
/*Print*/
function printDialog(printKey,multiLayout){
	if(!multiLayout){
		printIt(printKey);
	}
}
function printIt(printKey){
	var searchType=$('wizard');
	var printPage='print.aspx';
  var sText=$('searchForTextData').innerHTML;
  var sTextInner='';
  if($('searchForDataInner')){
    sTextInner=$('searchForDataInner').innerHTML;
  }
  if (sText==''){
	sText='%20';
  }
  var sTitle=$('searchForTitle').innerHTML;

	var url=printPage+'?printkey='+printKey+'&searchType='+searchType.value+'&searchForTitle='+sTitle+'&searchForData='+sText+'&searchForDataInner='+sTextInner;
	var win=window.open(url,"printed_report","resizable=1,scrollbars=1,width=800,height=650");
}
/*End Print*/
/*Interactive Map*/
function doInteractiveMap(){
	toggleLoading(true);
	$('wizard').value='interactive';
	document.forms['frmMain'].submit();
}
function clickMap(){
	var map=getMapObj();
	if(map){
		if(map.crntTool==30){
			getSelected(map);
		}
	}
}
function setMapSessData(map){
	histID=map.document.forms['MapForm'].HistID.value;
	sessID=map.document.forms['MapForm'].SessID.value;
}
function getSelected(map){
  var msg='<div class="LoadingMsg">Loading</div>';
	setMapSessData(map);
	var streetParts=$F('streetParts');
  var streetCodeLeftRight=$F('streetCodeLeftRight');
  if($('resultsArea'))$('resultsArea').innerHTML=msg;
  if($('resultsAreaStreet'))$('resultsAreaStreet').innerHTML=msg;
	toggleLoading(true);
	postBackType='getSelected';
  var s=do_Post('getSelected',histID+'^'+sessID+'^'+pageLoaded+'^'+streetParts+'^'+streetCodeLeftRight);
}
function getMapObj(){
	var map=window.frames['mapFrI'];
	if(map){
		if(map.document.forms['MapForm']==null)return;
		return map;
	}
}
/*End Interactive Map*/
/*Page Load*/
function resizePage(){
  if(_isPrint)return;
	var winHeight;
	var winWidth;
	var h;
	var w=appMinWidth;
	var pageContainer=$('pageContainer');
  var bodyTag=$('bodyTag');
  if(pageContainer==null || bodyTag==null)return;
  _resizing=true;
  if(pageLoaded=='report'){
		h=getReportHeight();
	}else{
		h=appMinHeight;
	}
	winHeight=bodyTag.getDimensions().height;
	winWidth=bodyTag.getDimensions().width;

	if(winHeight>h){
		h=winHeight;
	}
	if(winWidth>w){
		w=winWidth;
	}
  if ((pageContainer.getDimensions().height != h) || (pageContainer.getDimensions().width != w)) {
    pageContainer.style.height=h+'px';
    pageContainer.style.width=w+'px';
    if(ThePage.mLayout!=null){
      ThePage.mLayout.endUpdate();
    }
  } else {
    if((pageLoaded=='report') || (pageLoaded=='interactive') ||(pageLoaded=='streetSearch')){
       loadPage();
       isPageLoaded=true;
    }
  }
  return;
}
function initOuterLayout(){
  if(eastPanelSize==0){
    $('east-div').display='none';
  };
  if(westPanelSize==0){
    $('west-div').display='none';
  };
  if(southPanelSize==0){
    $('south-div').display='none';
  };
}
function getPostProcessItems(){
  if(pageLoaded=='report'){
    var aItem;
    if(postProcessComplete)return;
    var o=$$('div.postprocessitem');
		if(o.length==0){
			resizePage(false,true);
		}else{
			for(idx=0;idx<o.length;idx++){
				if(idx==(o.length-1)){
					_doUpdate=true;
				}
				var data=buildParams('^',$F('mapKey'),o[idx].id.replace('post',''),_doUpdate);
				updateElm(o[idx].id,'getReportSection',data);
			}
		}
		postProcessComplete=true;
    }
  return;
}
function getPrintPostProcessItems(){
  var aItem;
  var doUpdate=false;
  var o=$$('div.postprocessitem');
  for(idx=0;idx<o.length;idx++){
    if(idx==(o.length-1)){
        doUpdate=true;
    }
    var data=buildParams('^',$F('mapKey'),o[idx].id.replace('post',''),doUpdate,true);
    updateElm(o[idx].id,'getReportSection',data);
  }
  return;
}
function sizePages(){
  var modH;
  var b;
  var pNum=0;

  var o=$$('div.postprocessitem');
  for(idx=0;idx<o.length;idx++){
    if(o[idx].innerHTML.indexOf('LRHIDE')>0){
      o[idx].style.height='0px';
      o[idx].style.display='none';
    }
  }
}
function updateElm(elId,wizard,data){
  var el = Ext.get(elId);
	var mgr = el.getUpdateManager();
  mgr.loadScripts=true;
  if(!data){data=''}
  mgr.update(postURL+'?wizard='+wizard+'&data='+data);
	return;
}
function updatePages(){
  sizePages();
}
function getReportHeight(){
	var h=0;
	/*get the heights of header and footer elements.
	 note some elements may not be present in the html
	 getElHeight will return 0 in that case.*/
	h+=getElHeight('north-div');
	h+=getElHeight('north-inner-div');
	h+=getElHeight('south-div');
	h+=getElHeight('south-inner-div');

	/*get height of report area*/
	h+=$('reportDetail').getDimensions().height;
	h+=$('topMenuBar').getDimensions().height;
	h+=$('mainMapArea').getDimensions().height;
	return h;
}
function getElHeight(el){
	if($(el)){
		return $(el).getDimensions().height;
	}else{
		return 0;
	}
}
function loadPage(){
		switch(pageLoaded){
			case 'report':
				if(isPageLoaded){
					if (setMapDimensions() == true) {
            posLegendPopUp();
            var s=buildParams('^',mapWidth,mapHeight)
            doUpdate('mainMapArea','getImageURL',s,getLegend);
            var listItems=$$('div.smartBoxLabelInner');
            for( var i = 0;i<listItems.length;i++){
               var item=listItems[i];
               if(item.innerHTML==alternateJumpTo){
                item.innerHTML=item.innerHTML+'<a name="MoreAddr"></a>';
               };
            };
          }
				}
					break;
			case 'interactive':
				$('mapFrameInteractive').src='map';
				window.frames['mapFrI'].location='map';
				break;
			case 'streetSearch':
        			mapString=mapString.replace(/{apos}/g,"'");
				//$('mapFrameInteractive').src='map/'+mapString;
				window.frames['mapFrI'].location='map/'+mapString;
				break;
		}
}
/*End Page Load*/
/*Utility  - Support Functions*/
function returnToMain(){
  if(pageLoaded=='default'){
    toggleMainMenu();
  }else{
    document.location=appPath+'/?clear=true';
	}
}
function setMapDimensions(){
  var w = $('center-inner-div').getDimensions().width;
  if (w == mapWidth) return false;
  //From what I can tell the first time the map size is determined from center-inner-div
  //Ext allows for a scrollbar, the scrollbar is not needed so it ends up getting re-calculated out
  //The image size ends up being us the scrollbar width to small.
  mapWidth= w+16;
  $('mapWidth').value=mapWidth
	mapHeight = 300;
	$('mapHeight').value=mapHeight;
  return true;
}
function preloadImages(){
	var args=preloadImages.arguments;
	for(var i=0;i<args.length-1;i++){
		var img=new Image()
		img.src=args[i];
	}
}
function getLegend(){
	var el = Ext.get("legendImgContainer");
	var mgr = el.getUpdateManager();
	mgr.update(postURL+'?wizard=getLegend&data=');
	return;
}
function doUpdate(elName,fName,data,postCommand){
	var el = Ext.get(elName);
	var mgr = el.getUpdateManager();
	if(postCommand){
		mgr.update(postURL+'?wizard='+fName+'&data='+data,null,postCommand);
	}else{
		mgr.update(postURL+'?wizard='+fName+'&data='+data);
	}
}
function buildParams(separator){
	var args=buildParams.arguments;
	var idx;
	var s='';
	if(args.length<2||separator==null)return '';
	if(args.length==2)return args[1];
	for(idx=1;idx<args.length;idx++){
		s+=args[idx]+separator;
	}
	s+args[idx];
	if(Right(s,1)==separator){
		s=Left(s,s.length-1);
	}
	return s;
}
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function hover(o,s){
	var oName=$(o.id).readAttribute('imagename');
	if(s=='on'){
		o.src='images/'+oName+'_o.gif';
	}else{
		o.src='images/'+oName+'.gif';
	}
}
function setPos(target,offSetLeft,offSetTop,source,bClone){
	if(bClone){
		setPosFromClone(source,target,offSetLeft,offSetTop);
	}else{
		setPosFromXY(target,offSetLeft,offSetTop)
	}
}
function setPosFromClone(source,target,offSetLeft,offSetTop){
  var sourceObj=$(source);
  var targetObj=$(target);
  Position.clone(sourceObj, targetObj,{setLeft:true,setTop:true,setWidth:false,setHeight:false,offsetLeft:offSetLeft,offsetTop:offSetTop});
}
function setPosFromXY(target,x,y){
	var top=0;
	var left=0;
	var t=$(target);
	if(x){
		t.style.left=x+'px';
	}
	if(y){
		t.style.top=y+'px';
	}
}
function randomNumber(seed){
	var lSeed=11;
	if(seed){lSeed=seed};
	return Math.floor(Math.random()*lSeed);
}
function loadMessage(bShow,title,msg){
	if(bShow){
	 	Ext.MessageBox.wait(msg,title);
	}else{
		Ext.MessageBox.hide();
	}
}
//*End Utility  - Support Functions*/

