/********************************************************************
* cart.js                                                           *
*                                                                   *
* Copyright 1999, by Martin Holm Christensen.                       *
* Web:   http://www.global-vision.dk                                *
* Email: martin@global-vision.dk                                    *
*                                                                   *
* Last updated October 25, 1999.                                    *
*                                                                   *
* These functions allow multiple shopping carts to be added to any  *
* web page                       .                                  *
*                                                                   *
* External mainfunction calls:                                      *
*   initCart(name,title,details)                                    *
*   cart[name].set(id,width,length,area,country,price,quantity)     *
*   cart[name].reset(id)                                            *
*   cart[name].show()                                               *
*   cart[name].order()                                              *
*                                                                   *
********************************************************************/

/*******************************************************************/
if (parent == self) {parent.location.href="../index.htm";}
window.status="";
/*******************************************************************/
function initCart(name,title,details) {
	if (name == null) return;
	cart[name] = new cart();
	cart[name].name = name;
	cart[name].title = title;
	cart[name].details = details;
}
/*******************************************************************/
function sortKeys (object) {
	this.length = 0;
	for (var a in object) {
		var pos = 1;
		while (pos <= this.length) {
			if (this[pos] > a) break;
			pos++;
		}
		for (var i = this.length;i >= pos; i--) this[i+1] = this[i];
		this[pos]=a;
		this.length++;
	}
	return this;
}
/*******************************************************************/
function entry(id,width,length,area,country,price,quantity) {
	this.id = id;
	this.width = width;
	this.length = length;
	this.area = area;
	this.country = country;
	this.price = price;
	return this;
}
/*******************************************************************/
function set(id,width,length,area,country,price,quantity) {
	this.fromCookie();
	var item = new entry(id,width,length,area,country,price,quantity);
	if (item == null) return;
	this.cart[item.id] = quantity;
	this.entries[item.id]=item;
	document.cookie = this.toCookie();
}
/*******************************************************************/
function reset(id) {
	this.fromCookie();
	var item = new entry(id);
	if (item == null) return;
	var temp = new array();
	for (var a in this.cart) {
		if (a != item.id) temp[a] = this.cart[a];
	}
	this.cart = temp;
	document.cookie = this.toCookie();
}
/*******************************************************************/
function formatAsPrice(price) {
	var cents = Math.floor((100*price)%100);
	var dollars = Math.floor(price);
	if (cents == 0) cents = "00";
	else if (cents < 10) cents = "0" + cents;
	return dollars + "." + cents;
}
/*******************************************************************/
function list() {
  var totalPrice = 0.0;
  var result = "<table border>"
  result += "<th><font size=2 face='arial,helvetica' color='#666666'>Varenr.";
  result += "<th><font size=2 face='arial,helvetica' color='#666666'>Beskrivelse";
  result += "<th><font size=2 face='arial,helvetica' color='#666666'>Antal";
  result += "<th><font size=2 face='arial,helvetica' color='#666666'>Pris";
  var keys = new sortKeys(this.cart);
  for ( i = 1; i <= keys.length; i++ ) {
    var a = keys[i];
    var id = this.entries[a].id;
    var width = this.entries[a].width;
    var length = this.entries[a].length;
    var area = this.entries[a].area;
    var country = this.entries[a].country;
    var price = this.entries[a].price;
    result += "<tr><td><font size=2 face='arial,helvetica' color='#666666'>" + id +
	      "<td><font size=2 face='arial,helvetica' color='#666666'>" + width + "" + length + "" + area + "" + country +
              "<td><font size=2 face='arial,helvetica' color='#666666'>" + this.cart[a] + 
	      "<td><font size=2 face='arial,helvetica' color='#666666'>kr. " + this.entries[a].price*this.cart[a];
    totalPrice += this.entries[a].price * this.cart[a];
  }
  result += "<tr><td><td><th><font size=2 face='arial,helvetica' color='#666666'>Ialt<td><font size=2 face='arial,helvetica' color='#666666'>kr. " + formatAsPrice(totalPrice);
  result += "</table>";
  return result;
}
/*******************************************************************/
function toCookie() {
	var theCookie,today;
	theCookie = '@CART' + this.name + '@=';
	for (var a in this.cart) {
		var cookieId = this.entries[a].id;
		var cookieWidth = this.entries[a].width;
		var cookieLength = this.entries[a].length;
		var cookieArea = this.entries[a].area;
		var cookieCountry = this.entries[a].country;
		var cookiePrice = this.entries[a].price;
		var cookieQuantity = this.cart[a];
		theCookie += "|" + cookieId + "|" + cookieWidth + "|" + cookieLength + "|" + cookieArea + "|" + cookieCountry + "|" + cookiePrice + "|" + cookieQuantity + "|";
	}
	expires = new Date;
	expires.setTime(expires.getTime() + 1000*60*60*24); // 24 hours until expiring
	theCookie += "; expires=" + expires;
	return theCookie;
}
/*******************************************************************/
function fromCookie() {
	var string = '@CART' + this.name + '@=';
	var start = document.cookie.indexOf(string);
	if (start == -1) { return; }
	start += string.length;
	var end = document.cookie.indexOf(';',start);
	if (end == -1) { end = document.cookie.length; }
	if ((start == -1) || (start >= end)) { var string = ''; }
	else { var string = document.cookie.substring(start,end); }
	start = 0;
	this.cart = new array();
	while (start < string.length) {
		var barA = string.indexOf("|",start+1);
		var barB = string.indexOf("|",barA+1);
		var barC = string.indexOf("|",barB+1);
		var barD = string.indexOf("|",barC+1);
		var barE = string.indexOf("|",barD+1);
		var barF = string.indexOf("|",barE+1);
		var barG = string.indexOf("|",barF+1);
		var barH = string.indexOf("|",barG+1);
		var cookieId = string.substring(start+1,barA);
		var cookieWidth = string.substring(barA+1,barB);
		var cookieLength = string.substring(barB+1,barC);
		var cookieArea = string.substring(barC+1,barD);
		var cookieCountry = string.substring(barD+1,barE);
		var cookiePrice = string.substring(barE+1,barF);
		var cookieQuantity = string.substring(barF+1,barG);
		var item = new entry(cookieId,cookieWidth,cookieLength,cookieArea,cookieCountry,cookiePrice,cookieQuantity);
		if (item == null) return;
		this.cart[item.id] = cookieQuantity;
		this.entries[item.id]=item;
		start = barG + 1;
		if (start == -1) start = string.length;
	}
	return string;
}
/*******************************************************************/
function show() {
	var string = this.fromCookie();
  var totalPrice = 0.0;
	var	result = '<font face="Arial" size="4">' + this.title + '</font><form name="cart' + this.name + '"><table width="400">';
	if (string != null) {
		result += '<tr><td height="25" valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Område</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Bredde</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Længde</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Pris</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861">&nbsp;</td></tr>';
	}
	else {
		result += '<tr><td height="25" valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Område</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Bredde</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Længde</b></font></td>';
		result += '<td valign="middle" bgcolor="#0c3861"><font color="#ffffff"><b>Pris</b></font></td></tr>';
	}
	for ( var a in this.cart ) {
		result += '<tr><td height="25" valign="middle" align="left" bgcolor="#0c3861"><font color="#999999">';
		result += '<a href="response.asp?id=' + this.entries[a].id + '">' + this.entries[a].area + ', ' + this.entries[a].country + '</a></font></td>';
		result += '<td valign="middle" align="left" bgcolor="#0c3861"><font color="#999999">';
		result += '<a href="response.asp?id=' + this.entries[a].id + '">' + this.entries[a].width + '</a></font></td>';
		result += '<td valign="middle" align="left" bgcolor="#0c3861"><font color="#999999">';
		result += '<a href="response.asp?id=' + this.entries[a].id + '">' + this.entries[a].length + '</a></font></td>';
		result += '<td valign="middle" align="left" bgcolor="#0c3861"><font color="#999999">';
		result += '<a href="response.asp?id=' + this.entries[a].id + '">' + this.entries[a].price*this.cart[a] + '</a></font></td>';
		result += '<td valign="middle" align="center" bgcolor="#0c3861"><center><input type="button" value="Slet" name="' + this.entries[a].id + '" size="20" onclick="';
		result += "javascript:cart[" + this.name + "].reset('" + this.entries[a].id + "'";
		result += '); self.location = self.location"></center></td></tr>';
    totalPrice += this.entries[a].price * this.cart[a];
  }
	if (string != null) {
		if (this.details == 'full') {
		result += '<tr><td height="25" valign="middle" align="left" bgcolor="#0c3861" colspan="3"><font color="#ffffff">Total</font></td>';
		result += '<td valign="middle" align="left" bgcolor="#0c3861"><font color="#999999">' + totalPrice + '</font></td><td valign="top" bgcolor="#0c3861">&nbsp;</td></tr>';
		}
	}
	else {
		result += '<tr><td height="25" valign="middle" align="center" bgcolor="#0c3861" colspan="4"><font color="#999999">Tom</font></td>';
		result += '</div></tr>';
	}
		result += '</table></form><br><br>';
	document.write(result);
}
/*******************************************************************/
function fixKeyCode(theString) {
	var newString = "";
	for (var i=0; i<theString.length; i++) {
		if (theString.charAt(i) == "æ") newString += "ae";
		else if (theString.charAt(i) == "ø") newString += "oe";
		else if (theString.charAt(i) == "å") newString += "aa";
		else if (theString.charAt(i) == "Æ") newString += "Ae";
		else if (theString.charAt(i) == "Ø") newString += "Oe";
		else if (theString.charAt(i) == "Å") newString += "Aa";
    else newString += theString.charAt(i);
  }
  return newString;
}
/*******************************************************************/
function order() {
		var orderValue = '\n';
		var result = '<html><head><title>Bestilling</title></head><body bgcolor=white background="wall.gif">';
		result += '<font size=4 face="arial,helvetica" color="#666666"><b>Bestilling</b></font><br><br>';
		result += '<font size=2 face="arial,helvetica" color="#666666"><b>Se venligst varelisten igennem inden De trykker SEND</b></font>';
		result += '<form method="post" action="http://www.danbbs.dk/cgi-bin/formmail.pl">';
		result += '<input type=hidden name="print_config" value="email,realname">';
		result += '<input type=hidden name="recipient" value="bestilling@persodan.dk">';
		result += '<input type=hidden name="subject" value="WWW-bestilling">';
		result += '<input type=hidden name="env_report" value="REMOTE_HOST,REMOTE_ADDR,REMOTE_USER,REMOTE_IDENT,HTTP_USER_AGENT">';
		result += '<input type=hidden name="redirect" value="javascript:window.close();">';
		for (var j in cart) {
		var totalPrice = 0.0;
		result += '<font size=2 face="arial,helvetica" color="#666666"><b>' + cart[j].title + ':</b></font>';
		orderValue += fixKeyCode(cart[j].title) + '\n================================================================\n';
		orderValue += 'Id -=|=- Area, Country -=|=- Width*Length -=|=- Price:\n';
		orderValue += '----------------------------------------------------------------\n';
		result += '<table border="1" width="350"><tr>';
		result += '<th width="150" align="left" valign="middle"><font size=2 face="arial,helvetica" color="#666666">Område</font></th>';
		result += '<th width="60" align="left" valign="middle"><font size=2 face="arial,helvetica" color="#666666">Bredde</font></th>';
		result += '<th width="60" align="left" valign="middle"><font size=2 face="arial,helvetica" color="#666666">Længde</font></th>';
		result += '<th width="80" align="left" valign="middle"><font size=2 face="arial,helvetica" color="#666666">Pris</font></th></tr>';
			for ( var a in cart[j].cart ) {
		result += '<tr>'
		result += '<td align="left" valign="middle" bgcolor="#ffffff"><font size=2 face="arial,helvetica" color="#333333">' + cart[j].entries[a].area + ', ' + cart[j].entries[a].country + '</font></td>';
		result += '<td align="left" valign="middle" bgcolor="#ffffff"><font size=2 face="arial,helvetica" color="#333333">' + cart[j].entries[a].width + '</font></td>';
		result += '<td align="left" valign="middle" bgcolor="#ffffff"><font size=2 face="arial,helvetica" color="#333333">' + cart[j].entries[a].length + '</font></td>';
		result += '<td align="left" valign="middle" bgcolor="#ffffff"><font size=2 face="arial,helvetica" color="#333333">kr. ' + formatAsPrice(cart[j].entries[a].price*cart[j].cart[a]) + '</font></td></tr>';
				totalPrice += cart[j].entries[a].price * cart[j].cart[a];
			}
			var keys = new sortKeys(cart[j].cart);
		  for (i = 1; i <= keys.length; i++) {
				var a = keys[i];
		orderValue += fixKeyCode(cart[j].entries[a].id) + ' -=|=- ' + fixKeyCode(cart[j].entries[a].area) + ', ' + fixKeyCode(cart[j].entries[a].country) + ' -=|=- ';
		orderValue += cart[j].entries[a].width + '*' + cart[j].entries[a].length + '  -=|=- kr. ' + formatAsPrice(cart[j].entries[a].price*cart[j].cart[a]) + '\n';
			}
			if ((totalPrice != 0.0) && (cart[j].details == 'full')) {
		orderValue += '----------------------------------------------------------------\n';
		orderValue += 'Total med moms: \t\tkr. ' + formatAsPrice(totalPrice) + '\n';
		orderValue += '25% moms heraf udgoer: \tkr. ' + formatAsPrice((totalPrice*2)/10) + '\n';
		result += '<tr><th align="left" valign="middle" colspan="3"><font size="2" face="arial,helvetica" color="#666666">Ialt</th><td align="left" valign="middle" bgcolor="#ffffff"><font size="2" face="arial,helvetica" color="#333333">kr. ' + formatAsPrice(totalPrice) + '</td></tr>';
			}
			else if (totalPrice == 0.0) {
		result += '<tr><td align="middle" valign="middle" colspan="4" bgcolor="#ffffff"><font size="2" face="arial,helvetica" color="#333333">tom</td></tr>';
			}
		orderValue += '================================================================\n\n';
		result += '</table><br>';
		}
	  result += '<table>';
	  result += '<tr><th align="right"><font size=2 face="arial,helvetica" color="#666666">Deres navn:</font></th><td><input type="text" name="realname" value="" maxlen="50"></td>';
	  result += '<tr><th align="right"><font size=2 face="arial,helvetica" color="#666666">Deres e-mail:</font></th><td><input type="text" name="email" value="" maxlen="50"></td>';
	  result += '</table><br>';
	  result += '<font size=2 face="arial,helvetica" color="#666666"><b>Adresse hvor De ønsker leveret til:</b></font><br>';
	  result += '<textarea name="address" value="" rows=4 cols=41></textarea><br><br>';
	  result += '<input type="hidden" name="order" value="' + orderValue + '">';
	  result += '<input type="submit" value="SEND">&nbsp;&nbsp;&nbsp;&nbsp;';
	  result += '<input type="reset" value="SLET"">&nbsp;&nbsp;&nbsp;&nbsp;';
	  result += '<input type="button" value="LUK" onClick="window.close()">';
	  result += '</form>';
	  result += '</body></html>';
	orderWin = window.open("","Bestilling","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=387,height=420");
	orderWin.document.clear();
	orderWin.document.writeln(result);
	orderWin.document.close();
}
/*******************************************************************/
function array() {
}
/*******************************************************************/
function cart() {
	this.name = '';
	this.title = '';
	this.details = 'normal';
  this.cart = new array();
  this.entries = new array();
  this.fromCookie = fromCookie;
  this.toCookie = toCookie;
  this.set = set;
  this.reset = reset;
  this.list = list;
	this.show = show;
	this.order = order;
  return this;
}
/*******************************************************************/
