/*globals YAHOO, SYNTEC, window*/
"use strict";
(function () {
	//Aliasses
	var Y = YAHOO,
		D = Y.util.Dom,
		E = Y.util.Event,
		createElement = SYNTEC.dom.createElement;

	//Test for oozoo object
	if (typeof SYNTEC.oozoo !== 'object') {
		SYNTEC.oozoo = {
			//toggleImage
			toggleImage : function (name, src) {
				var domElement = document.getElementById(name),
					zoomEl = document.getElementById('zoom_' + name);
				if (domElement) {
					if (src) {
						domElement.style.backgroundImage = "url('" + src + "')";
					}
				}
				if (zoomEl) {
					if (src) {
						zoomEl.setAttribute('oozooimg', src);
					}
				}
			},
			//togglePage
			togglePage : function (pageIndex, pageCount) {
				var i, li, div,
				pageIndex = parseInt(pageIndex, 10),
				objCurrent = document.getElementById('currentPage');
				
				for (i = 1; i <= pageCount; i += 1) {
					li = document.getElementById('pageTab_' + i);
					div = document.getElementById('page_' + i);
					
					if (!li) {
						//alert('Geen li gevonden op: ' + 'pageTab_' + i);
						continue;
					}
					if (!div) {
						//alert('Geen div gevonden op: ' + 'page_' + i);
						continue;
					}
					
					if (objCurrent) {
						objCurrent.value = pageIndex;
					}
					
					if (i === pageIndex) {
						li.className = 'selected';
						div.className = 'pageContainer';
					}
					else {
						li.className = '';
						div.className = 'hidden';
					}
					
				}
				
				li = null;
				div = null;
				
			},
			//cartItems
			'cartItems' : [],
			//hasCartItem
			'hasCartItem' : function (mat_id) {
				//Var
				var i, l = SYNTEC.oozoo.cartItems.length, k;
				//Loop
				for (i = 0; i < l; i += 1) {
					k = SYNTEC.oozoo.cartItems[i];
					if (k.mat_id.toString() === mat_id.toString()) {
						return true;
					}
				}
				//Default result
				return false;
			},
			//findCartItem
			'findCartItem' : function (mat_id) {
				//Var
				var i, l = SYNTEC.oozoo.cartItems.length, k;
				//Loop
				for (i = 0; i < l; i += 1) {
					k = SYNTEC.oozoo.cartItems[i];
					if (k.mat_id.toString() === mat_id.toString()) {
						return i;
					}
				}
				//Default result
				return false;
			},
			//addCartItem
			'addCartItem' : function (mat_id, quantity) {
				//Var
				var itemIndex = SYNTEC.oozoo.findCartItem(mat_id);
				//Test for update
				if (itemIndex !== false) {
					//Update
					SYNTEC.oozoo.cartItems[itemIndex] = {
						'mat_id' : mat_id,
						'quantity' : quantity
					};
				}
				else {
					//Insert
					SYNTEC.oozoo.cartItems.push({
						'mat_id' : mat_id,
						'quantity' : quantity
					});
				}
			},
			//removeCartItem
			'removeCartItem' : function (mat_id) {
				//Var
				var itemIndex = SYNTEC.oozoo.findCartItem(mat_id);
				//Test for update
				if (itemIndex !== false) {
					SYNTEC.oozoo.cartItems.splice(itemIndex, 1);
					//alert('removed');
				}
			},
			//removeFieldValue
			'removeFieldValue' : function (mat_id) {
				SYNTEC.oozoo.removeCartItem(mat_id);
				SYNTEC.oozoo.save2Cookie();
				return true;
			},
			
			//saveFieldValue
			saveFieldValue : function (inputObject) {
				var value = parseInt(inputObject.value, 10),
					idParts = inputObject.id.split('_'),
					mat_id = idParts[1];
				if (value <= 0) {
					value = '';
				}
				if (isNaN(value)) {
					value = '';
				}
				
				if (value === '' || value < 1) {
					//Remove
					SYNTEC.oozoo.removeCartItem(mat_id);
				}
				else {
					//Add
					SYNTEC.oozoo.addCartItem(mat_id, value);
				}
				
				
				//Save
				SYNTEC.oozoo.save2Cookie();
			},
			//save2Cookie
			'save2Cookie' : function () {
				//Var
				var i, l = SYNTEC.oozoo.cartItems.length, k,
					itemArray = [];
				
				for (i = 0; i < l; i += 1) {
					k = SYNTEC.oozoo.cartItems[i];
					if (k.quantity !== '' && k.quantity > 0) {
						itemArray.push(k.mat_id + '_' + k.quantity);
					}
				}
				
				//Save cookie
				YAHOO.util.Cookie.set("shopMemory", itemArray.toString(),{
					path: "/"
				});
				//alert('cookie saved: ' + itemArray.toString());
			},
			//loadCookie
			'loadCookie' : function () {
				var cookieValue = YAHOO.util.Cookie.get("shopMemory"),
					memParts,
					i, l, k,
					matPart;
				
				//alert(cookieValue);
				
				if (!cookieValue) {
					return;
				}
				
				memParts = cookieValue.split(',');

				if (!memParts) {
					return;
				}

				//Count
				l = memParts.length;
				
				for (i = 0; i < l; i += 1) {
					k = memParts[i];
					matPart = k.split('_');
					SYNTEC.oozoo.addCartItem(matPart[0], matPart[1]);
				}
				//alert('Cookie loaded');
			},
			//validateNumberKey
			validateNumberKey: function (e) {
				e = e || window.event;
				var validKeys = [8, 35, 36, 37, 39, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105],
					chr = (e.which) ? e.which : e.keyCode,
					l = validKeys.length,
					i;
				
				//document.body.innerHTML += chr + '<br>';
				
				//Loop
				for (i = 0; i < l; i += 1) {
					if (validKeys[i] === chr) {
						return true;
					}
				}
				
				return false;
			},
			//deleteOrderLine
			deleteOrderLine : function (name, materialName) {
				SYNTEC.helpers.saveCookie(materialName, '');
				var oTbody = document.getElementById('materialBody'),
					oTr = document.getElementById(name);
				if (!oTbody) {
					return;
				}
				if (!oTr) {
					return;
				}
				oTbody.removeChild(oTr);
				
				if (oTbody.childNodes.length < 1) {
					document.location.href = '/script/oozoo/';
				}
			},
			//clearCookies
			clearCookies : function () {
				YAHOO.util.Cookie.set("shopMemory", '',{
					path: "/"
				});
				return true;
			},
			'confirmOrder' : function () {
				//btnConfirm
				var btn = document.getElementById('btnConfirm');
				if (btn) {
					btn.disabled = true;
				}
				return SYNTEC.oozoo.clearCookies();
			},
			//validateForm
			validateForm : function () {
				//Var
				var i, k, l = arguments.length, valid = true, fld;
				
				//validateEmail
				function validateEmail(address) {
					var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
					if (reg.test(address) === false) {
						return false;
					}
					return true;
				}
				
				//Loop
				for (i = 0; i < l; i += 1) {
					k = arguments[i];
					fld = document.getElementById(k);
					if (fld) {
						switch (k.toLowerCase()) {
						case 'from':
							if (!validateEmail(fld.value)) {
								valid = false;
								fld.className = 'field-invalid';
							}
							else {
								fld.className = 'field';
							}
							break;
						case 'nverused':
							break;
						default:
							if (fld.value === '') {
								valid = false;
								fld.className = 'field-invalid';
							}
							else {
								fld.className = 'field';
							}
							break;
						}
					}
				}

				if(!valid) {
					alert('Your form has not been sent. Please check required fields.');	
				}
				
				//Result
				return valid;
				
			},
			//overlay
			'overlay' : null,
			//zoomcontainer
			'zoomcontainer' : null,
			//closeZoomPicture
			'closeZoomPicture' : function () {
				//Var
				var oozoo = SYNTEC.oozoo;
				
				//Remoev listener
				E.removeListener(window, 'resize', SYNTEC.oozoo.resizeZoomPicture);
				
				//Test for overlay
				if (oozoo.overlay) {
					document.body.removeChild(oozoo.overlay);
					oozoo.overlay = null;
				}
				//Test for zoomcontainer
				if (oozoo.zoomcontainer) {
					document.body.removeChild(oozoo.zoomcontainer);
					oozoo.zoomcontainer = null;
				}				
			},
			//resizeZoomPicture
			'resizeZoomPicture' : function () {
				var oozoo = SYNTEC.oozoo,
					vpWidth = D.getViewportWidth(),
					vpHeight = D.getViewportHeight(),
					offsetWidth,
					offsetHeight,
					left = 0,
					top = 0;

				//Set
				if (oozoo.overlay) {
					//Set
					oozoo.overlay.style.width = vpWidth + 'px';
					oozoo.overlay.style.height = vpHeight + 'px';
					
				}
				
				if (oozoo.zoomcontainer) {
					//Get offset width
					offsetWidth = parseInt(oozoo.zoomcontainer.offsetWidth, 10);
					offsetHeight = parseInt(oozoo.zoomcontainer.offsetHeight, 10);
				}
				
				//Calc
				left = ((vpWidth - offsetWidth) / 2);
				left = (left < 0) ? 0 : left;
				
				top = (((vpHeight - offsetHeight) / 2) / 2);
				top = (top < 0) ? 0 : top;
				
				//Set
				if (oozoo.zoomcontainer) {
					oozoo.zoomcontainer.style.left = left + 'px';
					oozoo.zoomcontainer.style.top = top + 'px';
				}
				
			},
			//imageLoaded
			'imageLoaded' : function () {
				if (SYNTEC.oozoo.zoomcontainer) {
					SYNTEC.oozoo.zoomcontainer.className = 'zoomcontainer';
				}
				SYNTEC.oozoo.resizeZoomPicture();
			},
			//zoomPicture
			'zoomPicture' : function (obj) {
				//Var
				var oozoo = SYNTEC.oozoo,
					imgUrl = (obj.getAttribute('oozooimg')) ? obj.getAttribute('oozooimg').replace('Klein', 'Groot') : '',
					img,
					closeDiv;
				
				//Test for overlay
				oozoo.closeZoomPicture();
				
				//Create overlay
				oozoo.overlay = createElement('div', null, 'overlay', null, document.body);
				
				//Create imagecontainer
				oozoo.zoomcontainer = createElement('div', null, 'hidden', null, document.body);
				
				
				//Create img
				img = createElement('img', null, null, null, oozoo.zoomcontainer);
				E.on(img, 'load', SYNTEC.oozoo.imageLoaded);
				img.src = imgUrl;
				
				//
				
				//Create close div
				closeDiv = createElement('div', null, 'closezoom', 'Close', oozoo.zoomcontainer);
				
				//Add handlers
				E.on(closeDiv, 'click', SYNTEC.oozoo.closeZoomPicture);
				E.on(window, 'resize', SYNTEC.oozoo.resizeZoomPicture);
				
				E.on(oozoo.overlay, 'dblclick', SYNTEC.oozoo.closeZoomPicture);
				
				
				//Resize
				oozoo.resizeZoomPicture();
			},
			//disableRightMouseButton
			'disableRightMouseButton' : function () {
				//Handle event
				function handleDisableClick(e) {
					//var charCode = YAHOO.util.Event.getCharCode(e);
					var btn = e.button || e.which;
					if (btn > 1) {
						YAHOO.util.Event.stopEvent(e);
						alert('copyright by OOZOO Timepieces');
						return false;
					}
					return true;
				}
				//Attach event
				YAHOO.util.Event.on(document, 'mousedown', handleDisableClick);
				
			}
			
		};
	}
	
	//Set event
	YAHOO.util.Event.on(window, 'load', SYNTEC.oozoo.loadCookie);
}());

