var myElevator;

if(window.opera){		//OP
	var elv_old_onl = window.onload;
	window.onload = (typeof elv_old_onl != 'function') ? function(){myElevator.display();} : function(e) { elv_old_onl(e); myElevator.display();};
	delete elv_old_onl;
}else if(window.addEventListener){	// N6 or IE or Firefox
	window.addEventListener("load",function(){myElevator.display();},true);
}else if(window.attachEvent){
	window.attachEvent("onload",function(){myElevator.display();});
}

var Elevator = Class.create();

Elevator.prototype = {
	mainid: 'container',
	offset_x: 8,
	offset_y: 150,
	image_path: '/eximg/item/main/s58/',
	noimage_file: '/ex/image/noimage.gif',
	cookie_period: 1, // 30days
	cookie_path: '/',
	cookie_name: 'dm_history',
	gain_x: 0,
	gain_y: 0,
	move_flag: 0,
	displayed: 0,

	initialize: function(item_code){
		var i,j,js,qus,qu;
		var display_flag = 1;
		var scriptsTags = document.getElementsByTagName('script');
		for(i = 0; i < scriptsTags.length; i++){
			js = scriptsTags[i].getAttribute('src').split('?')[0].split('/');
			if(js[js.length - 1] == 'elevator.js'){
				qus = scriptsTags[i].getAttribute('src').split('?');
				if(qus.length > 1){
					qus = qus[1].split('&');
					for(j = 0; j < qus.length; j++){
						qu = qus[j].split('=');
						if(qu[0] == 'display'){
							if(qu[1] == 'none' || qu[1] == 'false'){
								display_flag = 0;
							}
						}else if(qu[0] == 'additem'){
							this.additem_cookie(qu[1]);
						}
					}
				}
				break;
			}
		}
		if(item_code){
			this.additem_cookie(item_code);
		}
		return this;
	},
	display: function(){
		if(this.displayed == 0){
			this.displayed = 1;
			this.creatElevatorBox();
			if(this.insertContents()){
				this.setGain();
				Element.setStyle(this.elevElement, {top: this.gain_y+'px', left: this.gain_x+'px', display: 'block'});

				window.onresize = this.move.bindAsEventListener(this);
				if(window.onscroll){
					window.onscroll = this.move.bindAsEventListener(this);
				}else{
					this.timer_check = setTimeout(this.move_check.bind(this), 100);
				}
			}
		}
	},

	move_check: function(){
		this.setGain();
		if(this.move_flag == 0){
			this.move_flag = 1;
			this.timer = setTimeout(this.move_anim.bind(this), 50);
		}
		this.timer_check = setTimeout(this.move_check.bind(this), 100);
	},

	move: function(){
		this.setGain();
		if(this.move_flag == 0){
			this.move_flag = 1;
			this.timer = setTimeout(this.move_anim.bind(this), 50);
		}
	},

	move_anim: function(){
		old_y = Position.cumulativeOffset(this.elevElement)[1];
		old_y = this.gain_y - (this.gain_y - old_y) * 7 / 10;
		Element.setStyle(this.elevElement, {top: old_y+'px', left: this.gain_x+'px'});
		if(this.gain_y - old_y > -1 && this.gain_y - old_y < 1){
			Element.setStyle(this.elevElement, {top: this.gain_y+'px', left: this.gain_x+'px'});
			this.move_flag = 0;
			clearTimeout(this.timer);
		}else{
			clearTimeout(this.timer);
			this.timer = setTimeout(this.move_anim.bind(this), 50);
		}
	},

	setGain: function(){
		var cw;
//		this.gain_x = Position.cumulativeOffset($(this.mainid))[0] + Element.getDimensions($(this.mainid)).width + this.offset_x;
		if(document.documentElement.clientWidth){
			cw = document.documentElement.clientWidth - Element.getDimensions(this.elevElement).width + document.documentElement.scrollLeft;
		}else{
			cw = document.body.clientWidth - Element.getDimensions(this.elevElement).width + document.documentElement.scrollLeft;
		}
		this.gain_x = Position.cumulativeOffset($(this.mainid))[0] + Element.getDimensions($(this.mainid)).width + this.offset_x;
		if(cw > 0 && cw < this.gain_x){
			this.gain_x = cw;
		}

		this.gain_y = (document.body.scrollTop || document.documentElement.scrollTop) + this.offset_y;
		if(this.gain_y > Element.getDimensions($(this.mainid)).height - Element.getDimensions($(this.elevElement)).height){
			this.gain_y = Element.getDimensions($(this.mainid)).height - Element.getDimensions($(this.elevElement)).height;
		}
//		this.gain_y = Position.realOffset(document)[1] + this.offset_y;
	},

	creatElevatorBox: function(){
		this.elevElement = document.createElement("div");
		this.elevElement.style.position = 'absolute';
		this.elevElement.style.display = 'none';
		this.elevElement.id = 'elevator';
		document.body.appendChild(this.elevElement);
	},

	insertContents: function(url){
		var elevator_body;
		var i,str,cookies,history='';
		var i_flag=0;
		if (document.cookie) {

			cookies = document.cookie.split('; ');
			for (i = 0; i < cookies.length; i++) {
				str = cookies[i].split("=");
				if (str[0] == this.cookie_name) {
					history = unescape(str[1]);
					break;
				}
			}
			elevator_body = '<h3>商品履歴</h3><ul>';
			var items = history.split(',');
			for(i = 0; i < items.length; i++){
				if(items[i].match('[0-9][0-9][0-9][0-9][0-9]')){
					elevator_body += '<li><a href="/item/' + items[i] + '/"><img src="' + this.image_path + items[i] + '.jpg" width="58" onerror="if(!this.src.match(\'' + this.noimage_file + '\')){ this.src=\'' + this.noimage_file + '\';}" /></a></li>';
					i_flag++;
				}
			}
			elevator_body += '</ul>';
			if(i_flag > 0){
				this.elevElement.innerHTML = elevator_body;
				return true;
			}else{
				this.elevElement.innerHTML = "";
				return false;
			}
		}else{
			return false;
		}

	},

	additem: function(item_code){
		this.additem_cookie(item_code);
//		this.insertContents();
	},

	additem_cookie: function(item_code_list){
		var item_code,cookies,str,i,j,tmp_item,item_count;
		var history = '';

		if (document.cookie) {
			cookies = document.cookie.split('; ');
			for (i = 0; i < cookies.length; i++) {
				str = cookies[i].split("=");
				if (str[0] == this.cookie_name) {
					history = unescape(str[1]);
					break;
				}
			}
		}
		item_code = item_code_list.split(' ');
		for(i = 0; i < item_code.length; i++){
			tmp_item = item_code[i].toString();
			if(tmp_item.match('[0-9][0-9][0-9][0-9][0-9]')){
				if(history == ''){
					history = tmp_item;
				}else{
					history = tmp_item+','+history;
				}
			}
		}
		if(history != ''){
			item_count = 0;
			var items = history.split(',');
			var new_history = '';
			var match_flag;
			for(i = 0; i < items.length; i++){
				match_flag = 0;
				for(j = 0; j < i; j++){
					if(items[i] == items[j]){
						match_flag = 1;
						break;
					}
				}
				if(match_flag == 0 && item_count < 5){
					item_count++;
					if(new_history == ''){
						new_history = items[i];
					}else{
						new_history += ',' + items[i];
					}
				}
			}
			if(new_history != ''){
				var nowtime = new Date().getTime();
				var clear_time = new Date(nowtime + (60 * 60 * 24 * 1000 * this.cookie_period));
				var expires = clear_time.toGMTString();
				document.cookie = this.cookie_name + '=' + escape(new_history) + '; expires=' + expires + '; path=' + this.cookie_path;
			}
		}
	}

}

myElevator = new Elevator();

