﻿function PointShop() {

	this.InitAddCompanyPoints = function () {

		$ts.setCookie('pslistkey', 0, 1);

	}

	this.AddCompanyPoints = function (idcompany, newpoints, listkey) {

		var pslistkey = parseInt($ts.getCookie('pslistkey'));

		if (pslistkey === 0) {
			var data = $ts.ajax({
				url: '/page25.aspx?recordid25=' + idcompany,
				type: 'GET',
				async: false
			});
			data = eval(data);

			var oldpoints = parseInt(data.records[0].point);

			var formdata = 'point=' + (newpoints + oldpoints);
			$ts.ajax({
				url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
				type: 'POST',
				data: formdata,
				async: false
			});

			$ts.setCookie('pslistkey', listkey, 1);
		}

		var root = $elm('mergefield_main');

		var a = $ts.createElement('a', { 'href': '/page21.aspx' });
		a.appendChild(document.createTextNode('Gå til tildel point'));

		root.appendChild(a);
	}

	this.InitAddPoints = function (idcompany) {
		var company = $ts.ajax({
			url: '/page25.aspx?recordid25=' + idcompany,
			type: 'GET',
			async: false
		});
		company = eval(company);
		var oldpoints = parseInt(data.records[0].point);
		$elm('numpoints').innerHTML = 'Tilgængelige point: ' + oldpoints;
	}

	this.AddPoints = function (mode, idcompany) {
		$elm('error').innerHTML = '';
		var company = $ts.ajax({
			url: '/page25.aspx?recordid25=' + idcompany,
			type: 'GET',
			async: false
		});
		company = eval(company);
		var oldpoints = parseInt(data.records[0].point);

		var employees = $ts.ajax({
			url: '/page28.aspx?companyid=' + idcompany,
			type: 'GET',
			async: false
		});
		employees = eval(employees);
		var max = employees.records.length;

		var minuspoints = 0;
		$elm('throbber' + mode).style.display = 'inline';
		switch (mode) {
			case 0:
				var points = parseInt($elm('pointsall').value);
				for (var i = 0; i < max; i++) {
					minuspoints += points;
				}

				break;
			case 1:
				points = parseInt($elm('pontsgroup').value);
				var elmgroup = $elm('group');
				var group = parseInt(elmgroup.options[elmgroup.selectedIndex].value);
				for (i = 0; i < max; i++) {
					var department = parseInt(employees.records[i].LISTFIELD_106_raw);
					if (department === group) {
						minuspoints += points;
					}
				}
				break;
		}

		var newpoints = oldpoints - minuspoints;

		if (newpoints >= 0) {
			switch (mode) {
				case 0:
					points = parseInt($elm('pointsall').value);
					for (i = 0; i < max; i++) {
						var formdata = 'point=' + points + '&medarbejder=' + employees.records[i].id;
						$ts.ajax({
							url: '/page29.aspx?action=post&recid=0&layoutid=1',
							data: formdata,
							type: 'POST',
							async: false
						});
						minuspoints += points;
						$elm('pointsall').value = '';
					}
					break;
				case 1:
					points = parseInt($elm('pontsgroup').value);
					elmgroup = $elm('group');
					group = parseInt(elmgroup.options[elmgroup.selectedIndex].value);
					for (i = 0; i < max; i++) {
						department = parseInt(employees.records[i].LISTFIELD_106_raw);
						if (department === group) {
							formdata = 'point=' + points + '&medarbejder=' + employees.records[i].id;
							$ts.ajax({
								url: '/page29.aspx?action=post&recid=0&layoutid=1',
								data: formdata,
								type: 'POST',
								async: false
							});
							minuspoints += points;
							$elm('pontsgroup').value = '';
						}
					}
					break;
			}

			formdata = 'point=' + newpoints;
			$ts.ajax({
				url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
				type: 'POST',
				data: formdata,
				async: false
			});

			$elm('numpoints').innerHTML = 'Tilgængelige point: ' + newpoints;
			$elm('throbber' + mode).style.display = 'none';
			document.location.reload(true);
		} else {
			$elm('error').innerHTML = 'Der er ikke point nok at tildele!';
			$elm('throbber' + mode).style.display = 'none';
		}
	}

	this.InitAddUserPoint = function (idcompany, iduser, mellemleder, name) {
		var company = $ts.ajax({
			url: '/page25.aspx?recordid25=' + idcompany,
			type: 'GET',
			async: false
		});
		company = eval(company);
		var oldpoints = parseInt(company.records[0].point);

		var employee = $ts.ajax({
			url: '/page33.aspx?recordid33=' + iduser,
			type: 'GET',
			async: false
		});
		employee = eval(employee);
		var pointsavailableuser = parseInt(employee.records[0].pointsavailable);

		if (mellemleder === 1) {
			$elm('module22_3_mergefield_layoutpanel_1').style.display = 'none';
			$elm('numpoints').innerHTML = 'Medarbejder: ' + name + '<br/>';
		}

		var theform = $elms('form[name=rediger22]')[0];

		var action = theform.action + '&firmaid=' + idcompany + '&name=' + name;
		$elm(theform).action = action;

		$elm('numpoints').innerHTML = $elm('numpoints').innerHTML + '<div>Tilgængelige firmapoint: ' + oldpoints + '</div><div>Tildelte medarbejderpoint: ' + pointsavailableuser + '</div>';
	}

	this.AddUserPoint = function (idcompany, iduser, mellemleder) {
		$elm('error').innerHTML = '';
		var company = $ts.ajax({
			url: '/page25.aspx?recordid25=' + idcompany,
			type: 'GET',
			async: false
		});
		company = eval(company);
		var oldpoints = parseInt(company.records[0].point);

		var employee = $ts.ajax({
			url: '/page33.aspx?recordid33=' + iduser,
			type: 'GET',
			async: false
		});
		employee = eval(employee);
		var pointsavailableuser = parseInt(employee.records[0].pointsavailable);
		var points = parseInt($elm('pointsall').value);
		if (mellemleder === 0) {
			var active = $elm('extrafield1156');

			if (active.checked === true) {
				if (points < 0) {
					var mypoints = pointsavailableuser + points;
					if (mypoints > 0) {
						var formdata = 'point=' + points + '&medarbejder=' + iduser;
						$ts.ajax({
							url: '/page29.aspx?action=post&recid=0&layoutid=1',
							data: formdata,
							type: 'POST',
							async: false
						});

						var extrapoints = points * -1;
						var newpoints = oldpoints + extrapoints;
						formdata = 'point=' + newpoints;
						$ts.ajax({
							url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
							type: 'POST',
							data: formdata,
							async: false
						});

						document.rediger22.submit();
					} else {
						$elm('error').innerHTML = 'Medarbejder kan ikke have negativ saldo!';
					}

				} else {
					newpoints = oldpoints - points;
					if (newpoints >= 0) {
						formdata = 'point=' + points + '&medarbejder=' + iduser;
						$ts.ajax({
							url: '/page29.aspx?action=post&recid=0&layoutid=1',
							data: formdata,
							type: 'POST',
							async: false
						});
						formdata = 'point=' + newpoints;
						$ts.ajax({
							url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
							type: 'POST',
							data: formdata,
							async: false
						});

						document.rediger22.submit();

					} else {
						$elm('error').innerHTML = 'Der er ikke point nok at tildele!';
					}
				}
			} else {
				if (confirm('Er du sikker på du vil slette denne bruger og fjerne alle hans point?')) {
					var data = $ts.ajax({
						url: '/page34.aspx?userid=' + iduser,
						type: 'GET',
						async: false
					});
					data = eval(data);

					for (i = 0; i < data.records.length; i++) {
						$ts.ajax({
							url: '/page35.aspx?action35=delete&recordid=' + data.records[i].id,
							type: 'GET',
							async: false
						});
					}

					newpoints = oldpoints + pointsavailableuser;
					formdata = 'point=' + newpoints;
					$ts.ajax({
						url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
						type: 'POST',
						data: formdata,
						async: false
					});

					document.rediger22.submit();
				}
			}
		} else {
			if (points < 0) {
				mypoints = pointsavailableuser + points;
				if (mypoints > 0) {
					formdata = 'point=' + points + '&medarbejder=' + iduser;
					$ts.ajax({
						url: '/page29.aspx?action=post&recid=0&layoutid=1',
						data: formdata,
						type: 'POST',
						async: false
					});

					extrapoints = points * -1;
					newpoints = oldpoints + extrapoints;
					formdata = 'point=' + newpoints;
					$ts.ajax({
						url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
						type: 'POST',
						data: formdata,
						async: false
					});

					document.location = '/page21.aspx';
				} else {
					$elm('error').innerHTML = 'Medarbejder kan ikke have negativ saldo!';
				}

			} else {
				newpoints = oldpoints - points;
				if (newpoints >= 0) {
					formdata = 'point=' + points + '&medarbejder=' + iduser;
					$ts.ajax({
						url: '/page29.aspx?action=post&recid=0&layoutid=1',
						data: formdata,
						type: 'POST',
						async: false
					});
					formdata = 'point=' + newpoints;
					$ts.ajax({
						url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
						type: 'POST',
						data: formdata,
						async: false
					});

					document.location = '/page21.aspx';

				} else {
					$elm('error').innerHTML = 'Der er ikke point nok at tildele!';
				}
			}
		}
	}

	this.DeleteUser = function (iduser, idcompany, that) {

		if (confirm('Er du sikker på du vil slette denne bruger og fjerne alle hans point?')) {
			that.innerHTML = '<img src="/media/throbber.gif" alt=""/>';

			$elm('error').innerHTML = '';
			var company = $ts.ajax({
				url: '/page25.aspx?recordid25=' + idcompany,
				type: 'GET',
				async: false
			});
			company = eval(company);
			var oldpoints = parseInt(data.records[0].point);

			var employee = $ts.ajax({
				url: '/page33.aspx?recordid33=' + iduser,
				type: 'GET',
				async: false
			});
			employee = eval(employee);
			var pointsavailableuser = parseInt(data.records[0].pointsavailable);

			var password = ps.MakeID(12);

			$ts.ajax({
				url: '/page36.aspx?validating=1&action36=send&userid=' + iduser,
				data: 'extrafield1156=0&password=' + password,
				type: 'POST',
				async: false
			});

			var data = $ts.ajax({
				url: '/page34.aspx?userid=' + iduser,
				type: 'GET',
				async: false
			});
			data = eval(data);

			for (i = 0; i < data.records.length; i++) {
				$ts.ajax({
					url: '/page35.aspx?action35=delete&recordid=' + data.records[i].id,
					type: 'GET',
					async: false
				});
			}

			newpoints = oldpoints + pointsavailableuser;
			formdata = 'point=' + newpoints;
			$ts.ajax({
				url: '/page24.aspx?action=post&recid=' + idcompany + '&layoutid=1&listid=-300006',
				type: 'POST',
				data: formdata,
				async: false
			});

			$ts.ajax({
				url: '/page22.aspx?validating=1&userid=' + iduser + '&action22=delete',
				type: 'GET',
				async: false
			});

			document.location.reload(true);
		}

	}

	this.AddToBasket = function (pageid, prodid, userpoints) {
		var count = $elm('amount').value;
		var price = count * parseInt($elm('theprice').innerHTML);
		var data = ps.GetLivePoints();
		var usedpoints = 0;
		if (data.length > 0) {
			usedpoints = parseInt(data[0].Totalsum);
		}
		usedpoints = userpoints - usedpoints;

		if (price <= usedpoints) {
			var sel = $elm('variants');
			var productid = prodid;
			if (sel) {
				productid = sel.options[sel.selectedIndex].value;
			}

			URL = '/page' + pageid + '.aspx?isbasket=1&pageid=' + pageid + '&listid=-300005&action=add&closeatonce=1&productid=' + productid + '&count=' + count;
			if (document.getElementById('MiniBasketPageId')) {
				URL = URL + '&minibasket=2&minibasketpageid=' + document.getElementById('MiniBasketPageId').innerHTML + '&rnd=' + new Date().getTime();
			}
			tsAjax.innerHTML(URL, 'tsAjax', 'default', null, null, ps.AddToBasketDone);
		} else {
			if (usedpoints > 0) {
				alert('Du kan kun købe for ' + usedpoints + ' point!');
			} else {
				alert('Du har ikke flere point tilrådighed!');
			}
		}
	}
	this.AddToBasketDone = function () {
		if (tsAjax.storage['default'].ajaxObj.readyState == 4) {
			alert('Vare lagt i kurv');
			if (document.getElementById('MiniBasketPageId')) {
				var obj = document.getElementById('MiniBasketFrame');
				obj.src = '/page' + document.getElementById('MiniBasketPageId').innerHTML + '.aspx?isbasket=1&pageid=' + document.getElementById('MiniBasketPageId').innerHTML + '&listid=-300005&minibasketbgload=1&rnd=' + RandomName(4);
			}
		}
	}

	this.InitProductDetail = function (productno) {
		var variants = $ts.ajax({
			url: '/page39.aspx?productno=' + productno,
			type: 'GET',
			async: false
		});
		variants = eval(variants);
		var max = data.records.length;
		if (max > 1) {

			var root = $elm('variantcontainer');
			var span = $ts.createElement('span', { 'className': 'vdlabel' });
			span.appendChild(document.createTextNode('Farve:'));

			var div = $ts.createElement('div', { 'className': 'vdcontent' });


			var sel = $ts.createElement('select', { 'id': 'variants' });
			sel.onchange = function () { ps.ChangeProductImage(sel) };


			for (var i = 0; i < max; i++) {
				var opt = $ts.createElement('option');
				opt.text = data.records[i].colorsize;
				opt.value = data.records[i].id;

				try {
					sel.add(opt, null);
				} catch (ex) {
					sel.add(opt);
				}
			}
			div.appendChild(sel);
			root.appendChild(span);
			root.appendChild(div);
		}
	}

	this.ChangeProductImage = function (that) {
		var prodid = that.options[that.selectedIndex].value;
		var data = $ts.ajax({
			url: '/page45.aspx?recordid44=' + prodid,
			type: 'GET',
			async: false
		});

		var reg = /<script .*>[\s\S]*<\/script>/ig;
		data = data.replace(reg, '');
		data = eval(data);

		var row = data.records[0];

		$elm('thumbnail').src = '/media/imagegenerator/169x0/' + row.imagefilename;
		$elm('thumbnail').setAttribute('rel', row.imagefilename);

		$elm('theprice').innerHTML = row.realprice;
	}

	this.ShowBigImage = function (that) {
		var filename = that.getAttribute('rel');

		LightBox.Open('<img src="/media/' + filename + '" alt=""/>');
	}

	this.ShowConditions = function () {
		lbid = new Date().getTime();
		LightBox.OpenPageContent(43, '', true, '#fff', null, null, { LightBoxId: lbid, Padding: '10' });
	}

	this.SetCompany = function (companyid) {
		var sel = $elms('select[name=extrafield1105]')[0];
		var root = sel.parentNode;
		var company = '';
		for (var i = 0; i < sel.options.length; i++) {
			var id = parseInt(sel.options[i].value);
			if (id === companyid) {
				sel.options[i].selected = true;
				company = sel.options[i].text;
			}
		}
		sel.style.display = 'none';
		root.appendChild(document.createTextNode(company));
	}

	this.CheckForMellemLeder = function (sublevel) {
		if (sublevel === 1) {
			document.location = '/page13.aspx';
		}
	}
	this.MakeID = function (length) {
		var text = "";
		var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

		for (var i = 0; i < length; i++)
			text += possible.charAt(Math.floor(Math.random() * possible.length));

		return text;
	}

	this.HideLogin = function (userid) {
		if (userid.length > 0) {
			$elm('navigationlistitem_15').style.display = 'none';
		}
	}

	this.SetCompanyBanner = function (companybanner) {
		if (companybanner.length > 0) {
			$elm('columnset1_column1').style.background = 'url(/media/' + companybanner + ')';
		}
	}

	this.UpdateUserSession = function (name, id) {

		var updated = $ts.getCookie('pssessionupdated' + id);
		if (updated != id) {
			$ts.ajax({
				url: '/page76.aspx?validating=1&action76=send',
				data: 'name=' + name,
				type: 'POST',
				complete: function () {
					document.location.reload(true);
					$ts.setCookie('pssessionupdated' + id, id, 1);
				}
			});
		}
	}

	this.CleanUpOrders = function (userid) {
		if (userid.length > 0) {
			var cleaned = parseInt($ts.getCookie('clean' + userid));
			if (isNaN(cleaned) || cleaned === 0) {
				var oldorders = ps.GetStaleOrders();

				var max = oldorders.length;
				for (var i = 0; i < max; i++) {
					ps.MarkStaleOrderDeleted(oldorders[i].id);
				}
				$ts.setCookie('clean' + userid, 1, 1);
			}
		}
	}

	this.GetLivePoints = function () {
		var data = $ts.ajax({
			url: '/page80.aspx',
			type: 'GET',
			async: false
		});
		data = eval(data);
		return data.records
	}

	this.GetStaleOrders = function () {
		var data = $ts.ajax({
			url: '/page81.aspx',
			type: 'GET',
			async: false
		});
		data = eval(data);
		return data.records;
	}

	this.MarkStaleOrderDeleted = function (orderid) {
		$ts.ajax({
			url: '/page83.aspx?action=post&recid=' + orderid + '&layoutid=1',
			type: 'POST',
			async: false,
			data: 'Status=4'
		});
	}
}

var ps = new PointShop();
