/**
 * @name Floating Jewelry
 * @created 2008-04-02
 * @modified 2008-04-09
 * @version 0.9.0.1
 */

var floatingJewelry = new FloatingJewelry();
floatingJewelry.init();

function FloatingJewelry() {
	// 初期化
	this.init = function() {
		var self = this;

		// ウィジェット
		var widget = [
			'<span id="FloatingJewelryWidget" style="display:block; margin:0 auto 0 auto; padding:0 0 0 0; width:160px; font-size:0; line-height:1; text-align:center;">',
			'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="160" height="254" id="FloatingJewelryWidget_swf" align="middle">',
			'<param name="allowScriptAccess" value="always" />',
			'<param name="allowFullScreen" value="false" />',
			'<param name="wmode" value="transparent" />',
			'<param name="movie" value="http://www.surcraft.jp/blogparts/floatingjewelry/surcraft_blogparts.swf" />',
			'<param name="quality" value="high" />',
			'<param name="bgcolor" value="#ffffff" />',
			'<embed src="http://www.surcraft.jp/blogparts/floatingjewelry/surcraft_blogparts.swf" quality="high" bgcolor="#ffffff" width="160" height="254" name="FloatingJewelryWidget_swf" align="middle" allowScriptAccess="always" allowFullScreen="false" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />',
			'</object>',
			'</span>'
		];

		// ウィジェットを出力
		document.open();
		document.write(widget.join('\n'));
		document.close();

		// フローティングレイヤー
		this.layer = this.create('div', {
			id: 'FloatingJewelryLayer'
		});
		this.layer.style.cssText = 'display:none; position:absolute; right:0; top:0; margin:0 0 0 0; padding:0 0 0 0; width:600px; height:450px; font-size:0; line-height:1; z-index:100;';
		this.layer.innerHTML = [
			'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="600" height="450" id="FloatingJewelryLayer_swf" align="middle">',
			'<param name="allowScriptAccess" value="always" />',
			'<param name="allowFullScreen" value="false" />',
			'<param name="movie" value="http://www.surcraft.jp/blogparts/floatingjewelry/blogfloat.swf" />',
			'<param name="wmode" value="transparent" />',
			'<param name="quality" value="high" />',
			'<param name="bgcolor" value="#ffffff" />',
			'<embed src="http://www.surcraft.jp/blogparts/floatingjewelry/blogfloat.swf" quality="high" bgcolor="#ffffff" width="600" height="450" name="FloatingJewelryLayer_swf" align="middle" allowScriptAccess="always" allowFullScreen="false" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />',
			'</object>'
		].join('\n');

		// フローティングレイヤーをセット
		this.addEvent(window, 'load', function() { self.set(); }, false);

		// スクロール時のイベントを追加
		this.addEvent(window, 'scroll', function() { self.follow(); }, false);
	}

	// フローティングレイヤーをセット
	this.set = function() {
		var body = document.getElementsByTagName('body')[0];
		body.appendChild(this.layer);
	}

	// 縦スクロールに追随してフローティングレイヤーを移動
	this.follow = function() {
		this.layer.style.top = this.getScrollLength('y') + 'px';
	}

	// フローティングレイヤーを表示
	this.show = function() {
		this.layer.style.display = 'block';
		this.layer.innerHTML += '';
	}

	// フローティングレイヤーを非表示
	this.hide = function() {
		this.layer.style.display = 'none';
		this.getMovie('FloatingJewelryWidget_swf').callCloseBox();
	}

	// ムービーを取得
	this.getMovie = function(movie) {
		if (navigator.appName.match('Microsoft')) return window[movie];
		else return document[movie];
	}

	// ExternalInterface
	this.jsFunction = function(code){
		var fn = new Function(code);
		return fn();
	}

	// 要素を作成
	this.create = function(name, attr) {
		var elm = document.createElement(name);
		for (var key in attr) elm.setAttribute(key, attr[key]);
		return elm;
	}

	// イベントを追加
	this.addEvent = function(elm, ev, fn, capt) {
		if (elm.addEventListener) {// Fx, Sf, Op, Ns
			elm.addEventListener(ev, fn, capt);
			return true;
		} else if (elm.attachEvent) {// Win IE
			return elm.attachEvent('on' + ev, fn);
		} else {// Mac IE
			var temp = elm['on' + ev];
			if (typeof elm['on' + ev] != 'function') {
				elm['on' + ev] = function(e) { fn(e); }
			} else {
				elm['on' + ev] = function(e) {
					temp(e);
					fn(e);
				}
			}
		}
	}

	// スクロール量を取得
	this.getScrollLength = function(mode) {
		var x = window.scrollX || window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
		var y = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;	
		return (mode == 'x') ? x : (mode == 'y') ? y : { x: x, y: y };
	}
}








