function relateClip(c) {
	TB_show('','api/related.php?name=' + c + '&width=200&height=200');
}

function setClipFilter(c,l,lat,lon) {

	clip = c;
        reCenter(lon,lat,9);

	myRE = new RegExp("counties|sen_law|cng_law", "i");
 	MWJ_findObj('placeNameMatchDiv').innerHTML = '';
	changeObjectVisibility('placeNameMatchDiv','hidden');
        MWJ_findObj("placename").value = l;
        MWJ_findObj("geoImage").src = "/ceic/images/loading.gif";

	if (clip.match(myRE)){
        	MWJ_findObj("geoImage").src = "/ceic/api/spotshape?clip=" + clip + "&size=120";
	}
	else {
        	MWJ_findObj("geoImage").src = "api/spotpoint?clip=" + clip + "&size=120";	
	}
	divHighlight(MWJ_findObj('geofilter'),1);

	ceicQuery();
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  

  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; 
    n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; 
  document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3)
//      alert(a[i+2]);
    if ((x=MWJ_findObj(a[i]))!=null){
//	alert('found');
        document.MM_sr[j++]=x; 
        if(!x.oSrc) x.oSrc=x.src; x.src='/geofinder/images/' + a[i+2];
  }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src='/geofinder/images/' + a[i];}}
}

function divHighlight(div,checked) {

   if (checked) {
        div.style.border = "solid medium #CC6633";
        div.style.backgroundColor = "#FFFFFF";
        }
   else {
        div.style.border = "solid medium #CCCCCC";
        div.style.backgroundColor = "#FFFFFF";
        }
}


// function getStyleObject(string) -> returns style object
//  given a string containing the id of an object
//  the function returns the stylesheet of that object
//  or false if it can not find a stylesheet.  Handles
//  cross-browser compatibility issues.
//
function getStyleObject(objectId) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  //
  if(document.getElementById && document.getElementById(objectId)) {
return document.getElementById(objectId).style;
   }
   else if (document.all && document.all(objectId)) {  
return document.all(objectId).style;
   } 
   else if (document.layers && document.layers[objectId]) { 
return document.layers[objectId];
   } else {
return false;
   }
}

function changeObjectVisibility(objectId, newVisibility) {
    // first get a reference to the cross-browser style object 
    // and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
	styleObject.visibility = newVisibility;
	return true;
    } else {
	// we couldn't find the object, so we can't change its visibility
	    return false;
    }
}

function matchReq(e,matchType,term,mode,target)
        {
	   var url;

            if (term.length > 0) {
                // if there is at least on char in the input

	    if (matchType == 'title') {
             	__AjaxProcessFunction = __dsMatchObjFill;
             	url = "api/nameFill.php?src=" + matchType + "&mode=" + mode + "&name=" + escape(term) + "&resourcetype=" + listTypes();
		}
	    else if (matchType == 'org') {
             	__AjaxProcessFunction = __orgMatchObjFill;
             	url = "api/nameFill.php?src=org&mode=" + mode + "&name=" + escape(term);
		}
	    else if (matchType =='theme') {
             	__AjaxProcessFunction = __nameMatchObjFill;
             	url = "api/nameFill.php?src=theme&fmt=json&name=" + escape(term);
		}
	    else if (matchType =='place') {
             	__AjaxProcessFunction = __placeMatchObjFill;
             	url = "api/nameFill.php?name=" + escape(term);
		}
	    else if (matchType =='clip') {
             	__AjaxProcessFunction = __clipMatchObjFill;
//             	url = "api/nameFill.php?src=clip&fmt=json&name=" + escape(term);
             	url = "/cgi-bin/api/nameFillJson?src=clip&fmt=json&name=" + escape(term);
		}
	    else if (matchType =='thes') {
             	__AjaxProcessFunction = __thesMatchObjFill;
             	url = "api/thesaurus.php?src=theme&fmt=JSON&name=" + mode;
		}
	    else {
             	__AjaxProcessFunction = __nameMatchObjFill;

             	url = "api/objNameFill?mode=" + mode + "&name=" + escape(term);

		}

             changeObjectVisibility(target,"visible");
             document.getElementById(target).innerHTML = '<p><img src="http://casil.ucdavis.edu/ceic/images/loading.gif">';
              __AjaxGet(url);
            }
            else {
                // otherwise clear the search results
                document.getElementById(target).innerHTML = '<p><img src="http://casil.ucdavis.edu/ceic/images/loading.gif">';
            }
        }

function image_opt()
        {

            if (clip.indexOf("calwater") > -1) {
                __AjaxProcessFunction = __calwater_fill;
                document.getElementById('calwater_div').innerHTML = '<span class="blueLink">loading image...<\/span>';
                clear_div();
                changeObjectVisibility("map_div","hidden");
                changeObjectVisibility("calwater_div","visible");
                Url = "api/view_ws?clip=" + clip; 
            }
            else {
                __AjaxProcessFunction = __location_opt_fill;
                document.getElementById('location_opt_div').innerHTML = '<span class="blueLink">loading image...<\/span>';
                clear_div();
                changeObjectVisibility("map_div","visible");
                changeObjectVisibility("location_opt_div","visible");
                Url = "api/view_location?clip=" + clip;
            }
            __AjaxGet(Url);
        }

function base_view(md)
        {

            if (md) {mode = md}
            if (ext) {
                document.getElementById('location_opt_div').innerHTML = "<img src='api/spotshape?ext=" + ext + "&zoom=1&size=260&ptBuffer=" + ptBuffer + "&mode=" + mode + "'>";
            }
            else {
                document.getElementById('location_opt_div').innerHTML = "<img src='api/spotshape?clip=" + clip + "&zoom=1&size=260&ptBuffer=" + ptBuffer + "&mode=" + mode + "'>";
            }

         }

function overlay(layer)
        {

        bbox = gmap.getBounds();

	minx = bbox.getSouthWest().lat();
	miny = bbox.getSouthWest().lng();
	maxx = bbox.getNorthEast().lat();
	maxy = bbox.getNorthEast().lng();

	ext = miny + "," + maxy + "," + minx + "," + maxx;

//alert(ext);
        if (bbox) {
	        changeObjectVisibility("gfDiv","visible");
                document.getElementById('gfDiv').innerHTML = "<img src='api/spotshape?ext=" + ext + "&zoom=1&size=350&ptBuffer=" + ptBuffer + "&mode=" + mode + "'>";
            }
         }

function display_location()
        {
            __AjaxProcessFunction = __map_div_fill;
            document.getElementById('map_div').innerHTML = '<span class="blueLink">spoting...<\/span>';
            clear_div();
            changeObjectVisibility("map_div","visible");
            changeObjectVisibility("location_opt_div","visible");
            changeObjectVisibility("loc_div","visible");
            Url = "api/display_location?clip=" + clip;
            __AjaxGet(Url);
        }

function map_opt()
        {
            __AjaxProcessFunction = __location_opt_fill;
//            document.getElementById('hint').innerHTML = 'Click on an intersecting place to go to that region.';
            document.getElementById('location_opt_div').innerHTML = '<span class="blueLink">loading...<\/span>';
            clear_div();
            changeObjectVisibility("map_div","visible");
            changeObjectVisibility("location_opt_div","visible");
            changeObjectVisibility("image_tools_div","visible");
            Url = "api/view_location?clip=" + clip;
            __AjaxGet(Url);
        }

function ceicQueryGF(clip,type)
        {
          MWJ_findObj('gfQueryDiv').innerHTML = '';
	  var Url = '';
          changeObjectVisibility("gfQueryFrame","visible");
          MWJ_findObj('gfQueryDiv').innerHTML = '<p><img src="/ceic/images/loading.gif">';
	  if (type == 'related') {
             __AjaxProcessFunction = __relatedObjFillGF;
	     Url = "/cgi-bin/api/related?";
	     Url = Url + "clip=" + clip;
	  }
	  else {	  	
             __AjaxProcessFunction = __dsMatchObjFillGF;
	     Url = "/ceic/api/ceicQuerySpatial.php?";
	     Url = Url + "clip=" + clip + "&cat=" + type;
	  }
//alert(Url);
            __AjaxGet(Url);
        }

function OBJ_show(src,id,targetDiv)
        {
          MWJ_findObj(targetDiv).innerHTML = '';
	  var Url = '';
          __AjaxProcessFunction = __objInfoFill;
          changeObjectVisibility("objInfoFrame","visible");
          MWJ_findObj(targetDiv).innerHTML = '<p><img src="/ceic/images/loading.gif">';
//	  Url = "/ceic/api/objInfo.php?src=" + src + "&id=" + id;
	  Url = "/cgi-bin/api/objInfo?src=" + src + "&id=" + id;
//alert(Url);
            __AjaxGet(Url);
        }

function info_show()
        {
//          MWJ_findObj('infoDiv').innerHTML = info;
          changeObjectVisibility("infoFrame","visible");
        }

function link_show()
        {
//          MWJ_findObj('linkDiv').innerHTML = info;
          changeObjectVisibility("linkFrame","visible");
        }

function CNDDB_show(id,name)
        {
          MWJ_findObj('gfQueryDiv').innerHTML = '';
	  var Url = '';
          __AjaxProcessFunction = __cnddbQueryFill;
          changeObjectVisibility("gfQueryFrame","visible");
          MWJ_findObj('gfQueryDiv').innerHTML = '<p><img src="/ceic/images/loading.gif">';
	  Url = "/ceic/api/cnddbQuery.php?quadcode=" + id + "&quadname=" + name;
//alert(Url);
            __AjaxGet(Url);
        }

function DOQQ_show(id,name)
        {
          MWJ_findObj('gfQueryDiv').innerHTML = '';
	  var Url = '';
          __AjaxProcessFunction = __cnddbQueryFill;
          changeObjectVisibility("gfQueryFrame","visible");
          MWJ_findObj('gfQueryDiv').innerHTML = '<p><img src="/ceic/images/loading.gif">';
	  Url = "/ceic/api/doqq.php?cell=" + id + "&name=" + name;
//alert(Url);
            __AjaxGet(Url);
        }
function DRG_show(id,name)
        {
          MWJ_findObj('gfQueryDiv').innerHTML = '';
	  var Url = '';
          __AjaxProcessFunction = __cnddbQueryFill;
          changeObjectVisibility("gfQueryFrame","visible");
          MWJ_findObj('gfQueryDiv').innerHTML = '<p><img src="/ceic/images/loading.gif">';
	  Url = "/ceic/api/drg.php?cell=" + id + "&name=" + name;
//alert(Url);
            __AjaxGet(Url);
        }

function ceicQuery(type,name)
{

   var term = MWJ_findObj('term').value; 
   var org = MWJ_findObj('orgname').value;
   var topics = listTopics();
   var topicArray = topics.split(",");
   var types = listTypes();
   var typeArray = types.split(",");

   var Url = "/ceic/api/ceicQuerySpatial.php?";

   if (!(extFull)) {Url = Url + 'ext=' + ext + '&'}
   if ((topicArray.length > 0) && (topicArray.length < 9)) {Url = Url + 'topic=' + topics + '&'}
   if ((typeArray.length > 0) && (typeArray.length < 8)) {Url = Url + 'cat=' + types + '&'}
   if (term.length > 0) {Url = Url + 'term=' + term + '&'}
   if (org.length > 0) {Url = Url + 'org=' + org + '&'}

   clear_div();
   document.getElementById('matchListDiv').innerHTML = '';

   if ((topics.length > 0) && (types.length > 0)) { 
	__AjaxProcessFunction = __dsMatchObjFill;
	changeObjectVisibility("matchListDiv","visible");
	document.getElementById('matchListDiv').innerHTML = '<p><img src="/ceic/images/loading.gif">';

       __AjaxGet(Url)
   }
}

function related()
        {
            relatedObj = {};
            MWJ_findObj("placename").innerHTML = '';
            MWJ_findObj("bbox").innerHTML = '';
            MWJ_findObj('relatedList').innerHTML = '';
      
            __AjaxProcessFunction = __relatedObjFill;
            if (ext) {
                Url = "/ceic/api/related?ext=" + ext;
            }
            else {
                Url = "/ceic/api/related?name=" + clip;
            }
            __AjaxGet(Url);
        }

function shp2quads_opt(linkto)
        {
            __AjaxProcessFunction = __location_opt_fill;
//            document.getElementById('hint').innerHTML = 'Click on an intersecting place to go to that region.';
            document.getElementById('location_opt_div').innerHTML = '<span class="blueLink">intersecting quads for ' + lbl + '<\/span>';
            clear_div();
            changeObjectVisibility("map_div","visible");
            changeObjectVisibility("location_opt_div","visible");
            Url = "/ceic/api/quad_query?clip=" + clip + "&linkto=" + linkto;
            __AjaxGet(Url);
        }

function shp_intersect_opt(toShp)
         {
             document.getElementById('intersect_div').innerHTML = "<img src='api/showOutline?layer=" + toShp + "&minx=" + minx + "&miny=" + miny + "&maxx=" + maxx + "&maxy=" +  maxy + "' usemap='#shpMap'>";
            changeObjectVisibility("intersect_div","visible");
             cross_map_generate(toShp);
         }

function shp_intersect_optx(toShp)
        {
            __AjaxProcessFunction = __location_opt_fill;
//            document.getElementById('hint').innerHTML = 'Click on an intersecting place to go to that region.';
            document.getElementById('location_opt_div').innerHTML = '<span class="blueLink">intersecting ' + toShp + ' for ' + lbl + '<\/span>';
            clear_div();
            changeObjectVisibility("map_div","visible");
            changeObjectVisibility("location_opt_div","visible");
//          Url = "/ceic/api/shp_intersect_query?clip=" + clip + "&toShp=" + toShp + "&size=350";
            Url = "/ceic/api/showOutline?layer=" + toShp + "&minx=" + minx + "&miny=" + miny + "&maxx=" + maxx + "&maxy=" + maxy;
            __AjaxGet(Url);
        }
function cross_map_generate(toShp)
        {
            __AjaxProcessFunction = __cross_map_fill;
            document.getElementById('hint').innerHTML = 'Click on an intersecting place to go to that region.';
            Url = "/ceic/api/cross_map?clip=" + clip + "&toShp=" + toShp + "&ptBuffer=800&size=260";
            __AjaxGet(Url);
        }

function overview_opt()
        {
            clear_div();
            changeObjectVisibility("map_div","visible");
            document.getElementById('hint').innerHTML = 'Begin typing a place name and pause for name completion. Click on Match Sub Strings to match substrings within names.';
            changeObjectVisibility("overview_div","visible");
        }

function contacts_opt()
        {
            clear_div();
            changeObjectVisibility("map_div","visible");
//            document.getElementById('hint').innerHTML = 'Begin typing a place name and pause for name completion. Click on Match Sub Strings to match substrings within names.';
            changeObjectVisibility("contacts_div","visible");
        }

function listRelatedGF()
         {
             var fill;
             var list;
             var str;
	     var Ary;
             fill = '<div style="width:600px;border-style:none;overflow:auto;">';
             document.getElementById('gfQueryDiv').innerHTML = '';

             Ary = ['County','PopulatedPlaces','Watersheds','ZipCodes','OtherPlaces'];
             for (var i = 0; i < Ary.length; i++) {
		fill = fill + '<p>' + Ary[i] + ':&nbsp;';
                list = eval('relatedObj.' + Ary[i]);
		if (list) {
                var len = list.length;
                for (var n = 0; n < len; n++) {
                    fill = fill + '<a href="#" onClick="window.location = \'geofinder?clip='+ list[n].id + '\'">' + list[n].label + '<\/a>&nbsp;|&nbsp;';
		}
		fill = fill + '<br>';   
		}
             }
	     fill = fill + '</div>';
             document.getElementById('gfQueryDiv').innerHTML = fill;
         }

         function listDsMatchObj(targetDiv)
         {
             var Html;
             var list;
             var str;
	     var icon;

             MWJ_findObj(targetDiv).innerHTML = '';
             fill = '';
	     Html = '';
             list = eval('dsMatchObj.ResultSet.Result');
	     where = eval('dsMatchObj.ResultSet.Where');
             if (targetDiv == 'gfQueryDiv') {
          	MWJ_findObj('gfQueryTitle').innerHTML = '(' + where + ')';			
	     }
	     else {
		Html = '<br>' + where + '<br><br>';
	     }
             var len = list.length;
             for (var n = 0; n < len; n++) {
		 if (list[n].cat == 'project') {
			icon = "/ceic/images/file-make.png";
		 }
		 else if (list[n].cat == 'document') {
                        icon = "/ceic/images/docs.gif";
                 }
		 else if (list[n].cat == 'gis') {
                        icon = "/ceic/images/file-vectorgfx.png";
                 }
		 else if (list[n].cat == 'web') {
                        icon = "/ceic/images/file-html.png";
                 }
		 else if (list[n].cat == 'database') {
                        icon = "/ceic/images/file-cdtrack.png";
                 }
		 else if (list[n].cat == 'org') {
                        icon = "/ceic/images/group.gif";
                 }
		 else if (list[n].cat == 'place') {
                        icon = "/ceic/images/world.png";
                 }
		 else  {
                        icon = "/ceic/images/file-unknown.png";
                 }

		if (targetDiv == 'gfQueryDiv') {
 	  	 Html = Html + '<img src="' + icon + '">&nbsp;<a href="#" onClick="OBJ_show(\'' + list[n].cat + '\',\'' + list[n].id + '\',\'objInfoDiv\')">' + list[n].label + '</a><br>';
		}
		else {
// 	  	 Html = Html + '<img src="' + icon + '">&nbsp;<a href="#" onClick="TB_show(\'' + list[n].label + '\',\'api/objInfo.php?id=' + list[n].id  + '&amp;width=480&amp;height=440\')">' + list[n].label + '</a><br>';
 	  	 Html = Html + '<img src="' + icon + '">&nbsp;<a href="#" onClick="TB_show(\'' + list[n].label + '\',\'/cgi-bin/api/objInfo?id=' + list[n].id  + '&amp;width=480&amp;height=440\')">' + list[n].label + '</a><br>';
		}
             }
// alert(Html.substr(0,300));
	    if (Html == '') {
	       MWJ_findObj(targetDiv).innerHTML = 'No matching datasets';
		}
	    else {
	       MWJ_findObj(targetDiv).innerHTML = Html;
		}

         }
         function listPlaceNameMatch(targetDiv)
         {
             var Html;
             var list;

             document.getElementById('placeNameMatchDiv').innerHTML = '';
             list = eval('placeMatchObj.ResultSet.Result');
             var len = list.length;
	     Html = '';	
             for (var n = 0; n < len; n++) {
		if (targetDiv == 'gfQueryDiv') {
	  	 Html = Html + '<b><a href="#" onClick="window.location=\'geofinder?clip=' + list[n].id + ';">' + list[n].label + '</a><br>';
		}
		else {
	  	 Html = Html + '<b><a href="#" onClick="setClipFilter(\'' + list[n].id + '\',\'' + list[n].label + '\',\'' + list[n].lat + '\',\'' + list[n].lon + '\');">' + list[n].label + '</a><br>';
		}
             }
	    if (Html == '') {
	       MWJ_findObj("placeNameMatchDiv").innerHTML = 'No matching place names';
		}
	    else {
	       MWJ_findObj("placeNameMatchDiv").innerHTML = Html;
		}

         }

         function listClipNameMatch()
         {
             var Html;
             var list;

             document.getElementById('placeNameMatchDiv').innerHTML = '';
             list = eval('placeMatchObj.ResultSet.Result');
             var len = list.length;
	     Html = '';	
             for (var n = 0; n < len; n++) {
	  	 Html = Html + '<b><a href="geofinder?clip=' + list[n].id + '&lbl=' + list[n].label + '" class="blueLink">' + list[n].label + '</a><br>';
             }
	    if (Html == '') {
	       MWJ_findObj("placeNameMatchDiv").innerHTML = 'No matching place names';
		}
	    else {
	       MWJ_findObj("placeNameMatchDiv").innerHTML = Html;
		}

         }

function navigate(_clip,_ext) {
    if (_clip) { 
        clip = _clip;
        ext = '';
    }
    if (_ext) { 
        ext = _ext;
        clip = '';
    }

    show_place();
    base_view();
}

