function Bookmarker( HTMLHolder){
	this.HTMLHolder = HTMLHolder;
	this.construct();
}

Bookmarker.prototype.construct = function(desc, link){
	var state = Bookmarker.readAll();
	for(var i in state){
		if(i.indexOf("BM") != -1 && i.indexOf("URL") == -1){
			this.addBookmark( state[i], state[i+"URL"], i);
		}
	}
	Bookmarker.bmIcon = document.createElement("IMG");
	Bookmarker.bmIcon.src = "/simgs/icon_bm.gif";
	Bookmarker.bmIcon.style.position = "absolute";
	Bookmarker.bmIcon.style.display = "none";
	document.body.appendChild( Bookmarker.bmIcon);
}

Bookmarker.count = 0;
Bookmarker.bms = [];

Bookmarker.prototype.addBookmark = function(desc, link, id){
	var desc1 = "";
	var desc2 = "";
	var pos = 0;
	
	if(desc.indexOf("::") != -1){
		pos = desc.lastIndexOf("::") + 2;
	}
	if(desc.indexOf("|") != -1)
		desc1 = desc.substring( pos, desc.indexOf("|"));
	else
		desc1 = desc.substring( pos, desc.length);
	if(desc.indexOf(",") != -1)
		desc2 = desc.substring( pos, desc.indexOf(","));
	
	this.desc = (desc1.length > desc2.length) ? ((desc2.length > 0) ? desc2 : desc1) : ((desc1.length > 0) ? desc1 : desc2);
	this.link = link;
	
	if(Bookmarker.count == 10){
		alert("Bookmark count exceeded");
		return;
	}
	if(id){
		this.id = id;
	}
	else{
		Bookmarker.animate("imgAuxNavBar", "imgBMSection")
		var id_new = "BM" + Math.floor(100000*Math.random());
		this.id = id_new;
		Bookmarker.save(this.id, this.desc, this.link);
	}
	Bookmarker.bms[this.id] = this;
	Bookmarker.count++;

	var bmRow = document.createElement("TR");
	this.HTMLHolder.getElementsByTagName("TBODY")[0].appendChild(bmRow);
	
	var bmCell = document.createElement("TD");
	bmRow.appendChild(bmCell);
	
	bmCell.style.padding = 5;
	bmCell.className ="horizontalMenuItem";
	bmCell.innerHTML ='<img src=/simgs/but_close_bm.gif style="float:right;margin:3;width:9;height:9;cursor:pointer" id=' + this.id + 
							' onclick="Bookmarker.delBookmark(this)"><a class=regLink href="' + this.link +
							'">' + this.desc + '</a>';
}

Bookmarker.delBookmark = function( HTMLElement){
	delete Bookmarker.bms[HTMLElement.id];
	Bookmarker.count--;
	HTMLElement.parentNode.parentNode.parentNode.removeChild(HTMLElement.parentNode.parentNode);
	Bookmarker.saveAll();
}

Bookmarker.save = function(id, desc, link){
	window.name += id + "=" + desc + ";";
	window.name += id + "URL=" + link + ";";
}

Bookmarker.saveAll = function(){
	window.name = "";
	for(var i in this.bms){
		this.save(i, this.bms[i].desc, this.bms[i].link);
	}
}

Bookmarker.readAll = function(){
	var args = window.name.split( /;|=/g );
	var ar = [];
	for( var i=0; i<args.length; i++ ){
		ar[args[i]] = args[i+1];
	}
	return ar;
}

Bookmarker.animate = function(fromId, toId){
	var fromCoords = Item.getObjectCoords( document.getElementById(fromId));
	var toCoords 	= Item.getObjectCoords( document.getElementById(toId));

	var timer1;
	var steps	= 7;
	toCoords[0] = toCoords[0] + document.getElementById(toId).offsetWidth
	var stepX	= (toCoords[0] - fromCoords[0]) / steps;
	var stepY	= (toCoords[1] - fromCoords[1]) / steps;
	
	var counter = 1;
	
	timer1 = setInterval(function(){
		Bookmarker.bmIcon.style.display 	= "block";
		Bookmarker.bmIcon.style.left 		= fromCoords[0] + counter * stepX;
		Bookmarker.bmIcon.style.top 		= fromCoords[1] + counter * stepY;
		counter++;
		if( counter > steps){
			Bookmarker.bmIcon.style.display 	= "none";
			clearInterval(timer1);
			counter=1;
		}
	},
	50);
}
