
//HttpRequest Objects
function send_request(){
	this.request.send(this.params);	
}

function httpGet( page, ready_state_change ){
	this.request = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	 try {
	  this.request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
	  try {
	   this.request = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (E) {
	   this.request = false;
	  }
	 }
	@end @*/
	if (!this.request && typeof XMLHttpRequest!='undefined') {
		try {
			this.request = new XMLHttpRequest();
		} catch (e) {
			this.request=false;
		}
	}
	if (!this.request && window.createRequest) {
		try {
			this.request = window.createRequest();
		} catch (e) {
			this.request=false;
		}
	}
	this.request.open("GET", page ,true);
	this.request.onreadystatechange = ready_state_change;
	this.params = null;
	this.send = send_request;
}



//Global Configuration Variables

var animation_resolution = 40;




//Global Variables
var current_frame = 0;
var end_frame = 0;
var animation_speed = 1000 / animation_resolution;

var keyframe = new Array();
var tracker = new Array();

var pause=false;
var animating=false;


var menu_list = new Array();
  menu_list[0] = 'left_navigation_tennis_camps_menu';
  menu_list[1] = 'left_navigation_lacrosse_camps_menu';
  menu_list[2] = 'left_navigation_girls_basketball_camps_menu';
  menu_list[3] = 'left_navigation_all_sports_camps_menu';
  menu_list[4] = 'left_navigation_more_information_menu';
var opened_menu = "";



// a tracker tracks a div for animation.

function remove_tracker( div ){
  if ( typeof( tracker[div] ) != "undefined" ) {
    delete tracker[div];
    for ( frame in keyframe ){
      if ( typeof( keyframe[frame].div ) != "undefined" ){
        if ( typeof( keyframe[frame].div[div] ) != "undefined" ){
          delete keyframe[frame].div[div];
        }
      }
    }
  }
}

function create_tracker( div ){
  
  if ( typeof( tracker[div] ) == "undefined" ){
    var d = document.getElementById(div);
    if ( typeof( d != "undefined" ) ){
      var l = d.style.left;
      var t = d.style.top;
      var w = d.clientWidth;
      var h = d.clientHeight;
      
      
      if ( typeof( d.style.opacity ) != "undefined" ){
        var o = d.style.opacity;
      } else {
        var o = 1;
      }
      
      tracker[div] = new Object();
      tracker[div].div = d;
      tracker[div].attribute = new Array();

      tracker[div].attribute['v_left'] = 0;
      tracker[div].attribute['v_top'] = 0;
      tracker[div].attribute['v_width'] = 0;
      tracker[div].attribute['v_height'] = 0;

      tracker[div].attribute['left'] = (l.length > 0) ? parseInt(l) : 0;
      tracker[div].attribute['top'] = (t.length > 0) ? parseInt(t) : 0 ;
      tracker[div].attribute['width'] = w;
      tracker[div].attribute['height'] = h;
      tracker[div].attribute['opacity'] = (o.length > 0) ? parseInt(o) : 0;

      
      
    }
  }
}


function set_document_in_wait_mode(){
  var wait = document.getElementById("wait");
  
  wait.style.width = document.body.clientWidth + "px";
  wait.style.height = document.getElementById("container").clientHeight + "px";
  wait.style.display = "block";
}

function unset_document_in_wait_mode(){
  var wait = document.getElementById("wait");
  wait.style.display="none";
}

function animate(){
  animating = true;
  
  
  
  while ( pause == true );
  //make the changes if we've hit a keyframe
  if ( typeof( keyframe[current_frame]) != "undefined" ){
    for ( div in keyframe[current_frame].div ){
      create_tracker(div);
      if ( typeof(tracker[div]) != "undefined"){
        for (attribute in keyframe[current_frame].div[div].attribute){
          switch ( attribute ){
            case "remove":
              remove_tracker(div);
            break;
            case "function":
              keyframe[current_frame].div[div].attribute[attribute]();
            break;
            case "display":
              document.getElementById( div ).style.display = keyframe[current_frame].div[div].attribute[attribute];
            break;
            default:
              if ( typeof( tracker[div] ) !="undefined" ){
                if ( typeof( tracker[div].attribute ) != "undefined" ){
                  tracker[div].attribute[attribute] = keyframe[current_frame].div[div].attribute[attribute];
                }
              }
            break;
          }
        }
      }
    }
  }
  
  for( div in tracker ){
    if ( typeof(tracker[div].attribute) != "undefined" ){
      if ( tracker[div].attribute['v_left'] != 0 ){
        tracker[div].attribute['left'] += tracker[div].attribute['v_left'];
      }
      if ( tracker[div].attribute['v_top'] != 0 ){        
        tracker[div].attribute['top'] += tracker[div].attribute['v_top'];
      }
      
      if ( tracker[div].attribute['v_width'] != 0 ){
        tracker[div].attribute['width'] += tracker[div].attribute['v_width'];
      }
  
      if ( tracker[div].attribute['v_height'] != 0 ){
        tracker[div].attribute['height'] += tracker[div].attribute['v_height'];
      }
  
      if ( tracker[div].attribute['v_opacity'] != 0 ){
        tracker[div].attribute['opacity'] += tracker[div].attribute['v_opacity'];
      }
      

      tracker[div].div.style.top = tracker[div].attribute['top'] + "px";
      tracker[div].div.style.opacity = tracker[div].attribute['opacity'];
      tracker[div].div.style.height = tracker[div].attribute['height'] + "px";
      
      tracker[div].div.style.width = tracker[div].attribute['width'] + "px";
      tracker[div].div.style.left = tracker[div].attribute['left'] + "px";
    }
  }
  //re-iterate the animation if we're not at the end
  
  if ( current_frame <= end_frame ){
    current_frame++;
    setTimeout( animate, animation_speed );
  } else {
  
    //The animation has stopped because the current frame has gone past the end frame.
    //reset the keyframes, tracker
    keyframe = new Array();
    tracker = new Array();
    current_frame = 0;
    end_frame = 0;
    unset_document_in_wait_mode();
  }
}

function seconds( s ){
  return Math.round(s * animation_resolution);
}
function seconds_from_now( s ){
  return current_frame + seconds(s);
}


function insert_keyframe_attribute( frame, div, attribute, value  ){
  if ( typeof( keyframe[frame] ) == "undefined" ){
    keyframe[frame] = new Object();
    keyframe[frame].div = new Array();
  }


  if ( typeof( keyframe[frame].div[div] ) == "undefined" ) {
    keyframe[frame].div[div] = new Object();
    keyframe[frame].div[div].attribute = new Array();
  }
  
  keyframe[frame].div[div].attribute[attribute] = value;

  if ( end_frame-1 < frame ){
    end_frame = frame+1;
    if ( current_frame == 0 ){
      set_document_in_wait_mode();
      setTimeout(animate,5);
    }
  }
}


function tween( div, attribute, start_frame, end_frame, start_value, end_value ){
  v_attribute = "v_" + attribute;
  
  insert_keyframe_attribute( start_frame, div, attribute, start_value );
  insert_keyframe_attribute( start_frame, div, v_attribute, (end_value-start_value) / (end_frame-start_frame) );
  insert_keyframe_attribute( end_frame, div, attribute, end_value );
  insert_keyframe_attribute( end_frame, div, v_attribute, 0 );
}



function close_menus(){
  for ( i in menu_list ){
    if ( typeof(menu_list[i]) == "string" ){
      if ( menu_list[i] != opened_menu ){
        var slider_height = parseInt(document.getElementById(menu_list[i] + "_slider").style.height);
        
        if ( slider_height > 1 ){
          
          tween( menu_list[i] + "_slider", "height", seconds_from_now(0), seconds_from_now(0.25), slider_height, 1 );
          insert_keyframe_attribute( seconds_from_now(0.25)+2, menu_list[i] + "_slider","remove",true);
        }
      }
    }
  }
}

function open_menu(divname){
    var div = document.getElementById(divname);
    var slider = document.getElementById(divname + "_slider");
      opened_menu = divname;
      pause = true;
      close_menus();
      tween( divname + "_slider", "height", seconds_from_now(0.25)+2, seconds_from_now(1.25), 1, div.clientHeight );
      insert_keyframe_attribute( seconds_from_now(1.25)+2, divname + "_slider","remove",true);
      
      pause = false;    
}

function animate_queued_content(){
  pause = true;

  document.getElementById("content").innerHTML = document.getElementById("content_queue").innerHTML;
  document.getElementById("content_slider").scrollTop = 0;


  var content_height = document.getElementById("content").clientHeight + 48;
  
  
  resize();
  tween( "content_slider", "height", seconds_from_now(0)+2, seconds_from_now(1), 1,content_height);
  //tween( "content", "left", seconds_from_now(0)+2,seconds_from_now(1),-content_width,0);
  pause = false;
}

var page_request = false;
function page_request_onreadystatechange(){
  if ( page_request != false ){
    if ( page_request.request.readyState == 4){
      document.getElementById("content_queue").innerHTML = page_request.request.responseText;
      document.getElementById("content_slider").style.overflow="hidden";
      
      var content_height = document.getElementById("content").clientHeight + 48;
      pause = true;
      
      
      remove_tracker("content_slider");
      remove_tracker("content");
      tween( "content_slider","height", seconds_from_now(0),seconds_from_now(1), content_height, 0 );
      //tween( "content","left", seconds_from_now(0),seconds_from_now(1), 0, content_width );
      insert_keyframe_attribute( seconds_from_now(1)+2, "content_slider", "function", animate_queued_content );
  
      pause = false;
      page_request = false;
    }
  }
}

function pop_request_onreadystatechange(){
  if ( page_request != false ){
    if ( page_request.request.readyState == 4){
        document.getElementById("content").innerHTML = page_request.request.responseText;
        page_request = false;
    }
  }
}

function browse_to( page ){

    close_top_menus();
    
    page_request = new httpGet("content/" + page, page_request_onreadystatechange );
    page_request.send();
    
}

function pop_to( page){
    close_top_menus();
     
    page_request = new httpGet("content/" + page, pop_request_onreadystatechange );
    page_request.send();
  
}


function close_top_menus(){
    document.getElementById("our_camps_drop_down").style.display="none";
    document.getElementById("more_info_drop_down").style.display = "none";
}

function open_top_menu( m ){

  var n = m + "_drop_down";
  var d = document.getElementById(n);
  remove_tracker(n);

  if ( d.style.display == "block" ){
    d.style.display = "none";
  } else {
    close_top_menus();

    d.style.display = "block";
  }

}


function resize(){
/*
  var c = document.body;
  var content_width = (c.clientWidth - 402);
  
  document.getElementById("content_slider").style.width = content_width + "px";
  //document.getElementById("content").style.width = content_width + "px";
  
  if (c.clientWidth < 768 ){
    c.style.width="768px";
  } else {
    if ( c.clientWidth > 1024 ){
      c.style.width = "1024px";
    } else {
    }
  }
*/
}

function navigate_to( href ){
  window.location = href;
}

function main(){
  pause = true;
  
  //Left Navigation

  document.getElementById("left_navigation_register_button").onclick = function(){
    navigate_to("http://www.regonline.com/Checkin.asp?EventId=688441");

  }
  document.getElementById("left_navigation_request_button").onclick = function(){
    pop_to("brochure.html");
  }

  //tennis camps menu
  document.getElementById("left_navigation_tennis_camps_button").onclick = function(){
      open_menu("left_navigation_tennis_camps_menu");
      browse_to("tennis_camps.html");
  }
  document.getElementById("left_navigation_tennis_wooster_button").onclick = function(){
      browse_to("tennis_wooster.html");
  }
  document.getElementById("left_navigation_tennis_miam_button").onclick = function(){
      browse_to("tennis_miami.html");
  }
  document.getElementById("left_navigation_tennis_colgate_button").onclick = function(){
      browse_to("tennis_colgate.html");
  }
  document.getElementById("left_navigation_tennis_cwru_button").onclick = function(){
      browse_to("tennis_case.html");
  }
  document.getElementById("left_navigation_tennis_oh_wellington_button").onclick = function(){
      browse_to("tennis_wellington.html");
  }
  document.getElementById("left_navigation_tennis_oh_capital_button").onclick = function(){
      browse_to("tennis_capital.html");
  }
  //lacrosse camps menu
  document.getElementById("left_navigation_lacrosse_camps_button").onclick = function(){
      open_menu("left_navigation_lacrosse_camps_menu");
      browse_to("lacrosse_camps.html");  
  }
  document.getElementById("left_navigation_lacrosse_wooster_boys_button").onclick = function(){
      browse_to("lacrosse_wooster_boys.html");
  }
  document.getElementById("left_navigation_lacrosse_wooster_girls_button").onclick = function(){
      browse_to("lacrosse_wooster_girls.html");
  }
  document.getElementById("left_navigation_lacrosse_tba_button").onclick = function(){
      browse_to("lacrosse_camps.html");
  }
  //girls basketball menu
  document.getElementById("left_navigation_girls_basketball_camps_button").onclick = function(){
      open_menu("left_navigation_girls_basketball_camps_menu");
      browse_to("girls_basketball.html");
  }
  document.getElementById("left_navigation_girls_basketball_wooster_button").onclick = function(){
      browse_to("girls_basketball_wooster.html");
  }
  //all-sports menu
  document.getElementById("left_navigation_all_sports_camps_button").onclick = function(){
      open_menu("left_navigation_all_sports_camps_menu");
      browse_to("all_sports.html");
  }
  
  document.getElementById("left_navigation_all_sports_wellington_button").onclick = function(){
      browse_to("all_sports_info.html");  
  }
  


  //More Information
  document.getElementById("left_navigation_more_information_button").onclick = function(){
    open_menu("left_navigation_more_information_menu");
  }
  document.getElementById("left_navigation_more_information_registered_campers_button").onclick = function(){
    browse_to("registered_campers.html");
  }
  document.getElementById("left_navigation_more_information_dates_button").onclick = function(){
    browse_to("camp_dates.html");
  }
  document.getElementById("left_navigation_more_information_camp_forms_button").onclick = function(){
    browse_to("camps_forms.html");
  }
  document.getElementById("left_navigation_more_information_faq_button").onclick = function(){
    browse_to("camps_faqs.html");
  }
  document.getElementById("left_navigation_more_information_maps_button").onclick = function(){
    browse_to("camps_maps.html");
  }
  document.getElementById("left_navigation_more_information_testimonials_button").onclick = function(){
    browse_to("camp_testimonials.html");
  }
  document.getElementById("left_navigation_more_information_policies_button").onclick = function(){
    browse_to("camp_policies.html");
  }
  document.getElementById("left_navigation_more_information_partners_button").onclick = function(){
    browse_to("camp_partners.html");
  }

  
  document.getElementById("left_navigation_site_map_button").onclick = function(){
    browse_to("site_map.html");
  }

  document.getElementById("left_navigation_contact_button").onclick = function(){
    browse_to("contact_us.html");
  }

  document.getElementById("left_navigation_store_button").onclick = function(){
    browse_to("store.html");
  }

if(document.getElementById("right_navigation_store_button2")!=null){
  document.getElementById("right_navigation_store_button2").onclick = function(){
    browse_to("store2.html");
  }
}



  
  //Top Menu Navigation
  document.getElementById("home_top_menu").onclick = function(){
    close_top_menus();
    browse_to("index.html");
  }
  
  //Camps Sub Menus
  document.getElementById("our_camps_top_menu").onmouseover = function(){
    open_top_menu("our_camps");
  }
  document.getElementById("our_camps_top_menu_tennis_button").onclick = function(){
    close_top_menus();
    browse_to("tennis_camps.html");
    close_menus();
    open_menu('left_navigation_tennis_camps_menu');
  }
  document.getElementById("our_camps_top_menu_lacrosse_button").onclick = function(){
    close_top_menus();
    browse_to("lacrosse_camps.html");
    close_menus();
    open_menu('left_navigation_lacrosse_camps_menu');
  }
  document.getElementById("our_camps_top_menu_girls_basketball_button").onclick = function(){
    close_top_menus();
    browse_to("girls_basketball.html");
    close_menus();
    open_menu('left_navigation_girls_basketball_camps_menu');
  }
  document.getElementById("our_camps_top_menu_all_sports_button").onclick = function(){
    close_top_menus();
    browse_to("all_sports.html");
    close_menus();
    open_menu('left_navigation_all_sports_camps_menu');
    
  }
  //More Info Sub Menus
  document.getElementById("more_info_top_menu").onmouseover = function(){
    open_top_menu("more_info");
  }
  document.getElementById("more_info_top_menu_registered_campers_button").onclick = function(){
    close_top_menus();
    browse_to("registered_campers.html");
  }
  document.getElementById("more_info_top_menu_dates_button").onclick = function(){
    close_top_menus();
    browse_to("camp_dates.html");
  }
  document.getElementById("more_info_top_menu_camp_forms_button").onclick = function(){
    close_top_menus();
    browse_to("camps_forms.html");
  }
  document.getElementById("more_info_top_menu_faq_button").onclick = function(){
    close_top_menus();
    browse_to("camps_faqs.html");
  }
  document.getElementById("more_info_top_menu_maps_button").onclick = function(){
    close_top_menus();
    browse_to("camps_maps.html");
  }
  document.getElementById("more_info_top_menu_testimonials_button").onclick = function(){
    close_top_menus();
    browse_to("camp_testimonials.html");
  }
  document.getElementById("more_info_top_menu_policies_button").onclick = function(){
    close_top_menus();
    browse_to("camp_policies.html");
  }
  document.getElementById("more_info_top_menu_partners_button").onclick = function(){
    close_top_menus();
    browse_to("camp_partners.html");
  }
  document.getElementById("more_info_top_menu_store_button").onclick = function(){
    close_top_menus();
    browse_to("store.html");
  }
  document.getElementById("contact_us_top_menu").onclick = function(){
    close_top_menus();
    browse_to("contact_us.html");
  }
  document.getElementById("site_map_top_menu").onclick = function(){
    close_top_menus();
    browse_to("site_map.html");
  }
  
  
  //Latest Actions Navigation
  document.getElementById("latest_action_results_button").onclick = function(){
    browse_to("results.html");
  }
  document.getElementById("latest_action_photos_button").onclick = function(){
    browse_to("photos.html");
  }
  document.getElementById("latest_action_boards_button").onclick = function(){
    browse_to("board.html");
  }
  document.getElementById("latest_action_blog_button").onclick = function(){
    navigate_to("http://www.sportcamp101.com/blog");
  }
  


  //Right Navigation
  document.getElementById("right_navigation_register").onclick = function(){
    navigate_to("http://www.regonline.com/Checkin.asp?EventId=688441");
  }
  document.getElementById("right_navigation_brochure").onclick = function(){
    pop_to("brochure.html");
  }
  
  document.getElementById("right_navigation_dates").onclick = function(){
    browse_to("camp_dates.html");
  }
  
  document.getElementById("right_navigation_registered_campers").onclick = function(){
    browse_to("registered_campers.html");
  }
  
  //Footer Navigation
  document.getElementById("footer_home_button").onclick = function(){
    browse_to("index.html");
  }
  document.getElementById("footer_contact_button").onclick = function(){
    browse_to("contact_us.html");
  }
  document.getElementById("footer_sitemap_button").onclick = function(){
    browse_to("site_map.html");
  }
  document.getElementById("footer_privacy_button").onclick = function(){
  }


  //boxes on the right
  /*
  document.getElementById("camp_dates_box_button").onclick = function(){
    browse_to("camp_dates.html");
  }
  document.getElementById("camp_dates_box_button2").onclick = function(){
    browse_to("camp_dates.html");
  }*/
  
  /*
  document.getElementById("registered_campers_box_button").onclick = function(){
    browse_to("registered_campers.html");
  }
  document.getElementById("registered_campers_box_button2").onclick = function(){
    browse_to("registered_campers.html");
  }
  */
  // Open the index page and let animations begin.
  browse_to(document.getElementById("default_page").innerHTML);

  pause = false;
  resize();
}


window.onload=main;
window.onresize=resize;