function go(url) {
window.open(url, '', 'height=450,width=600, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no');
}

function go_size(url, x, y) {
var args = 'height=' + y + ', width=' + x + ',, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, directories=no, status=no';
window.open(url, '', args);
}

function go2(url) {
if (!window.open(url, '', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=400,height=400,left=20,top=20')) {
	this.document.location.href = url;
}
}

// The constructor function: creates a cookie object for the specified
// document, with a specified name and optional attributes.
// Arguments:
//   document: The Document object that the cookie is stored for. Required.
//   name:     A string that specifies a name for the cookie. Required.
//   hours:    An optional number that specifies the number of hours from now
//             that the cookie should expire.
//   path:     An optional string that specifies the cookie path attribute.
//   domain:   An optional string that specifies the cookie domain attribute.
//   secure:   An optional Boolean value that, if true, requests a secure cookie.
//
function Cookie(document, name, hours, path, domain, secure)
{    // All the predefined properties of this object begin with '$'
    // to distinguish them from other properties which are the values to
    // be stored in the cookie.
    this.$document = document;
    this.$name = name;
    if (hours)
        this.$expiration = new Date((new Date()).getTime() + hours*3600000);
    else this.$expiration = null;
    if (path) this.$path = path; else this.$path = null;
    if (domain) this.$domain = domain; else this.$domain = null;
    if (secure) this.$secure = true; else this.$secure = false;
}

// This function is the store() method of the Cookie object.
function _Cookie_store()
{
    // First, loop through the properties of the Cookie object and
    // put together the value of the cookie. Since cookies use the
    // equals sign and semicolons as separators, we'll use colons
    // and ampersands for the individual state variables we  store
    // within a single cookie value. Note that we escape the value
    // of each state variable, in case it contains punctuation or other
    // illegal characters.
    var cookieval = "";
    for(var prop in this) {
        // Ignore properties with names that begin with '$' and also methods.
        if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function'))
            continue;
        if (cookieval != "") cookieval += '&';
        cookieval += prop + ':' + escape(this[prop]);
    }

    // Now that we have the value of the cookie, put together the
    // complete cookie string, which includes the name and the various
    // attributes specified when the Cookie object was created.
    var cookie = this.$name + '=' + cookieval;
    if (this.$expiration)
        cookie += '; expires=' + this.$expiration.toGMTString();
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    if (this.$secure) cookie += '; secure';

    // Now store the cookie by setting the magic Document.cookie property.
    this.$document.cookie = cookie;
}
// This function is the load() method of the Cookie object.
function _Cookie_load()
{
    // First, get a list of all cookies that pertain to this document.
    // We do this by reading the magic Document.cookie property.
    var allcookies = this.$document.cookie;
    if (allcookies == "") return false;

    // Now extract just the named cookie from that list.
    var start = allcookies.indexOf(this.$name + '=');
    if (start == -1) return false;   // Cookie not defined for this page.
    start += this.$name.length + 1;  // Skip name and equals sign.
    var end = allcookies.indexOf(';', start);
    if (end == -1) end = allcookies.length;
    var cookieval = allcookies.substring(start, end);

    // Now that we've extracted the value of the named cookie, we've
    // got to break that value down into individual state variable
    // names and values. The name/value pairs are separated from each
    // other by ampersands, and the individual names and values are
    // separated from each other by colons. We use the split method
    // to parse everything.
    var a = cookieval.split('&');    // Break it into array of name/value pairs.
    for(var i=0; i < a.length; i++)  // Break each pair into an array.
        a[i] = a[i].split(':');

    // Now that we've parsed the cookie value, set all the names and values
    // of the state variables in this Cookie object. Note that we unescape()
    // the property value, because we called escape() when we stored it.
    for(var i = 0; i < a.length; i++) {
        this[a[i][0]] = unescape(a[i][1]);
    }

    // We're done, so return the success code.
    return true;
}

// This function is the remove() method of the Cookie object.
function _Cookie_remove()
{
    var cookie;
    cookie = this.$name + '=';
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';

    this.$document.cookie = cookie;
}

// Create a dummy Cookie object, so we can use the prototype object to make
// the functions above into methods.
new Cookie();
Cookie.prototype.store = _Cookie_store;
Cookie.prototype.load = _Cookie_load;
Cookie.prototype.remove = _Cookie_remove;

function addToCart(product) {
//	var cartdata = new Cookie(document, "cart", 24, "/", ".scarletquince.com");
	var cartdata = new Cookie(document, "cart", 24, "/");
	if (!cartdata.load() ) {
		cartdata.cart = product+ ",1";
	} else {
		var cookieval = cartdata.cart;
        cartdata.cart = "";
		var pats = cookieval.split("/");
		var found = false;
		for (var i=0; i<pats.length; i++) {
		  var p = pats[i].split(",");
		  if (p[0] == product) {
			found=true;
	        p[1]++;
			pats[i] = p[0] + "," + p[1];
		  }
		  cartdata.cart += (cartdata.cart != "" ? "/" : "") + pats[i];
		}
		if (!found) cartdata.cart += (cartdata.cart != "cart:" ? "/" : "") + product + ",1";
	}
	cartdata.store();
}

function addCertToCart(giver, recip, persnote, amt) {
	var cartdata = new Cookie(document, "cart", 24, "/");
	if (!cartdata.load() ) {
		cartdata.cart = "GIFTCERT,1," + giver + "," + recip + "," + persnote + "," + amt;
	} else {
		var cookieval = cartdata.cart;
		cartdata.cart += (cartdata.cart != "cart:" ? "/" : "") + "GIFTCERT,1," + giver + "," + recip + "," + persnote + "," + amt;
	}
	cartdata.store();
}

function addToCartQty(product, qty ) {
	var cartdata = new Cookie(document, "cart", 24, "/");
	if (!cartdata.load() ) {
		cartdata.cart = product+ "," + qty;
	} else {
		var cookieval = cartdata.cart;
        cartdata.cart = "";
		var pats = cookieval.split("/");
		var found = false;
		for (var i=0; i<pats.length; i++) {
		  var p = pats[i].split(",");
		  if (p[0] == product) {
			found=true;
			p[1] = parseInt(p[1]) + parseInt(qty);
			pats[i] = p[0] + "," + p[1];
		  }
		  cartdata.cart += (cartdata.cart != "" ? "/" : "") + pats[i];
		}
		if (!found) cartdata.cart += (cartdata.cart != "cart:" ? "/" : "") + product + "," + qty;
	}
	cartdata.store();
}

// this function does not need to be aware of user cookies
// it's only used by load_cart.php
function addToCartQtyFree(product, qty, free ) {
	var cartdata = new Cookie(document, "cart", 24, "/");
	if (!cartdata.load() ) {
		cartdata.cart = product+ "," + qty + "," + free
	} else {
		var cookieval = cartdata.cart;
        cartdata.cart = "";
		var pats = cookieval.split("/");
		var found = false;
		for (var i=0; i<pats.length; i++) {
		  var p = pats[i].split(",");
		  if (p[0] == product && p[2] == free) {
			found=true;
			p[1] = parseInt(p[1]) + parseInt(qty);
			pats[i] = p[0] + "," + p[1] + "," + p[2];
		  }
		  cartdata.cart += (cartdata.cart != "" ? "/" : "") + pats[i];
		}
		if (!found) cartdata.cart += (cartdata.cart != "cart:" ? "/" : "") + product + "," + qty + "," + free;
	}
	cartdata.store();
}

function updateCart( ) {
	var cartdata = new Cookie(document, "cart", 24, "/");
	if (!cartdata.load() ) {
		return 1;  // this shouldn't happen
	}	
	var cookieval = cartdata.cart;
	cartdata.cart = "";
	var parts = cookieval.split("/");
	var max = parts.length;
	for (var i=0; i<max; i++) {
	  var num = (max > 1) ? document.cart_form.jqty[i].value : document.cart_form.jqty.value;
	  if (num > 0) {
        var pat = parts[i].split(",");
		cartdata.cart += (cartdata.cart != "" ? "/" : "") + pat[0] + "," + num;
		if (pat.length > 2) {
			cartdata.cart += "," + pat[2];
		}
		if (pat[0] == 'GIFTCERT') {
			cartdata.cart += "," + pat[3] + "," + pat[4] + "," + pat[5];
		}
	  }
	}
	if (cartdata.cart == "") {
	  cartdata.remove();
	} else {
	  cartdata.store();
	}
}

function numInCart() {
//	var cartdata = new Cookie(document, "cart", 24, "/");
	var cartdata = new Cookie(document, "cart", 24, "/");
	var total = 0;
	if (cartdata.load() ) {
		var parts = cartdata.cart.split("/");
		for (var i=0; i<parts.length; i++) {
			var pat = parts[i].split(",");
			total += parseInt(pat[1]);
		}	
		return total;
	} else {
		return 0;
	}
}

function wslogin(id, discount) {
	var login = new Cookie(document, "login", .3, "/");  // .3 = 18 minutes
	login.id = id;
	login.store();
	var wsdisc = new Cookie(document, "discount", 0, "/");
	wsdisc.discount = discount;
	wsdisc.store();
	var session = new Cookie(document, "session", 0, "/");  
	session.yes = "";
	session.store();
}

function wslogout() {
	var login = new Cookie(document, "login", .3, "/");
	if (login.load()) {
		login.remove();
	}	
    var session = new Cookie(document, "session", 0, "/");
	if (session.load()) {
		session.remove();
	}
	var wsdisc = new Cookie(document, "wsdisc", 0, "/");
	if (wsdisc.load()) {
		wsdisc.remove();
	}	
}

// as long as they're active keep refreshing the login cookie
function wspoke() {
	var login = new Cookie(document, "login", .3, "/");
	if (login.load()) {
		login.store();
	}
}

// note whether they've looked at the patterns page before
function cookie_visit(arg) {
	var visit = new Cookie(document, "visit", 0, "/");
	visit.order = arg;
	visit.store();
}

// remember whether they like images in the cart or not
function cookie_cartimage(arg) {
	var c = new Cookie(document, "cartimg", 24*365*25, "/");
	c.img = arg;
	c.store();
}

function addToWishlist(product) {
	var cartdata = new Cookie(document, "wishlist", 24*365*25, "/");
	if (!cartdata.load() ) {
		cartdata.wishlist = product;
	} else {
		var cookieval = cartdata.wishlist;
		var pats = cookieval.split("/");
		var found = false;
		for (var i=0; i<pats.length; i++) {
		  if (pats[i] == product) {
			found=true;
			break;
		  }
		}
		if (!found) cartdata.wishlist += (cartdata.wishlist != "" ? "/" : "") + product;
	}
	cartdata.store();
}

