var Cookies = {};
Cookies.set = function(cookieName, id, p, t, u){
	var now = new Date();
	var expire_periode = 1000*60*60*24*30;
	var expire = new Date(now.getTime() + expire_periode);
 			
	if (cst_box_remember_check_duplicate(cookieName,id) == false) 
	{
		var cookie_value = id+'\\'+p+'\\'+t+'\\'+u+'|';
		if(Cookies.get(cookieName)) {
			var currentCookie = escape(Cookies.get(cookieName));
		} else {
			var currentCookie = '';
		}
		if (document.all) cookie_value = cst_box_decode_utf8(cookie_value); 	
		document.cookie = cookieName + "=" + currentCookie + escape(cookie_value) + ';path=/; expires=' + expire.toGMTString() + ';';
		
		cst_box_remember_items_get(cookieName);
		
		// notify user
		box_position = cst_box_element_position(document.getElementById('cst-remember-box')).x < ((document.all ? document.body.offsetWidth : window.innerWidth ) / 2 ) ? 'notice_left' : 'notice_right';
		var span = document.createElement('span');
		span.innerHTML = cst_box_remember_texts[box_position];
		alert(span.innerHTML);
	} else {
		cst_box_remember_items_get(cookieName);
	}			
};

Cookies.get = function(cookieName){
	var arg = cookieName + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	var j = 0;
	
	while(i < clen){
	j = i + alen;
	if (document.cookie.substring(i, j) == arg)
	return Cookies.getCookieVal(j);
	i = document.cookie.indexOf(" ", i) + 1;
	if(i == 0)
	break;
	}
	//return null;
};

Cookies.clear = function(cookieName) {
	if(Cookies.get(cookieName)){
		document.cookie = cookieName + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
};

Cookies.getCookieVal = function(offset){
	var endstr = document.cookie.indexOf(";", offset);
	if(endstr == -1){
		endstr = document.cookie.length;
	}
	return unescape(document.cookie.substring(offset, endstr));
};



function cst_box_remember_items_get(cookieName) {
	var data = Cookies.get(cookieName);	
	var isempty = true;
	
	if (data) {
		var items  = data.split( '|' );	
		var item = Array();
		var itemKey = 0;
		var html = '';
	
		for( var itemKey=0; itemKey<items.length; itemKey++ ) {
			item = items[ itemKey ].split( '\\' );
			if( item.length == 4 ) {
				isempty = false;
				
				html = html+'<tr><td class="width:100%;"><div class="name" style="overflow:hidden;"><a href="'+item[3]+'" class="note_link">'+item[2]+'</a></div></td>';
				html = html+'<td valign="top" style="white-space:nowrap;text-align:right;"><div class="price">'+item[1]+'</div></td></tr>';
				html = html+'<tr><td class="delete-link" colspan="2" style="border-bottom: 1px solid #FBF1D6;"><div><a href="javascript:remember_item_del( '+itemKey+',\''+cookieName+'\' );" class="note_del">'+cst_box_remember_texts['delete']+'</a></div></td></tr>';
			}
		}
	}
		
	if( isempty == true ) {
		document.getElementById( 'cst-remember-box' ).innerHTML = '<div class="nothing">'+cst_box_remember_texts['nothing']+'</div>';
		document.getElementById( 'cst-remember-button' ).style.display = 'none';
	} else {
		document.getElementById( 'cst-remember-button' ).style.display = 'inline';
		document.getElementById( 'cst-remember-box' ).innerHTML = '<table border="0" cellpadding="0" cellspacing="0" width="100%">'+html+'</table>';
	}
}

function cst_box_element_position(element) {
	var elem=element,tagname="",x=0,y=0;
	
	while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined")) {
		y+=elem.offsetTop;
		x+=elem.offsetLeft;
		tagname=elem.tagName.toUpperCase();
		
		if ( (document.all && tagname=="HTML") || tagname=="BODY" ) elem=0;
		
		if (typeof(elem)=="object")
		if (typeof(elem.offsetParent)=="object")
		elem=elem.offsetParent;
	}
	
	position=new Object();
	position.x=x;
	position.y=y;
	return position;
}
	
	
function remember_item_del(id,cookieName) {
	var data = Cookies.get(cookieName);
	
	if (data) {
		var items  = data.split( '|' );	
		var itemKey = 0;
		var str = '';
		var now = new Date();
		var expire_periode = 1000*60*60*24*30;
		var expire = new Date(now.getTime() + expire_periode);
		
		for( itemKey in items ) {			
			if( ( itemKey != id ) && ( itemKey < ( items.length + 1 ) ) ) {
				str += items[ itemKey ]+'|';
			} else {
			}
			document.cookie = cookieName + '='+escape(str)+';path=/; expires='+expire.toGMTString()+';';
			cst_box_remember_items_get(cookieName);
		}
	}
 }	
 
function cst_box_remember_check_duplicate(cookieName,id) {
	var data = Cookies.get(cookieName);
	var status = false;
	
	if (data) {
		var items = data.split( '|' );	
		var item = Array();
		var itemKey = 0;
		
		for(itemKey in items) {
			item = items[itemKey].split( '\\' );
			
			//checks completeness
			if(item.length == 4) {
				if (item[0] == id) {
					return true;
				} else {
					status = false;
				}
			}
		}
	}
	return status;
} 

function cst_box_decode_utf8(utftext) {
	var plaintext = ""; var i=0; var c=c1=c2=0;
	// while-Schleife, weil einige Zeichen uebersprungen werden
	while(i<utftext.length) {
		c = utftext.charCodeAt(i);
		if (c<128) {
			plaintext += String.fromCharCode(c);
			i++;
		} else if((c>191) && (c<224)) {
			c2 = utftext.charCodeAt(i+1);
			plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
			i+=2;
		} else {
			c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
			plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
			i+=3;
		}
	}
	return plaintext;
}
