/*global ActiveXObject, XMLHttpRequest, clearInterval, document, httprequest, setInterval, setTimeout, window */

function addLoadEvent(func) {
	
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    };
  }
  
}

function fadeMiddle() {

	var middlecont = document.getElementById('fadecont');
	var currentcolour = 255;
	var stepcount = 0;
	var timer = setInterval(function(){
			currentcolour = currentcolour - 10;
			middlecont.style.backgroundColor = 'rgb(' + currentcolour + ',' + currentcolour + ',0)';
			
			    stepcount += 1;
			    if (stepcount >= 25) {
				    clearInterval(timer);
				    middlecont.style.backgroundColor = 'rgb(0,0,0)';
			    }

	}, 50);
	
}


function setMiddle(id) {
	
  if(!id) {
    id = "item_30";
  }
	
  var url = "inc/set_middle.php?id=" + id + "&cur=" + document.getElementById('purchase-currency').value;
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	
	fadeMiddle();
	      
	var response = httprequest.responseText;
	var resps = response.split(",");
	
	document.getElementById('purchase-id').value = resps[0];
	document.getElementById('purchase-price').value = resps[4];
	document.getElementById('prodsel').innerHTML = resps[5];
	
	var year = document.getElementById('purchase-year');
	for(var i=0; i < year.length; i++) {
		if(year.options[i].value == resps[1]) {
			year.selectedIndex = i;
		}
	}
	
	var month = document.getElementById('purchase-month');
	for(i=0; i < month.length; i++) {
		if(month.options[i].value == resps[2]) {
			month.selectedIndex = i;
		}
	}
	
	var day = document.getElementById('purchase-day');
	for(i=0; i < day.length; i++) {
		if(day.options[i].value == resps[3]) {
			day.selectedIndex = i;
		}
	}
	
      }
    }
  };
			
  httprequest.send(null);
	
}

function createFunction() {
	
    return function () { setMiddle(this.id); };
    
}

function loadProdClicks() {

  var products = document.getElementById('products');
  var img = products.getElementsByTagName("div"); 
  for ( var i = 0; i < img.length; i++ ) { 
	  
	  img[i].onclick = createFunction();
    
  }	
	
}

function get_products() {

  document.getElementById('verbose').innerHTML = "getting products ...";
	
  var url = "inc/get_products.php?which=" + document.getElementById('category').value;
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	      
	document.getElementById('products').innerHTML = httprequest.responseText;
	
	loadProdClicks();
	
        document.getElementById('verbose').innerHTML = "";
	
      }
    }
  };
			
  httprequest.send(null);
	
  return false;	
	
}

function calculate() {

  document.getElementById('verbose').innerHTML = "calculating ...";
	
  var url = "inc/calculate.php";
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	      
	document.getElementById('youcouldhave').innerHTML = httprequest.responseText;
        document.getElementById('verbose').innerHTML = "";
	
      }
    }
  };
			
  httprequest.send(null);
	
  return false;	
	
}

function refresh_cart() {

  document.getElementById('verbose').innerHTML = "refreshing cart";
	
  var url = "inc/shopping_cart.php";
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	    
	var response = httprequest.responseText;
	document.getElementById('verbose').innerHTML = "";
	      
        if(!response) {
		      
	  document.getElementById('shopping-cart').innerHTML = "<ul><li style='border-bottom: 0px;'>no items</li></ul>";
	  document.getElementById('youcouldhave').innerHTML = "";
	  
	} else {
		
	  document.getElementById('shopping-cart').innerHTML = response;
	  setTimeout(calculate, 200);
		      
	}
	
      }
    }
  };
			
  httprequest.send(null);
	
}

function isEmpty(s) {
      
  return ((s === null) || (s.length === 0));
	
}

function isDigit(c) {
	
  return ((c >= "0") && (c <= "9"));
      
}

function isInteger(s) {

  if (isEmpty(s)) {
	      
    if (s.length == 1) {

      return 0;
    
    } else {
	
      return (s[1] === true);
	      
    }
	      
  }
     
  var c;
  
  for (var i = 0; i < s.length; i++) {
	  
    c = s.charAt(i);
    if (!isDigit(c)) { return false; }
      
  }

  return true;
  
}

function add_item() {
	
  document.getElementById('verbose').innerHTML = "adding item";

  var stuff = document.getElementById('purchase-price').value;
  var stuff2 = stuff.replace(/,/gi, "");
  var sprice = stuff2.split(".");
  var price = sprice[0];
  
  if(isInteger(price)) {
  
  var url = "inc/add_item.php?id=" + document.getElementById('purchase-id').value + "&currency=" + document.getElementById('purchase-currency').value + "&date=" + document.getElementById('purchase-year').value + "-" + document.getElementById('purchase-month').value + "-" + document.getElementById('purchase-day').value + "&price=" + price;
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	
	refresh_cart();
	
      }
    }
  };
			
  httprequest.send(null);
  
  } else {
	  
    document.getElementById('verbose').innerHTML = "invalid price format";
	  
  }
  
}

function loadItemClicks() {
  
  document.getElementById('purchase-add').onclick = function() {
	    
    add_item();
    
  };
  
  document.getElementById('category').onchange = function() {
	    
    get_products();
    
  };
  
  document.getElementById('purchase-currency').onchange = function() {
	   
      var setmid = document.getElementById('purchase-id').value;
      setMiddle('item_' + setmid);
    
  };
  
}

function remove_item(cart_id) {
	
  document.getElementById('verbose').innerHTML = "removing item";
  
  var url = "inc/remove_item.php?cart_id=" + cart_id;
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	
	refresh_cart();
	
      }
    }
  };
			
  httprequest.send(null);
  
  return false;
  
}

function clear_cart() {

  document.getElementById('verbose').innerHTML = "clearing cart";
	
  var url = "inc/clear_cart.php";
  httprequest.open("GET", url, true);
  httprequest.onreadystatechange = function() {
    if (httprequest.readyState == 4) {
      if (httprequest.status == 200) {
	
	refresh_cart();
	document.getElementById('youcouldhave').innerHTML = "";
	
      }
    }
  };
			
  httprequest.send(null);
  
  return false;
		
	
}

addLoadEvent(loadProdClicks);
addLoadEvent(loadItemClicks);
addLoadEvent(function() {

  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    httprequest = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // IE
    httprequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  refresh_cart();
  setTimeout("setMiddle()", 200);
  
});
