/* &copy; Copyright TIFOR, Inc.; 2005-2007. Content and design by TIFOR, Inc. All Rights Reserverd
  revisions:
    6/25/2007 separated from index2.js
 */
 
var findDiv = null ;

function FindWinery(){
  if(requestingData)
    return ;
  hideInfoWindow() ;
  if(firstTime)
    ClearLoadMessage() ;
  if(findDiv == null){
    var input = document.createElement('input') ;
    input.type = 'text' ;
    input.size = 40 ;
    input.id = 'idlookup' ;
		input.onfocus = sInputInFocus ;
    input.onblur = inputOnBlur ;
    input.onchange = DoLookup  ;
    var hdr = document.createElement('h2') ;
    hdr.appendChild(document.createTextNode('Find a Winery or Festival')) ;
    var para = document.createElement('p') ;
    para.style.textAlign = 'center' ;
    para.appendChild(hdr) ;
    var sp = document.createElement('span') ;
    sp.style.fontSize = 'smaller' ;
    sp.appendChild(document.createTextNode('by a full or partial winery name '))
		para.appendChild(sp) ;
		para.appendChild(document.createElement('br'));
		para.appendChild(input) ;

		para.appendChild(document.createElement('br'));
		input = document.createElement('input') ;
		input.type = 'text' ;
		input.size = 40 ;
		input.id = 'idlookupByLoc' ;
		input.onfocus = sInputInFocus ;
		input.onblur = inputOnBlur ;
		input.onchange = DoLookup ;
		sp = document.createElement('span') ;
		sp.style.fontSize = 'smaller' ;
		sp.appendChild(document.createTextNode('or near a zip code, city state, or address'))
		//para.appendChild(document.createElement('br'));
		para.appendChild(sp) ;
		para.appendChild(document.createElement('br'));
		para.appendChild(input) ;
		//para.appendChild(document.createElement('br'));
		sp = document.createElement('span') ;
		sp.style.fontSize = '60%' ;
		sp.appendChild(document.createTextNode('(Zip Code),(Tulsa Ok), or (1600 Pennslyvania Ave, Washington, DC)'))
		para.appendChild(document.createElement('br'));
		para.appendChild(sp) ;
		para.appendChild(document.createElement('br'));

    // go button
    var go = document.createElement('input') ;
    go.type = 'submit' ;
 		go.value = 'Find' ;
    go.style.fontSize = 'smaller' ;
    go.onclick = new Function("evt", "DoLookup()") ;
    para.appendChild(go) ;
    var sel = document.createElement('select') ;
    sel.id ='idfindselect' ;
    sel.setAttribute('class', 'findselect') ;
    sel.appendChild(document.createElement('option')) ;    
    var innerDiv = document.createElement('div') ;
    innerDiv.id = 'idfindseldiv' ;
    innerDiv.style.textAlign = 'center' ;
    innerDiv.height = '300px' ;
    innerDiv.appendChild(sel) ;
    innerDiv.appendChild(document.createElement('br')) ;
    innerDiv.appendChild(document.createElement('br')) ;
    // goto button
    go = document.createElement('input') ;
   	go.type = 'submit' ;
   	go.value = 'Go To' ;
   	go.onclick = new Function("evt", "Selected()") ;
   	innerDiv.appendChild(go) ;
      
    findDiv = document.createElement("div");
    findDiv.setAttribute("id","findDiv");
    findDiv.style.border="1px #006699 solid";
    findDiv.style.backgroundColor="#ccccff";
    findDiv.style.width = '500px' ;
    //findDiv.style.textAlign = 'center' ;
    var clos = document.createElement('div') ;
    clos.style.fontSize = 'xx-small' ;
    clos.style.cssFloat = 'right' ;
    var x = document.createElement('button') ;
    x.onclick = CloseFind ;
    x.appendChild(document.createTextNode('x')) ;
    clos.appendChild(x) ;
    findDiv.appendChild(clos) ;
    
    findDiv.appendChild(para) ;
    findDiv.appendChild(innerDiv) ;
    findDiv.appendChild(document.createElement('br')) ;
      // move it to the main div
    objById("map").appendChild(findDiv);
		var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(10, 10)) ;
		pos.apply(objById("findDiv")) ;
  } 
  findDiv.style.visibility = 'visible' ;
  objById('idfindseldiv').style.visibility = 'hidden' ;
  objById('idlookup').focus() ;
}

function CloseFind(){
  findDiv.style.visibility = 'hidden' ;
  objById('idfindseldiv').style.visibility = 'hidden' ;
}

function Selected(){
  var obj = objById('idfindselect') ;
  if (!obj.options.selectedIndex)
    return ;
  objById('idfindseldiv').style.visibility = 'hidden' ;
  findDiv.style.visibility = 'hidden' ;
  
  var ret = findIdInMarkers(obj.options[obj.options.selectedIndex].value) ;
  if(ret !=  -1){
    myClick(ret) ; 
  } else {
    var txt = obj.options[obj.options.selectedIndex].text.split(' ') ;
    lockey = obj.options[obj.options.selectedIndex].value ;
    state = txt[txt.length -1] ;
    requestingData = true ;
    requestData() ;
  }
}

function findIdInMarkers(id){
  for(var i = 0 ; i < gMarkers.length ; i++){
    if(gMarkers[i].my_id == id) {
      return i ;
    }
  }
  return -1 ;
}

function DoLookup(e){
	if(this.id == 'idlookup'){
  	if(this.value == '' && objById('idfindselect').options.selectedIndex){
    	Selected() ;
    	return ;
  	}
  	if(this.value == '')
    	return ;
  	objById('idfindseldiv').style.visibility = 'hidden' ;
	  var http = 'findWinery.php?data='  ;
	  var look =  this.value.replace(/&/g, '%26') ; 
	  http += look.replace(/"/g, "'") ;
	  if(msie){
	      var d = new Date()
	      http += '&msie=' + d.getTime() ;
	    }
	  doRequest(http) ;
	}
	if(this.id == 'idlookupByLoc'){
		if(this.value == '')
    	return ;
    loadingMessage(true) ;
		streetAddr(this.value, null) ;
	}
}

function doOurLocation(g){
	// check here for within the usa
	if(g.lat() > 64 || g.lat() < 18 || g.lng < -159 || g.lng() > -65){
		alert('United States only!') ;
		return ;
	}
	loadingMessage(true) ;
	findDiv.style.visibility = 'hidden' ;
	cenLat = parseFloat(g.lat()) ;
  cenLon = parseFloat(g.lng()) ;
  zoom = 8 ;
  lockey = -1 ;
  state = '' ; 
  requestingData = true ;
  requestData() ;
}

function doRequest(http){
  var request = null ;
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
  }
  request.open('GET', http, true) ;
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      if (request.status != 200) {
        alert('file not found');
        return;
      }
      var xmlDoc = request.responseXML;
      if (!xmlDoc && xmlDoc != null) {
        alert('invalid xmlDoc');
      } else {
        var xmlData = xmlDoc.documentElement.getElementsByTagName('error') ;
        if(xmlData.length > 0) {
          alert(unescape(xmlData[0].getAttribute('msg'))) ;
          objById('idlookup').focus() ;
        } else  {
             // response to lookup
          xmlData = xmlDoc.documentElement.getElementsByTagName('selection') ;
          if(xmlData.length > 0){
            var obj = objById('idfindselect') ;
            var i = obj.options.length ;
            for ( i-- ; i >= 0 ; i--)
              obj.options[i] = null ;
            for (var xml = 0 ; xml  < xmlData.length ; xml ++) {
              if(!xml)
                obj.options[xml] = new Option('-- select a winery then press Go To button--', 0) ;
              var name = unescape(xmlData[xml].getAttribute('name')) ;
              name += ', ' + xmlData[xml].getAttribute('state') ;
              obj.options[xml + 1] = new Option(name, xmlData[xml].getAttribute('num')) ;
            }
            //obj.focus() ;
            obj.options.selectedIndex = 0 ;
            if (obj.options.length < 15)
              obj.size = obj.options.length ;
            else
              obj.size = 15 ;
            objById('idlookup').value = '' ;
            objById('idfindseldiv').style.visibility = 'visible' ;
          }
          xmlData = xmlDoc.documentElement.getElementsByTagName('error') ;
          if(xmlData.length > 0) {
            alert(unescape(xmlData[0].getAttribute('msg'))) ;
            objById('idlookup').focus() ;
          }
        }
      }
    } // end state
  } ;
  request.send(null) ;
}

function sInputInFocus(e){
	if(this.id == 'idlookup')
		objById('idlookupByLoc').value = '' ;
	else
		objById('idlookup').value = '' ;
	this.style.backgroundColor='aqua' ; 
	this.select() ;
}


