/* 
 * SnoCountry Mountain Reports Ski Reports App
 * Author: Michael Martinez
 * Date: Fall 2005
 *  
 * Many thanks to script.aculo.us and prototype.conio.net 
 * which this is built on. 
 *  
 */
   var snoView = "snoReport";

   function makePOSTRequest(url, parameters,callback_function,getstr) {
      var http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
	       location.href = "http://usatoday.snocountry.com/mainUSATodayServer.php" + getstr + "&includeHeaders=true";
	    }
         }
      }
      if (!http_request) {
         //alert('Unfortunately your browser does not support this feature.');
	 //alert( "http://usatoday.snocountry.com/displayinfo.php" + getstr + "&includeHeaders=true");
	 location.href = "http://usatoday.snocountry.com/mainUSATodayServer.php" + getstr + "&includeHeaders=true";
         return false;
      }
     
    http_request.onreadystatechange = function() {
       if (http_request.readyState == 4) 
       {
           if (http_request.status == 200) 
	   {   eval(callback_function + '(http_request.responseText)'); } 
	   else 
	   {   alert('There was a problem with the request.(Code: ' + http_request.status + ')'); 
	   }
       }  // readystate == 4
   } // onreadystatechange 

      
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   } // makePOSTRequest

   function displaySnoReport(result) 
   {
	    //alert("SnoReport Result: "+ result);
	    document.getElementById('snoReport').innerHTML = result;            
            Element.hide('indicatorInside');
            new Effect.Appear('snoReport');
            snoView = 'snoReport';	    
   }
   
   function displayResortInfo(result) 
   {
	    //alert("ResortInfo Result:" + result);
	    document.getElementById('resortInfo').innerHTML = result;            
            Element.hide('indicatorInside');
            new Effect.Appear('resortInfo');
            snoView = 'resortInfo';	    
   }
   function getStateList(result)
   {
        //alert(result);
	var data = result.split("|");
        for (var i=0; i < data.length; i += 2)
        {   
           document.getElementById(data[i]).innerHTML = data[i+1];            
        }   
	Element.hide('indicatorInside');
   }
   function getSkiAreaList(result)
   {
        //alert("getSkiAreaList: " + result);
	var data = result.split("|");
	var otherView = "";
        for (var i=0; i < data.length; i += 2)
        {   
            if (data[i] == 'snoView')    
            {   document.getElementById(snoView).innerHTML = data[i+1];   
	        new Effect.Appear(snoView);
	    }
	    else
            {   document.getElementById(data[i]).innerHTML = data[i+1];   }
        }   
	Element.hide('indicatorInside');
   }
   function getDisplay(result)
   {
        //alert("getDisplay Result: " + result);
	Element.hide('indicatorInside');
        if (snoView == "")
        {
            Element.hide('resortInfo');
            document.getElementById('snoReport').innerHTML = result;
            new Effect.Appear('snoReport');
        }
        else
        {   
	    var otherView = "";
	    if (snoView == 'resortInfo') 
	    {  otherView = 'snoReport'; }
	    else
	    {  otherView= 'resortInfo'; }

            Element.hide(otherView);
            document.getElementById(snoView).innerHTML = result;
            new Effect.Appear(snoView);  
	}
/*
	var data = result.split("|");
	alert(data.length);
        for (var i=0; i < data.length; i += 2)
        {   document.getElementById(data[i]).innerHTML = data[i+1];   }   
	Element.hide('indicatorInside');
	//var element = $(data[i]);
	//if(!Element.visible(element))
	//if(element.style.display == 'none')
	*/
   }

   function updateUI(data)
   {
        for (var i=0; i < data.length; i += 2)
        {   document.getElementById(data[i]).innerHTML = data[i+1];   }   
   }

   function processUI(obj) {
      var poststr = ""; 
      var callback_function = "alert";
      var returnval = false;
      switch (obj)
      {
          case 'getStateList' : 
	      //alert("Value: " + document.nationSelection.elements['nation'].value);
              Element.show('indicatorInside');
              poststr = "nation=" + encodeURI( document.nationSelection.elements['nation'].value) + 
                        "&action=" + encodeURI('getStateList');
              callback_function= 'getStateList';
              break;
          case 'USA' : 
          case 'Canada' : 
          case 'Europe' : 
          case 'SouthernHemisphere' : 
              Element.show('indicatorInside');
              poststr = "nation=" + encodeURI( obj ) + 
                        "&action=" + encodeURI('getStateList');
              callback_function= 'getStateList';
              break;
          case 'getSkiAreaList' : 
              Element.show('indicatorInside');
	      //alert(obj + ":" + document.stateSelection.elements['state'].value);
              poststr = "state=" + encodeURI( document.stateSelection.elements['state'].value ) + 
                        "&action=" + encodeURI(obj);
              callback_function= 'getSkiAreaList';
              break;
          case 'getDisplay' : 
              Element.show('indicatorInside');
	      //alert(obj + ":" + document.skiareaSelection.elements['skiareas'].value);
              poststr = "permcode=" + encodeURI( document.skiareaSelection.elements['skiareas'].value ) + 
                        "&view=" + encodeURI(snoView) + 
                        "&action=" + encodeURI(obj);
              callback_function= 'getDisplay';
              break;

	  default : 
                    new Effect.Fade("resortInfo");
                    //new Effect.BlindUp("resortInfo");
                    Element.show('indicatorInside');
	            alert(obj);
                    Element.hide('indicatorInside');
                    new Effect.Appear('snoReport');
                    //new Effect.BlindDown('snoReport');
	            break;
      }

      makePOSTRequest('newMainUSATodayServer.php', poststr,callback_function);
      return returnval;

   } // processUI

   function processLinkUI(obj) {
      var poststr = ""; 
      var callback_function = "alert";
      var getstr = "";
      var returnval = false;
      var data = obj.split("=");  // resortinfo|603005  or snowreport|603005
      switch (data[0])
      {
          case 'snowreport' : 
              Element.show('indicatorInside');
              new Effect.Fade("resortInfo");
              poststr = "permcode=" + encodeURI( data[1] ) +
                        "&action=" + encodeURI('snowreport' );
              getstr = "?permcode=" +  data[1]  +
                        "&action=" + 'snowreport';
              callback_function= 'displaySnoReport';
              break;
          case 'resortinfo' : 
              Element.show('indicatorInside');
              new Effect.Fade("snoReport");
              poststr = "permcode=" + encodeURI( data[1] ) +
                        "&action=" + encodeURI('resortinfo' );
              getstr = "?permcode=" +  data[1] +
                        "&action=" + 'resortinfo' ;
              callback_function= 'displayResortInfo';
              break;
          case 'refreshStatePage' : 
              Element.show('indicatorInside');
	      //alert(obj + ":" + document.skiareaSelection.elements['skiareas'].value);
              poststr = "permcode=" + encodeURI( data[1] ) +
                        "&view=" + encodeURI(snoView) + 
                        "&action=" + encodeURI('getDisplay');
              getstr = "?permcode=" +  data[1] +
                        "&view=" + snoView + 
                        "&action=" + 'getDisplay';
              callback_function= 'getDisplay';
              break;
          case 'getXCListing' : 
              Element.show('indicatorInside');
	      //alert(obj + ":" + document.skiareaSelection.elements['skiareas'].value);
              poststr = "permcode=" + encodeURI( data[1] ) +
                        "&entrytype=" + encodeURI('XC') + 
                        "&action=" + encodeURI('getDisplay');
              getstr = "?permcode=" +  data[1] +
                        "&entrytype=" + 'XC' + 
                        "&action=" + 'getDisplay';
              callback_function= 'getDisplay';
              break;

	  default : 
	            alert("Link:" + obj);
	            break;
      }
   
      makePOSTRequest('newMainUSATodayServer.php', poststr,callback_function,getstr);
      return returnval;

   } // processLinkUI

   var ami_clueless = true;
