var isIE6;
var productpage;

window.onload = function() {
	if(productpage == true) {
		isIE6 = checkIEVersion();
		var strCookie = readCookie('wireCookie');
		if(strCookie) {
			var isIE = navigator.appName.indexOf("Microsoft") != -1;
			//console.log('strCookie: '+strCookie);
			
			var rowAr = strCookie.split('##');
			//console.info('rowAr: '+rowAr);
			
			if(rowAr.length > 0) {
				//console.warn(rowAr.length)
				for(var i = 0; i < rowAr.length; i++){
					if(rowAr[i].length > 0) {
						var tdAr = rowAr[i].split('$$');
						//console.error(tdAr);
						
						var intId = tdAr[0].substr(2);
						
						var list = document.getElementById('articleList');
						
						if(!isIE) {
							var tr = document.createElement('tr');
							tr.setAttribute('id', 'orderId'+intId);
							
							var td1 = document.createElement('td');
							td1.setAttribute('class', 'firstTd')
							
							td1.innerHTML = tdAr[1];
							
							var td2 = document.createElement('td');
							td2.setAttribute('class', 'secondTd')
							td2.innerHTML = '<input type="text" class="orderNumber" value="'+tdAr[2]+'" name="amount'+intId+'" id="amount'+intId+'" onKeyPress="return forceNumber(event)" onChange="checkOrder(\'orderId'+intId+'\', this.id, \'id'+intId+'\')">';
							
							var td3 = document.createElement('td');
							td3.setAttribute('class', 'thirdTd')
							td3.innerHTML = tdAr[3];
							
							tr.appendChild(td1);
							tr.appendChild(td2);
							tr.appendChild(td3);
							
							list.appendChild(tr);
						} else {
						
							var tr = list.insertRow();
							tr.id = 'orderId'+intId;
							
							var td1 = tr.insertCell(0);
							td1.className = 'firstTd';
							td1.innerText = tdAr[1];
							
							var td2 = tr.insertCell(1);
							td2.className = 'secondTd';
							td2.innerHTML = '<input type="text" class="orderNumber" value="'+tdAr[2]+'" name="amount'+intId+'" id="amount'+intId+'" onKeyPress="return forceNumber(event)" onChange="checkOrder(\'orderId'+intId+'\', this.id, \'id'+intId+'\')">';;
							
							var td3 = tr.insertCell(2);
							td3.className = 'thirdTd';
							td3.innerText = tdAr[3];
						}
					}
				}	
			}
			
			// show the total price
			var totalTD = document.getElementById('totalPrice');
			totalTD.innerHTML = '&euro; '+readCookie('wireTotal');
		}
	}
}

function checkIEVersion() {
	var agent = navigator.userAgent;
	if(agent.indexOf('MSIE 6') > 0) {
		return true;
	} else {
		return false;
	}
}

/** 
 * Deze functie zorgt ervoor dat bij input er alleen numerieke invoer toegestaan wordt
 *
 * @param event
 */
function forceNumber(e) {
	if(window.event) {
		keynum = e.keyCode;
	} else {
		keynum = e.which;
	}
	
	//console.group('forceNumber function')
	//console.info('key: '+String.fromCharCode(keynum)+' (keynum: '+keynum+') given');
	//console.groupEnd();
	
	if(keynum == 0 || keynum == 8 || "0123456789".search(String.fromCharCode(keynum)) > -1) {
		return true;
	} else {
		return false;
	}
}

function checkOrder(rowId, elId, id) {
	//console.group('checkOrder function')
	//console.info('checkOrder: '+rowId+'; '+elId+'; '+id);
	
	value = document.getElementById(elId).value;
	
	//console.log('value: '+value);
	if(value == 0) {
		//console.warn('isNull >> remove row / entry from cookie');
		var strCookie = readCookie('wireCookie');
		var strTotal = parseFloat(readCookie('wireTotal'));
		
		// delete the containing row if it exists
		var list = document.getElementById('articleList');
		var row = document.getElementById(rowId);
		
		if(row && list) {
			var isIE = navigator.appName.indexOf("Microsoft") != -1;
			if(isIE) {
				list.deleteRow(row.rowIndex);
			} else {
				list.removeChild(row);
			}
			
			var ar = strCookie.split(id);
			var delPos = ar[1].indexOf('##') + 2;
			var deleted = ar[1].substr(0, delPos);
			var remains = ar[1].substr(delPos);

			var newStr = ar[0] + remains;
			
			ar = deleted.split('##');
			ar = ar[0].split('$$');
			
			var price = parseFloat(ar[2]) * parseFloat(ar[3]);
			
			var wireTotal = Math.round( (strTotal - price) * 100 )/100;
			
			if(isIE6) {
				createCookie('wireCookie', newStr, 1);
				createCookie('wireTotal', wireTotal, 1);
			} else {
				createCookie('wireCookie', newStr, false);
				createCookie('wireTotal', wireTotal, false);
			}
			
			var totalTD = document.getElementById('totalPrice');
			totalTD.innerHTML = '&euro; '+readCookie('wireTotal');
		}
	} else {
		//console.warn('isNotNull >> update total / cookie');
		var strCookie = readCookie('wireCookie');
		var strTotal = parseFloat(readCookie('wireTotal'));
		
		var ar = strCookie.split(id);
		var delPos = ar[1].indexOf('##') + 2;
		var deleted = ar[1].substr(0, delPos);
		var remains = ar[1].substr(delPos);

		var newStr = ar[0] + remains;
		
		ar = deleted.split('##');
		ar = ar[0].split('$$');
		
		//console.log(ar);
		
		var price = parseFloat(ar[2]) * parseFloat(ar[3]);
		var newPrice = value * parseFloat(ar[3]);
		var wireTotal = Math.round( ( strTotal - price ) + newPrice );
		
		var newStr = newStr + id+'$$'+ar[1]+'$$'+value+'$$'+ar[3]+'##';
		
		if(isIE6) {
			createCookie('wireCookie', newStr, 1);
			createCookie('wireTotal', wireTotal, 1);
		} else {
			createCookie('wireCookie', newStr, false);
			createCookie('wireTotal', wireTotal, false);
		}

		var totalTD = document.getElementById('totalPrice');
		totalTD.innerHTML = '&euro; '+readCookie('wireTotal');
	}
	
	//console.groupEnd();
}

/** 
 * Deze functie voert de producten in in de besteltabel en update de totaal prijs
 *
 * @param article string
 * @param formid string
 * @param price string
 */
function addArticle(article, formid, price) {
	//console.group('addArticle function')
	
	var form = document.getElementById(formid);
	var amount = form.amount.value;
	
	if(amount > 0) {
		var total;
		var newId;
		price = amount * price;
		var prod = article+'$$'+amount+'$$'+price+'##';
	
		newId = doCookie(prod, amount, price);
		//console.info('returned id: '+newId)
	
		var list = document.getElementById('articleList');
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		
		if(!isIE) {
			var tr = document.createElement('tr');
			tr.setAttribute('id', 'orderId'+newId);
			
			var td1 = document.createElement('td');
			td1.setAttribute('class', 'firstTd')
			
			td1.innerHTML = article;
			
			var td2 = document.createElement('td');
			td2.setAttribute('class', 'secondTd')
			td2.innerHTML = '<input type="text" class="orderNumber" value="'+amount+'" name="amount'+newId+'" id="amount'+newId+'" onKeyPress="return forceNumber(event)" onChange="checkOrder(\'orderId'+newId+'\', this.id, \'id'+newId+'\')">';
			
			var td3 = document.createElement('td');
			td3.setAttribute('class', 'thirdTd')
			td3.innerHTML = amount * price;
			
			tr.appendChild(td1);
			tr.appendChild(td2);
			tr.appendChild(td3);
			
			list.appendChild(tr);
		} else {
		
			var tr = list.insertRow();
			tr.id = 'orderId'+newId;
			
			var td1 = tr.insertCell(0);
			td1.className = 'firstTd';
			td1.innerText = article;
			
			var td2 = tr.insertCell(1);
			td2.className = 'secondTd';
			//td2.innerText = amount;
			td2.innerHTML = '<input type="text" class="orderNumber" value="'+amount+'" name="amount'+newId+'" id="amount'+newId+'" onKeyPress="return forceNumber(event)" onChange="checkOrder(\'orderId'+newId+'\', this.id, \'id'+newId+'\')">';
			
			var td3 = tr.insertCell(2);
			td3.className = 'thirdTd';
			td3.innerText = price;
		}
		
		var totalTD = document.getElementById('totalPrice');
		totalTD.innerHTML = '&euro; '+readCookie('wireTotal');
		
		form.amount.value = "";
		
	} else {
		alert("Error:\nPlease specify an amount.")
		//console.error('no amount given');
		form.amount.focus();
	}
	
	//console.groupEnd();
}

function doCookie(prod, amount, price) {
	//console.group('doCookie function')

	var cookieValue = readCookie('wireCookie');
	var newId;
		
	if(cookieValue) {
		var id = parseInt(readCookie('wireId'));
		newId = id+1;
		
		//console.info('oldId: '+id+'; newId: '+newId);
	
		cookieValue += 'id'+newId+'$$'+prod;
		eraseCookie('wireCookie');
		
		var wireTotal = readCookie('wireTotal');
		wireTotal = parseFloat(wireTotal) + (amount*price);
		wireTotal = Math.round(wireTotal*100)/100;
		//console.info('wireTotal: '+wireTotal);
		eraseCookie('wireTotal');
		
		if(isIE6) {
			createCookie('wireCookie', cookieValue,1);
			createCookie('wireId', newId,1);
			createCookie('wireTotal', wireTotal,1);
		} else {
			createCookie('wireCookie', cookieValue, false);
			createCookie('wireId', newId, false);
			createCookie('wireTotal', wireTotal, false);
		}
		
		//console.log('wel cookie: '+cookieValue);
	} else {
		newId = 1;
		
		var wireTotal = amount * price;
		wireTotal = Math.round(wireTotal*100)/100;
		
		if(isIE6) {
			createCookie('wireId', 1, 1);
			createCookie('wireCookie', 'id1$$'+prod, 1);
			createCookie('wireTotal', wireTotal, 1);
		} else {
			createCookie('wireId', 1, false);
			createCookie('wireCookie', 'id1$$'+prod, false);
			createCookie('wireTotal', wireTotal, false);
		}
		
		//console.info('geen cookie: id1$$'+prod);
	}
	
	return newId;
	
	//console.groupEnd();
}

function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	} else {
		var expires = "";
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

