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="SVqKU7og_yEgwtjpG5gs0A";
//var token="Co0tYzVrW8smsTo$GNeAeQ";
var cityStateCountry=null;
var departureDate=null;
var returnDate=null;
var searchId=null;
var hotels =null;
var state=null;
var details = false;






function startRunning() {
	init();
 getSession();
}

function getState()  {
    return document.formInput.states.value;
  }

  function getCity()   {
    return document.formInput.city.value;
  }
  
  function getDepDate() {
  	return document.formInput.date1.value;
  }
  

function getRetDate() {
	return document.formInput.date2.value;
}



function isDetails() {
     return document.formInput.details.checked	
}



function init() {
	var str=getCity()+","+getState()+",US";
	state = getState();
	var stri=getDepDate();

	var strin=getRetDate();
	 details = isDetails();
	 
	
	

 
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()  {
	
	var lrequest = request; 
	/*
	if(lrequest.readyState == 1) {
	  alert("It is 1");
	}
	if(lrequest.readyState == 4) {
		alert("it is 4");
	}	
	*/
	
	//if(debug) {
	 // alert("readystate = " + lrequest.readyState);
	        //+ " status = " + request.status); 
	//}
	//alert("Before ready");
 if(lrequest.readyState == 4) {
 	//alert("Before status");
  //if (request.status == 200)  {
  //alert("Before response");
   var response = lrequest.responseText;
   //alert("after response");
   if (debug)
   alert("response " + response);
   getSessionId(response);
   startHotelSearch();
  //}
 } 
 
 //
} 

function attemptToFixSidebar() {

 var myUrl= "sidebar.xml";
if (debug)
alert(myUrl + " attemptToFixSidebar");
 request.open("GET",myUrl,true);
 request.onreadystatechange=sidebarReceived;
 request.send(null);

} 

  
function sidebarReceived(){
	if (debug) {
alert("sideBarReceived.readyState " + request.readyState);
}
	if (request.readyState == 4) {
	if (debug) {
alert("status is " + request.status);
}

   var response = request.responseText;
////   if (debug)
//  alert(response);
//     sidebarDiv.innerHTML = getSideBar();
    addSidebar();
  
    
 /*  
    mapdiv.style.visibility = "hidden";
  addMap();
 
 
map = new GMap2(document.getElementById("map"));
//map = new GMap2(mapdiv);


 removeMap();
mapdiv.style.visibility = "visible";
*/    
    
removeLoader();

    
attemptToFixMap();
    //  setTimeout(delay,1000);
  //if (debug)    
   //alert("Sidebar fixer");
//          document.getElementById("side_bar").innerHTML = getSideBar();
//         addSidebar();
//         sidebarDiv.innerHTML = getSideBar();

  
 } 
}

function attemptToFixMap() {

 var myUrl= "sidebar.xml";
if (debug)
alert(myUrl + " attemptToFixMap");
 request.open("GET",myUrl,true);
 request.onreadystatechange=mapReceived;
 request.send(null);

} 

  
function mapReceived(){
	//if (debug) {
//alert("mapReceiced.readyState" + request.readyState);
//}
	if (request.readyState == 4) {
	if (debug) {
alert(request.status);
}
  
   var response = request.responseText;
////   if (debug)
//  alert(response);
//alert("Before show");
 
//alert("After show")
    addMap();
showAddresses(); 

  
 } 
}


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);
  }
 } 
}
var didit=false;
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) {
   			var hotelObj = createHotel(hotel);
   	hotels[i]= hotelObj;
   	 i++;
    }
   	hotel=hotel.getNextSibling();
   	
    //side_bar_html += '<a href="javascript:myclick(' + i + ')" onmouseover="mymouseover('+i+')" onmouseout="mymouseout()">' +  hotelObj.name + '</a><br>';
    sidebarDiv.appendChild(buildMySidebar(i, hotelObj));
//if (!didit) {
//	didit=true;
//sidebarDiv.appendChild(document.createTextNode ("Bob"));
//}
//    var table = document.createElement("table");
//    var row = document.createElement("tr");
//    var tbody = document.createElement("tbody");
//    var data1 = document.createElement("td");
//    data1.appendChild(document.createTextNode ("bob"));
//    row.appendChild(data1);
//    tbody.appendChild(row);
//    table.appendChild(tbody);
//    sidebarDiv.appendChild(table);
    }
    
    attemptToFixSidebar();
      
    /*
  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();
    //  setTimeout(delay,);
    //  attemptToFixSidebar();
      

         


}

//function buildMySidebar(listNumber, hotel) {
//	listNumber = listNumber - 1;
//	var sidebarItem = '<table border="0"><tr><td>'+ 
//	'<a href="javascript:myclick(' + listNumber + ')" onmouseover="mymouseover('+ listNumber+')" onmouseout="mymouseout()">'
//	 +  hotel.name + '</a><br>';
//	 + '</td></tr><tr>';
//	//<td><img src="http://yipe.emich.edu/~ltabor/key.png" height="40" width="40" alt="hotel pic"></td>';
//     
//         
//	
//	//	'<a href="javascript:myclick(' + listNumber + ')" onmouseover="mymouseover('+ listNumber+')" onmouseout="mymouseout()">' +  hotel.name + '</a><br>';
//	if (details == true) {
//		sidebarItem += '<td>' + 'Price: ' +hotel.price + '</td><td>'+ '     ' + 'Stars: '+ + hotel.stars + '</td></tr><tr>';
//         
//         
//    }
//     
//	
//    
//
//      sidebarItem += '<td>' + hotel.phone + '</td></tr></table><br>';	
//      return sidebarItem;
//}

	

function buildMySidebar(listNumber, hotel) {
	listNumber = listNumber - 1;
	var table = document.createElement("table");
	var tableBody = document.createElement("tbody");
  var row1 = document.createElement("tr");
  var row2 = document.createElement("tr");
  var data1 = document.createElement("td");
  var hotelLink = document.createElement("a");
//  hotelLink.href = 'javascript:myclick('" + listNumber + "') onmouseover="mymouseover('+ listNumber+')" onmouseout="mymouseout()"
  var hotelName = document.createTextNode(hotel.name);
  hotelLink.href = 'hi';
	var data2 = document.createElement("td");
	var phoneText = document.createTextNode(hotel.phone);
	var data3 = document.createElement("td");
	var data4 = document.createElement("td");
	var hotelPrice = document.createTextNode(hotel.price);
	var hotelStars = document.createTextNode(hotel.stars);
	
	hotelLink.appendChild(hotelName);	
	data2.appendChild(phoneText);
	data1.appendChild(hotelLink);
	data3.appendChild(hotelPrice);
	data4.appendChild(hotelStars);
	row1.appendChild(data1);
	tableBody.appendChild(row1);
	
if (details == true) {
	row1.appendChild(data3);
	row1.appendChild(data4);
	row2.appendChild(data2);
	tableBody.appendChild(row2);
}
else {
	row1.appendChild(data2);
}

	table.appendChild(tableBody);
	
//	alert(table.innerHTML);
	return table;

	//	'<a href="javascript:myclick(' + listNumber + ')" onmouseover="mymouseover('+ listNumber+')" onmouseout="mymouseout()">'
	// +  hotel.name + '</a><br>';
//	if (details == true) {
//		sidebarItem += '<td>' + 'Price: ' +hotel.price + '</td><td>'+ '     ' + 'Stars: '+ + hotel.stars + '</td></tr><tr>';
//         
//         
//    }
//     
//	
//    
//
//      sidebarItem += '<td>' + hotel.phone + '</td></tr></table><br>';	
//      return sidebarItem;
}



function showAddresses() {
  var text="";
  //alert("showAddresses");
  for ( x in hotels) {
  //alert("showAddresses " + 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";
 
  }
  
}
  

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() {
 	
}