// Javascript Document
// General Functions

function loadScripts(){
	
	initBehaviours();	// behaviours.js
	
}


function initBehaviours(){
	// Get Browser
	// Hide AJAX stuff from IE on Mac
	var platform = navigator.platform.toLowerCase();
	var version = navigator.appVersion.toLowerCase();
	
	var is_ie = version.indexOf('msie 5');
	var is_mac = platform.indexOf('mac');
	
	if( is_ie != -1 && is_mac != -1 ){
		var is_ie_mac = true;
	}else{
		var is_ie_mac = false;
	}
	
	// Sets the footer arrows to scroll
	if( (window.XMLHttpRequest || window.ActiveXObject) && is_ie_mac==false ){
		// Protects against browsers that do not support xmlhttprequest and IE on Mac
		document.getElementById('footerarrows_l').href='javascript:switchStats(false);';
		document.getElementById('footerarrows_r').href='javascript:switchStats(true);';
	}
	
	// Search TextBox functions
	var searchBox = document.getElementById('search_txt');
	searchBox.onfocus = function(){ focusField('search_txt', 'blackInput', 'Search'); }
	searchBox.onblur = function(){ blurField('search_txt', 'greyInput', 'Search'); }
	
	// Username TextBox functions
	var userBox = document.getElementById('username_txt');
	userBox.onfocus = function(){ focusField('username_txt', 'blackInput', 'Username'); }
	userBox.onblur = function(){ blurField('username_txt', 'greyInput', 'Username'); }
	
	// Password TextBox functions
	var passBox = document.getElementById('password_txt');
	passBox.onfocus = function(){ focusField('password_txt', 'blackInput', 'Password'); }
	passBox.onblur = function(){ blurField('password_txt', 'greyInput', 'Password'); }
}


function focusField(thisField, thisClass, thisValue){
	var field = document.getElementById(thisField);
	field.className = thisClass;
	if( field.value == thisValue ){
		field.value = '';	
	}
}


function blurField(thisField, thisClass, thisValue){
	var field = document.getElementById(thisField);
	if( field.value == '' ){
		field.className = thisClass;
		field.value = thisValue;	
	}
}


function liquid(thisType){
	if(thisType){
		document.getElementById('wrapper').style.width = '';
		document.getElementById('wrapper').style.margin = '0 10px';
	}else{
		document.getElementById('wrapper').style.width = '765px';
		document.getElementById('wrapper').style.margin = '0 auto';
	}
}


function showPlaces(thisDirection){
	var targetDiv = document.getElementById('all_places');
	switch (thisDirection){
		case true:
			document.getElementById('all_places').style.display = 'block';
			document.getElementById('all_places').style.height = 'auto';
			document.getElementById('show_places').style.display = 'none';
			document.getElementById('hide_places').style.display = 'block';
			break;
		case false:
			document.getElementById('all_places').style.display = 'none';
			document.getElementById('all_places').style.height = 'auto';
			document.getElementById('hide_places').style.display = 'none';
			document.getElementById('show_places').style.display = 'block';
			break;
	}
}


// Start footer functions

var errorMessage = '<p>There was an error retrieving a new statistic.</p>';

function switchStats(thisDirection){
	var left = document.getElementById('footer_stat_l');
	var centre = document.getElementById('footer_stat_c');
	var right = document.getElementById('footer_stat_r');
	var loader = '<div class="loader"><img src="'+relative+'images/loader.gif" \/><\/div>';

	if(thisDirection==true){
		changeStats(true);
		left.innerHTML = centre.innerHTML;
		centre.innerHTML = right.innerHTML;
		right.innerHTML = loader;
		loadRight();
	}else{
		changeStats(false);
		right.innerHTML = centre.innerHTML;
		centre.innerHTML = left.innerHTML;
		left.innerHTML = loader;
		loadLeft();
	}
	
}


function loadRight(){
	var url = statsLoc+'get_stat.php';
	var newRequest = new ajaxObject( url );
		newRequest.update( 'stat='+stats[ currentStats[2] ] );
		newRequest.callback = function( p_responseText, p_responseStatus ){
			if( p_responseStatus == 200 ){
				document.getElementById('footer_stat_r').innerHTML = p_responseText;
			}else{
				document.getElementById('footer_stat_r').innerHTML = errorMessage;
			}
		}
}


function loadLeft(){
	var url = statsLoc+'get_stat.php';
	var newRequest = new ajaxObject( url );
		newRequest.update( 'stat='+stats[ currentStats[0] ] );
		newRequest.callback = function( p_responseText, p_responseStatus ){
			if( p_responseStatus == 200 ){
				document.getElementById('footer_stat_l').innerHTML = p_responseText;
			}else{
				document.getElementById('footer_stat_l').innerHTML = errorMessage;
			}
		}
}


function changeStats(thisDirection){
	if(thisDirection==true){
		for(var i=0; i<3; i++){
			currentStats[i]++;
			if( currentStats[i] >= stats.length ){
				currentStats[i] = 0;
			}
		}
	}else if(thisDirection==false){
		for(var i=0; i<3; i++){
			currentStats[i]--;
			if( currentStats[i] < 0 ){
				currentStats[i] = stats.length-1;;
			}
		}
	}else{
		for(var i=0; i<3; i++){
			if( currentStats[i] >= stats.length || currentStats[i] < 0){
				currentStats[i] = 0;
			}
		}
	}
}


/* AJAX Stuff */
function ajaxObject(url, callbackFunction) {
  var that=this;      
  this.updating = false;
  this.abort = function() {
    if (that.updating) {
      that.updating=false;
      that.AJAX.abort();
      that.AJAX=null;
    }
  }
  this.update = function(passData,postMethod) { 
    if (that.updating) { return false; }
    that.AJAX = null;                          
    if (window.XMLHttpRequest) {              
      that.AJAX=new XMLHttpRequest();              
    } else {                                  
      that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }                                             
    if (that.AJAX==null) {                             
      return false;                               
    } else {
      that.AJAX.onreadystatechange = function() {  
        if (that.AJAX.readyState==4) {             
          that.updating=false;                
          that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML);        
          that.AJAX=null;                                         
        }                                                      
      }                                                        
      that.updating = new Date();                              
      if (/post/i.test(postMethod)) {
        var uri=urlCall+'?'+that.updating.getTime();
        that.AJAX.open("POST", uri, true);
        that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        that.AJAX.send(passData);
      } else {
        var uri=urlCall+'?'+passData+'&timestamp='+(that.updating.getTime()); 
        that.AJAX.open("GET", uri, true);                             
        that.AJAX.send(null);                                         
      }              
      return true;                                             
    }                                                                           
  }
  var urlCall = url;        
  this.callback = callbackFunction || function () { }; 
}

