function Hotel(name,stars,price,hiprice,loprice,phone,address,city)
{
this.name=name;
this.stars=stars;
this.price=price;
this.hiprice=hiprice;
this.loprice=loprice;
this.phone=phone;
this.address=address;
this.city=city;
}

var request=null;
var kayak="http://www.kayak.com";
var sessionId = null;
var token="rvpu9FNaj_4bVGIzsGytYA";
//var token="Co0tYzVrW8smsTo$GNeAeQ";
var cityStateCountry=null;
var departureDate=null;
var returnDate=null;
var searchId=null;
var hotels =null;
var state=null;

function startRunning() {
	init();
 getSession();
}

function getState()  {
    return document.formInput.states.value;
  }

function getCity()   {
    return document.formInput.city.value;
  }
  
function getDepMonth() {
  	return document.formInput.depmonths.value;
  }
  
function getDepDay() {
  	return document.formInput.depday.value;
  }

function getDepYear() {
	return document.formInput.depyear.value;
}

function getRetMnth() {
	return document.formInput.returnmonths.value;
}

function getRetDay() {
	return document.formInput.returnday.value;
}

function getRetYear() {
	return document.formInput.returnyear.value;
}

function init() {
	var str=getCity()+","+getState()+",US";
	state = getState();
	var stri=getDepMonth()+"/"+getDepDay()+"/"+getDepYear();

	var strin=getRetMnth()+"/"+getRetDay()+"/"+getRetYear();

 
    cityStateCountry=encodeURIComponent(str);
	departureDate=encodeURIComponent(stri);
	returnDate=encodeURIComponent(strin);
	hotels=new Array();
	load();
	if (debug) 	
	alert("done init");
}

function getSession() {
	 createRequest();
	// var myUrl=kayak+"/k/ident/apisession?token="+token;
	var myUrl= "http://yipe.emich.edu/~ltabor/test.php?request_type=ident&token="+token;
	if (debug)
	alert(myUrl);
	 request.open("GET",myUrl,true);
	 request.onreadystatechange=sessionReceived;
	 request.send(null);
} 

function sessionReceived()  {
	 if (request.readystate == 4) {
	  if (request.status == 200)  {
	   var response = request.responseText;
	   if (debug)
	   alert("response " + response);
	   getSessionId(response);
	   startHotelSearch();
	  }
	 } 
} 

function attemptToFixSidebar() {
	 var myUrl= "sidebar.xml";
	if (debug)
	alert(myUrl);
	 request.open("GET",myUrl,true);
	 request.onreadystatechange=sidebarReceived;
	 request.send(null);
} 

function sidebarReceived(){
	if (debug) {
	alert(request.readyState);
	}
	if (request.readystate == 4) {
		if (debug) {
		alert(request.status);
		}  
	   var response = request.responseText;
	////   if (debug)
	//  alert(response);
	    addSidebar();
	    sidebarDiv.innerHTML = getSideBar();  
 } 
}

function attemptToFixMap() {
	 var myUrl= "sidebar.xml";
	if (debug)
	alert(myUrl);
	 request.open("GET",myUrl,true);
	 request.onreadystatechange=mapReceived;
	 request.send(null);
} 

function mapReceived(){
	if (debug) {
	alert(request.readyState);
	}
	if (request.readystate == 4) {
	if (debug) {
	alert(request.status);
	}  
   var response = request.responseText;
	////   if (debug)
	//  alert(response);
	    addMap();  
 } 
}

function getSessionId(sessionXml) {
	var parser = new DOMImplementation();
	var  gobjDatabaseDom = parser.loadXML(sessionXml);
  	var  gobjDatabaseDomTree = gobjDatabaseDom.getDocumentElement();

  	sessionId=gobjDatabaseDomTree.getElementsByTagName("sid").item(0).getFirstChild().getNodeValue();
     // docRef.txtFirstName.value = trim(user.getElementsByTagName("FIRSTNAME").item(0).getFirstChild().getNodeValue(),true, true);    
  }
  
function initSearchReceived(){
	if (request.readystate == 4) {
  		if (request.status == 200)  {
  		 var response = request.responseText;
  		 if (debug)
  		 alert(response);
   		//document.getElementById("city").value = response;
   		getResults(response);
 	 }
 	} 
}
//
function startHotelSearch() {
	//	var myUrl= kayak +"/s/apisearch?basicmode=true&othercity="
  	var myUrl = "http://yipe.emich.edu/~ltabor/test.php?request_type=apisearch&basicmode=true&othercity="
	+cityStateCountry
	+"&checkin_date="
	+departureDate
	+"&checkout_date="
	+returnDate
	+"&minstars=-1&guests1=1&guests2=1&rooms=1&action=dohotels&apimode=1&_sid_="
	+sessionId;
	//createRequest();
	request.open("GET",myUrl,true);
	if (debug)
	alert(myUrl);
	 request.onreadystatechange=initSearchReceived;
 	request.send(null);	
}

function getResults(sessionXml) {
	var parser = new DOMImplementation();
  	var  gobjDatabaseDom = parser.loadXML(sessionXml);
  	var  gobjDatabaseDomTree = gobjDatabaseDom.getDocumentElement();
  	searchId=gobjDatabaseDomTree.getElementsByTagName("searchid").item(0).getFirstChild().getNodeValue();

//	var myUrl= kayak 
//+"/s/apibasic/hotel?searchid="
	var myUrl = "http://yipe.emich.edu/~ltabor/test.php?searchid="
	+searchId
	+"&apimode=1&_sid_="
	+sessionId;
	if (debug)
	alert(myUrl);
//	   document.getElementById("textarea1").value = sessionXml;

	 request.open("GET",myUrl,true);
//alert ("after request");
	 request.send(null);
	 request.onreadystatechange=resultsReceived;
// alert ("after reradystate"); 
}

function resultsReceived() {
//	alert("not ready");
	if (request.readystate == 4) {
	  if (request.status == 200)  {
	   var response = request.responseText;
	   if (debug)
	  alert(response);
   
	   handleResults(response);
  }
 } 
}

function handleResults(resultXml) {
	var parser = new DOMImplementation();
  	var  gobjDatabaseDom = parser.loadXML(resultXml);
  	var  gobjDatabaseDomTree = gobjDatabaseDom.getDocumentElement();
// document.getElementById("city").value = resultXml;
  	var count=gobjDatabaseDomTree.getElementsByTagName("count").item(0).getFirstChild().getNodeValue();
  	var hotel=gobjDatabaseDomTree.getElementsByTagName("hotels").item(0).getFirstChild()
  	var i=0
   while (hotel != null) {
   		if (hotel !=null) {
   		hotels[i]=createHotel(hotel);
   		 i++;
   		}
   	hotel=hotel.getNextSibling();
   
    }
  var text="";
  for ( x=0; x < i; x++) {
  	 if (hotels[x]!= null &&hotels[x].name != null) {
  	 		text+=hotels[x].name;
  	 		showAddress(getAddress(hotels[x]),hotels[x]);
	 

  	 	}
  	 	else {
  	 		text+="Oh no! I'm null!";
  	 	}
  	text+= "\n";
 
  }
  
  //alert(" I is " + i );
 //document.getElementById("textarea1").value=getSideBar();
      // put the assembled side_bar_html contents into the side_bar div
       	
//      alert("sidebar won't draw without this alert")
      removeLoader();
      attemptToFixSidebar();
      attemptToFixMap();
      setTimeout(delay,1000);
  if (debug)    
   alert("Sidebar fixer");
//          document.getElementById("side_bar").innerHTML = getSideBar();
//         addSidebar();
//         sidebarDiv.innerHTML = getSideBar();
}

function getAddress (hotel) {
	return hotel.address + ", "+ hotel.city + ", "+ state;
}

function createHotel(hotelDom) {
//	var nameHotel=hotelDom.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
//	var addressHotel=hotelDom.getElementsByTagName("address").item(0).getFirstChild().getNodeValue();
//	var priceHotel=hotelDom.getElementsByTagName("price").item(0).getFirstChild().getNodeValue();
//	var priceloHotel=hotelDom.getElementsByTagName("pricehistorylo").item(0).getFirstChild().getNodeValue();
//	var pricehiHotel=hotelDom.getElementsByTagName("pricehistoryhi").item(0).getFirstChild().getNodeValue();
//	var phoneHotel=hotelDom.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue();
//	var starsHotel=hotelDom.getElementsByTagName("stars").item(0).getFirstChild().getNodeValue();
//	var cityHotel=hotelDom.getElementsByTagName("city").item(0).getFirstChild().getNodeValue();
var nameHotel=getXmlValue(hotelDom,"name");
var addressHotel=getXmlValue(hotelDom,"address");
var priceHotel=getXmlValue(hotelDom,"price");
var priceloHotel=getXmlValue(hotelDom,"pricehistorylo");
var pricehiHotel=getXmlValue(hotelDom,"pricehistoryhi");
var phoneHotel=getXmlValue(hotelDom,"phone");
var starsHotel=getXmlValue(hotelDom,"stars");
var cityHotel=getXmlValue(hotelDom,"city");
	
	var hotel=new Hotel(nameHotel,starsHotel,priceHotel,pricehiHotel,priceloHotel,phoneHotel,addressHotel,cityHotel);
	return hotel;
}
function getXmlValue(hotelDom, name) {
	var elem=null;
elem=hotelDom.getElementsByTagName(name);
    if (elem != null) {
	   elem=elem.item(0);
	      if (elem != null) {
	      elem = elem.getFirstChild();
	      }
	
     }
          if (elem != null) {
	        return elem.getNodeValue();
          }
          else {
          	return "";
          }
}
function createRequest()  {
    try {
      request = new XMLHttpRequest();
    } catch (trymicrosoft)   {
      try  {
        request = new ActiveXObject("Msxm12.XMLHTTP");
      } catch (othermicrosoft)  {
        try  {
         request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (failed)  {
          request = null;
        }
      }
     }

if (request == null)
  alert("Error creating request object!");
 }
 function delay() {
 	
}