/* Simple AJAX Code-Kit (SACK) v1.6.1 */
/* ©2005 Gregory Wild-Smith */
/* www.twilightuniverse.com */
/* Software licenced under a modified X11 licence,
   see documentation or authors website for more details */

function sack(file) {
	this.xmlhttp = null;

	this.resetData = function() {
		this.method = "POST";
  		this.queryStringSeparator = "?";
		this.argumentSeparator = "&";
		this.URLString = "";
		this.encodeURIString = true;
  		this.execute = false;
  		this.element = null;
		this.elementObj = null;
		this.requestFile = file;
		this.vars = new Object();
		this.responseStatus = new Array(2);
  	};

	this.resetFunctions = function() {
  		this.onLoading = function() { };
  		this.onLoaded = function() { };
  		this.onInteractive = function() { };
  		this.onCompletion = function() { };
  		this.onError = function() { };
		this.onFail = function() { };
	};

	this.reset = function() {
		this.resetFunctions();
		this.resetData();
	};

	this.createAJAX = function() {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				this.xmlhttp = null;
			}
		}

		if (! this.xmlhttp) {
			if (typeof XMLHttpRequest != "undefined") {
				this.xmlhttp = new XMLHttpRequest();
			} else {
				this.failed = true;
			}
		}
	};

	this.setVar = function(name, value){
		this.vars[name] = Array(value, false);
	};
	
	this.setFormVars = function(ObjForm)
	{
		// Deze functie verzamelt alle inputs om zo de volledige form te posten
		if (!(ObjForm.method == ''))
		{
			this.method = ObjForm.method;			
		}
		
		for (var i = 0; i < ObjForm.elements.length; i++)
		{
			if (ObjForm.elements[i].tagName=='SELECT')
			{
				var value = '';
				for (j=0;j<ObjForm.elements[i].length;j++)
				{
					if (ObjForm.elements[i].options[j].selected)
					{
						if (value.length>0)
						{
							value = value + ', ';	
						}
						value = value + ObjForm.elements[i].options[j].value;
					}
				}
					this.setVar(ObjForm.elements[i].name, value);			
			} else {
				if (ObjForm.elements[i].getAttribute('type')=='checkbox')
				{
					if (ObjForm.elements[i].checked)
					{
						this.setVar(ObjForm.elements[i].name, '1');								
					} else {
						this.setVar(ObjForm.elements[i].name, '0');								
					}
					
				} else {				
					this.setVar(ObjForm.elements[i].name, ObjForm.elements[i].value);			
				}
			}
//			alert(ObjForm.elements[i].name + ": " + ObjForm.elements[i].value);
		}

	}
	

	this.encVar = function(name, value, returnvars) {
		if (true == returnvars) {
			return Array(encodeURIComponent(name), encodeURIComponent(value));
		} else {
			this.vars[encodeURIComponent(name)] = Array(encodeURIComponent(value), true);
		}
	}

	this.processURLString = function(string, encode) {
		encoded = encodeURIComponent(this.argumentSeparator);
		regexp = new RegExp(this.argumentSeparator + "|" + encoded);
		varArray = string.split(regexp);
		for (i = 0; i < varArray.length; i++){
			urlVars = varArray[i].split("=");
			if (true == encode){
				this.encVar(urlVars[0], urlVars[1]);
			} else {
				this.setVar(urlVars[0], urlVars[1]);
			}
		}
	}

	this.createURLString = function(urlstring) {
		if (this.encodeURIString && this.URLString.length) {
			this.processURLString(this.URLString, true);
		}

		if (urlstring) {
			if (this.URLString.length) {
				this.URLString += this.argumentSeparator + urlstring;
			} else {
				this.URLString = urlstring;
			}
		}

		// prevents caching of URLString
		this.setVar("rndval", new Date().getTime());

		urlstringtemp = new Array();
		for (key in this.vars) {
			if (false == this.vars[key][1] && true == this.encodeURIString) {
				encoded = this.encVar(key, this.vars[key][0], true);
				delete this.vars[key];
				this.vars[encoded[0]] = Array(encoded[1], true);
				key = encoded[0];
			}

			urlstringtemp[urlstringtemp.length] = key + "=" + this.vars[key][0];
		}
		if (urlstring){
			this.URLString += this.argumentSeparator + urlstringtemp.join(this.argumentSeparator);
		} else {
			this.URLString += urlstringtemp.join(this.argumentSeparator);
		}
	}

	this.runResponse = function() {
		eval(this.response);
	}

	this.runAJAX = function(urlstring) {
		if (this.failed) {
			this.onFail();
		} else {
			this.createURLString(urlstring);
			if (this.element) {
				this.elementObj = document.getElementById(this.element);
			}
			if (this.xmlhttp) {
				var self = this;
				if (this.method == "GET") {
					totalurlstring = this.requestFile + this.queryStringSeparator + this.URLString;
					this.xmlhttp.open(this.method, totalurlstring, true);
				} else {
					this.xmlhttp.open(this.method, this.requestFile, true);
					try {
						this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
					} catch (e) { }
				}

				this.xmlhttp.onreadystatechange = function() {
					switch (self.xmlhttp.readyState) {
						case 1:
							self.onLoading();
							break;
						case 2:
							self.onLoaded();
							break;

						case 3:
							self.onInteractive();
							break;
						case 4:
						if (self.xmlhttp.responseText == 'TIMEOUT')
						{
							window.location = 'index.asp?err=4';	
						}
						try 
						{
						
							self.response = self.xmlhttp.responseText;
							self.responseXML = self.xmlhttp.responseXML;
							self.responseStatus[0] = self.xmlhttp.status;
							self.responseStatus[1] = self.xmlhttp.statusText;
						} catch(e)
						{
						}

							if (self.execute) {
								self.runResponse();
							}

							if (self.elementObj) {
								elemNodeName = self.elementObj.nodeName;
								elemNodeName.toLowerCase();
								if (elemNodeName == "input"
								|| elemNodeName == "select"
								|| elemNodeName == "option"
								|| elemNodeName == "textarea") {
									self.elementObj.value = self.response;
								} else {
									self.elementObj.innerHTML = self.response;
								}
							}
							if (self.responseStatus[0] == "200") {
								self.onCompletion();
							} else {
								self.onError();
							}

							self.URLString = "";
							break;
					}
				};

				this.xmlhttp.send(this.URLString);
			}
		}
	};

	this.reset();
	this.createAJAX();
}




var formVars = "";

function setVarsForm(vars){
	formVars  = vars;
}


/*
function SelectboxChange(selectbox, recordID) 
{
	ajax = new AjaxHandler;
	value = selectbox.value;
	nt = ajax.send("ajax_update_engine.asp?key_value="+recordID+"&field_value="+value+"&"+formVars,"");
}
*/

// ------------------ Filter functions -------------------

function SetFilter(pageID, itemID, arrayValue, itemValue)
{
	var ajax2 = new sack();
	ajax2.requestFile = "ajax_setfilter.asp";
	ajax2.method = "GET";
	ajax2.setVar('pageID', pageID);
	ajax2.setVar('itemID', itemID);
	ajax2.setVar('arrayValue', arrayValue);
	ajax2.setVar('itemValue', itemValue);
	ajax2.runAJAX();
}

function FilterCheckBox(pageID, itemID, arrayValue, checkbox)
{
	if (checkbox.checked)
	{
		SetFilter(pageID, itemID, arrayValue, 1);
	} else {
		SetFilter(pageID, itemID, arrayValue, 0);
	}
	RefreshTable();
}


// ------------------ General functions -------------------

function checkDeadline(projectID, dimensionID, pdate)
{
		var ajax2 = new sack();
	ajax2.requestFile = "ajax_deadline.asp";
	ajax2.method = "GET";
	ajax2.setVar('projectID', projectID);
	ajax2.setVar('dimensionID', dimensionID);
	ajax2.setVar('pdate', pdate);
	ajax2.onCompletion = function() {
		if (ajax2.response.length>0)
		{
			alert (ajax2.response);		
		}
	};
	ajax2.runAJAX();

}
function checkDeadline2(planningID, pdate)
{
		var ajax2 = new sack();
	ajax2.requestFile = "ajax_deadline.asp";
	ajax2.method = "GET";
	ajax2.setVar('planningID', planningID);
	ajax2.setVar('pdate', pdate);
	ajax2.onCompletion = function() {
		if (ajax2.response.length>0)
		{
			alert (ajax2.response);		
		}
	};
	ajax2.onError = function() {
		if (ajax2.response.length>0)
		{
//			alert ('');		
		}
	};
	ajax2.runAJAX();
}

function SetSequence(subcode, key, value)
{
	var ajax2 = new sack();
	ajax2.requestFile = "ajax_update_engine.asp";
	ajax2.method = "GET";
	ajax2.setVar('code', 'sequence_change');
	ajax2.setVar('subcode', subcode);
	ajax2.setVar('key', key);
	ajax2.setVar('value', value);
	ajax2.runAJAX();

}
var ajax2 = new Array();

function saveImageOrder()
	{
	var orderString = "";
	var objects = document.getElementsByTagName('DIV');
	for(var no=0;no<objects.length;no++){
		if(objects[no].className=='imageBox' || objects[no].className=='imageBoxHighlighted'){
			if(orderString.length>0)orderString = orderString + ',';
			orderString = orderString + objects[no].id;
		}			
	}
		//document.getElementById('debug').innerHTML = 'This is the new order of the images(IDs) : <br>' + orderString;
	var productID = document.getElementById('lastID').value;
	var i = ajax2.length;
	ajax2[i] = new sack();
	ajax2[i].requestFile = "ajax_update_engine.php";
	ajax2[i].method = "GET";
	ajax2[i].setVar('code', 'sequence_change');
	ajax2[i].setVar('orderstring', orderString);
	ajax2[i].setVar('productID', productID);
	ajax2[i].runAJAX();

}

var ajax4 = new Array();
function checkBoxToggle(checkbox, ID, code) {
	var k = ajax4.length;
	ajax4[k] = new sack();
	ajax4[k].method = "GET";
	ajax4[k].requestFile = "ajax_update_engine.php";
	ajax4[k].setVar('ID', ID);
	ajax4[k].setVar('code', code);
	if (formVars != '') {
		var arrayvars = formVars.split("=");
		if (arrayvars.length>1) {
			ajax4[k].setVar(arrayvars[0], arrayvars[1]);
			
		}
	}
	
	if (checkbox.checked)
	{
		ajax4[k].setVar('field_value', 1);
	} else {
		ajax4[k].setVar('field_value', 0);
	}
	ajax4[k].runAJAX();
	
}
var ajax3 = new Array();
//var j = 0;
function deletePic(imgID,productID){
	var j = ajax3.length;
	ajax3[j] = new sack();
	ajax3[j].requestFile = "ajax_update_engine.php";
	ajax3[j].method = "GET";
	ajax3[j].setVar('code', 'deletePic');
	ajax3[j].setVar('imgID', imgID);
	ajax3[j].setVar('productID', productID);
	ajax3[j].onCompletion = RefreshTable;
	ajax3[j].runAJAX();
}
var ajax5= new Array();

function updateField(field,id,code){
	var a = ajax5.length;
	var newValue = field.value;
	ajax5[a] = new sack();
	ajax5[a].requestFile = "ajax_update_engine.php";
	ajax5[a].method = "GET";
	ajax5[a].setVar('code', code);
	ajax5[a].setVar('id', id);
	ajax5[a].setVar('newValue', newValue);
	ajax5[a].onCompletion = function() {
		if (ajax5[a].response.length>0)
		{
			alert (ajax5[a].response);		
		}
		RefreshTable();
	};
	ajax5[a].onError = function() {
		alert ("beep");
	};
	ajax5[a].runAJAX();
}

var ajax6 = new Array();
//var j = 0;
function addDisc(){
	var b = ajax6.length;
	ajax6[b] = new sack();
	ajax6[b].requestFile = "ajax_update_engine.php";
	ajax6[b].method = "GET";
	ajax6[b].setVar('code', 'add_disc');
	ajax6[b].onCompletion = RefreshTable;
	ajax6[b].runAJAX();
}

var ajax7 = new Array();
function deleteDisc(id){
	var c = ajax7.length;
	ajax7[c] = new sack();
	ajax7[c].requestFile = "ajax_update_engine.php";
	ajax7[c].method = "GET";
	ajax7[c].setVar('code', 'delete_disc');
	ajax7[c].setVar('id', id);
	ajax7[c].onCompletion = function() {
		if (ajax7[c].response.length>0)
		{
			alert (ajax7[c].response);		
		}
		RefreshTable();
	};
	ajax7[c].runAJAX();
}

var ajax8 = new Array();
//var j = 0;
function addTransportCost(){
	var d = ajax8.length;
	ajax8[d] = new sack();
	ajax8[d].requestFile = "ajax_update_engine.php";
	ajax8[d].method = "GET";
	ajax8[d].setVar('code', 'add_transportcost');
	ajax8[d].onCompletion = RefreshTable;
	ajax8[d].runAJAX();
}

var ajax9 = new Array();
function deleteTransportCost(id){
	var e = ajax9.length;
	ajax9[e] = new sack();
	ajax9[e].requestFile = "ajax_update_engine.php";
	ajax9[e].method = "GET";
	ajax9[e].setVar('code', 'delete_transportcost');
	ajax9[e].setVar('id', id);
	ajax9[e].onCompletion = function() {
		if (ajax9[e].response.length>0)
		{
			alert (ajax9[e].response);		
		}
		RefreshTable();
	};
	ajax9[e].runAJAX();
}

var ajax10 = new Array();
function addToCart(id,descr,ref){
	if (document.getElementById(ref).value.length == 0) {
		alert("Please enter a value");
	} else {
		if (IsNumeric(document.getElementById(ref).value)==false){
			alert("Please enter a numeric value");
		} else {
			var f = ajax10.length;
			var amount = document.getElementById(ref).value;
			document.getElementById(ref).value = "";
			ajax10[f] = new sack();
			ajax10[f].requestFile = "ajax_update_engine.php";
			ajax10[f].method = "GET";
			ajax10[f].setVar('code', 'addToCart');
			ajax10[f].setVar('id', id);
			ajax10[f].setVar('descr', descr);
			ajax10[f].setVar('amount', amount);
			ajax10[f].setVar('ref', ref);
			ajax10[f].onCompletion = function() {
				if (ajax10[f].response.length>0)
				{
					alert (ajax10[f].response);		
				}
			};
			ajax10[f].runAJAX();
		}
	}
}
function IsNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
}