
var moveSpeed = 10;				// アイコンの移動速度（数値を大きくすると速度が速くなります）

var cartImage = false;		// カゴ画像オブジェクト
var cartImageHeight = 0;	// カゴ画像オブジェクトの高さ
var cartImageX = 0;				// カゴオブジェクト位置X
var cartImageY = 0;				// カゴオブジェクト位置Y
var tmpCartImageY = 0;		//

var movingUtasukiSongDiv = '';		// 星Divオブジェクト
var keepSessionIconDiv = '';

var moveBoxDiv = false;		// 凹ボタンオブジェクト
var moveBoxDivX = 0;			// 凹ボタンオブジェクト位置X
var moveBoxDivY = 0;			// 凹ボタンオブジェクト位置Y

var diffX = 0;						// 凹ボタンオブジェクト位置X - カゴ画像オブジェクト位置X
var diffY = 0;						// 凹ボタンオブジェクト位置Y - カゴ画像オブジェクト位置Y

var timeOutId;						// タイマーID

var iconMoveStatus = false;		// 処理フラグステータス
var cartMoveStatus = false;		// カゴアニメーションステータス
var utasukiSongId = ''; // マイうた登録対象の選曲番号
var utasukiRegisterButtonId = ''; // マイうた登録ボタンのID

var utasukiDebugFlg = true; // デバッグ用フラグ（trueでalert表示）

function regUta(refurl, songnum, viewId) {
	// 処理フラグチェック
	if (iconMoveStatus){
		// 処理中の場合は処理を中止
		return;
	}
	// 処理フラグをON
	iconMoveStatus = true;
	utasukiSongId = songnum;
	utasukiRegisterButtonId = viewId;
	var url = '/ex/utasuki/regutasuki.htm';
	new Ajax.Request(url, {method: 'post', 
	    parameters: 'selSongNo=' + songnum + '&_passCSM_=1&regServletPath=' + 
	    encodeURIComponent(refurl), onComplete: utasuki__Show__Response});
}

//旧マイうた登録関数
//Pu統合楽曲検索で、楽曲に紐付くカラオケ曲を全て表示して登録できるようにするため、
//リネームしました。
//新しい呼び出し先は、/ex/js/myuta.jsの中にあります。
function _utasuki__Show__Response(req, json) {
	eval("var ret = " + req.responseText);
	var result = ret.result;
	if (result == "loginerror") {
		iconMoveStatus = false;
		location.href=ret.locateUri;
	} else if (result == "song_notregistErr") {
		iconMoveStatus = false;
		if (utasukiDebugFlg) { alert("マイうたに登録できません。"); }
	} else if (result == "limit_overErr") {
		iconMoveStatus = false;
		if (utasukiDebugFlg) { alert("登録数が制限に達しています。\nマイうたを整理してください。"); }
	} else if (result == "not_exist") {
		iconMoveStatus = false;
		if (utasukiDebugFlg) { alert("現在この曲をマイうた登録することができません。"); }
	} else if (result == "system_error") {
		iconMoveStatus = false;
		if (utasukiDebugFlg) { alert("システムエラーが発生しました。"); }
	} else {
		//if (utasukiDebugFlg) { alert("登録が完了しました。"); }
		move_Utasuki__Image(utasukiRegisterButtonId);
	}
}

//*******************************
// _moveUtasukiImage
// 機能  ：
// 引数  ：viewId：マイうたボタンに割り当てられたID
// 戻り値：なし
//*******************************
function move_Utasuki__Image(viewId){

	// カゴ画像オブジェクト取得
	if(!cartImage){
		// カゴ画像オブジェクト取得
		cartImage = document.getElementById('cartBoxImage');
		// カゴ画像オブジェクトの高さ取得
		cartImageHeight = cartImage.height;
	}

	// 星Divオブジェクト取得
	if(movingUtasukiSongDiv == ''){
		// 星Divオブジェクト取得
		movingUtasukiSongDiv = document.getElementById('moveIcon');
		movingUtasukiSongDiv.style.display = 'block';
		movingUtasukiSongDiv.style.position = 'absolute';
//		movingUtasukiSongDiv.style.zIndex = '10';
	}
	movingUtasukiSongDiv.style.zIndex = 1000;

	// 微調整用の数値取得
	if((navigator.userAgent.indexOf("MSIE") != -1) || (navigator.userAgent.indexOf("Safari") != -1)){
		// Win IE , Safariの場合
		tmpCartImageY = (cartImage.height/2);
	} else {
		// Win IE , Safari以外の場合
		tmpCartImageY = -1 * (cartImage.height/2);
	}

	// カゴ画像のX座標取得
	cartImageX = get_X_Pos(cartImage) + (cartImage.width/2);

	// カゴ画像のY座標取得
	cartImageY = get_Y_Pos(cartImage) + tmpCartImageY;

	// 凹ボタンオブジェクト取得
	moveBoxDiv = document.getElementById('moveBox' + viewId);

	// 凹ボタンオブジェクトのX座標取得
	//moveBoxDivX = get_X_Pos(moveBoxDiv);
	moveBoxDivX = get_X_Pos(moveBoxDiv) + Math.floor(moveBoxDiv.offsetWidth/2) - Math.floor(movingUtasukiSongDiv.offsetWidth/2);

	// 凹ボタンオブジェクトのY座標取得
	moveBoxDivY = get_Y_Pos(moveBoxDiv);

	// 凹ボタンとカゴ画像のX座標を比較
	diffX = moveBoxDivX - cartImageX;

	// 凹ボタンとカゴ画像のY座標を比較
	diffY = moveBoxDivY - cartImageY;

	// 星画像オブジェクトを凹ボタン上に設置
	movingUtasukiSongDiv.style.left = moveBoxDivX + 'px';
	movingUtasukiSongDiv.style.top = moveBoxDivY + 'px';
//	movingUtasukiSongDiv.style.width = moveBoxDiv.offsetWidth + 'px';

	// 星画像オブジェクトの移動開始
	moving_Utasuki__Image(viewId);
}

//*******************************
// movingImage
// 機能  ：星画像オブジェクトの移動
// 引数  ：viewId：マイうたボタンに割り当てられたID
// 戻り値：なし
//*******************************
function moving_Utasuki__Image(viewId){
	var maxMove = Math.max(Math.abs(diffX), Math.abs(diffY));		// X座標とY座標の移動距離で大きい方を取得
	var moveX = (diffX/maxMove) * moveSpeed;			// function１回当たりの移動距離を算出（X方向）
	var moveY = (diffY/maxMove) * moveSpeed;			// function１回当たりの移動距離を算出（Y方向）

	// 星画像オブジェクトの表示位置（X座標）
	moveBoxDivX = moveBoxDivX - moveX;
	// 星画像オブジェクトの表示位置（Y座標）
	moveBoxDivY = moveBoxDivY - moveY;

	// 星画像オブジェクトの表示位置設定（X座標）
	movingUtasukiSongDiv.style.left = moveBoxDivX + 'px';
	// 星画像オブジェクトの表示位置設定（Y座標）
	movingUtasukiSongDiv.style.top = moveBoxDivY + 'px';

	if (((diffY > 0) && ((cartImageY) > moveBoxDivY)) || ((diffY < 0) && (cartImageY < moveBoxDivY))){
	// 移動終了
		// タイマークリア
		window.clearTimeout(timeOutId);
		// 星画像の非表示
		nonDisplayMoveImage();
		// 処理フラグステータスOFF
		iconMoveStatus = false;
		// カゴアニメーションステータスOFF
		cartMoveStatus = false;
	} else {
		// 0.01秒ごとに星画像を移動
		timeOutId = window.setTimeout('moving_Utasuki__Image("' + viewId + '")', 10);

		if (((diffY > 0) && (cartImageY > moveBoxDivY - 10)) || ((diffY < 0) && (cartImageY < moveBoxDivY + 10))){
		// カゴ画像上に星画像が重なったかの確認し、２つが重なっている場合
			//カゴアニメーションステータスがOFFの場合
			if (cartMoveStatus == false){
				// カゴアニメーションステータスをON
				cartMoveStatus = true;
				// カゴアニメーションスタート（Flash内の変数moveImageStatusへ1をセット）
				window.document.cartBoxImage.SetVariable("_level0.moveImageStatus", 1);
			}
		}
	}
}

//*******************************
// nonDisplayMoveImage
// 機能  ：初期表示処理
// 引数  ：なし
// 戻り値：なし
//*******************************
function nonDisplayMoveImage(){

	// 星画像オブジェクト
	if(movingUtasukiSongDiv == ''){
		movingUtasukiSongDiv = document.getElementById('moveIcon');
		movingUtasukiSongDiv.style.display = 'block';
		movingUtasukiSongDiv.style.position = 'absolute';
//		movingUtasukiSongDiv.style.zIndex = '10';
		movingUtasukiSongDiv.style.left = '-200px';
	} else {
		// X座標を-200にし、画面から非表示にする
		movingUtasukiSongDiv = document.getElementById('moveIcon');
		movingUtasukiSongDiv.style.left = '-200px';
	}
	
	if (keepSessionIconDiv == '') {
		keepSessionIconDiv = $('keepSesUtasukiIcon');
		keepSessionIconDiv.style.display = 'block';
		keepSessionIconDiv.style.position = 'absolute';
		keepSessionIconDiv.style.left = '-200px';
		keepSessionIconDiv.hide();
		setInterval('____reloadKeepSessionUtasukiIcon()', 1500000);
//		setInterval('____reloadKeepSessionUtasukiIcon()', 15000);
	}
}

function ____reloadKeepSessionUtasukiIcon() {
	var t = new Date().getTime();
	var d = $('keepSesUtasukiIcon');
	d.innerHTML = '<img src="/ex/utasuki/_ksi_.htm?_passCSM_=1&t=' + t + '" width="1" height="1"/>';
}

//*******************************
// _getXPos
// 機能  ：オブジェクトのX座標（px）を取得
// 引数  ：obj：X座標を取得したいオブジェクト
// 戻り値：オブジェクトのX座標（px）
//*******************************
function get_X_Pos(obj){
	var ret = obj.offsetLeft;		// 親オブジェクトまでのX座標を取得
	var tmpObj;

	tmpObj = obj;

	// 親オブジェクトを上がっていき、<HTML>タグまでのX座標を取得・合計する
	while ((tmpObj = tmpObj.offsetParent) != null){
		if (tmpObj.tagName.toUpperCase() != 'HTML'){
			ret += tmpObj.offsetLeft;
		}
	}
	return ret;
}

//*******************************
// _getYPos
// 機能  ：オブジェクトのY座標（px）を取得
// 引数  ：obj：Y座標を取得したいオブジェクト
// 戻り値：オブジェクトのY座標（px）
//*******************************
function get_Y_Pos(obj){
	var ret = obj.offsetTop;		// 親オブジェクトまでのY座標を取得
	var tmpObj;

	tmpObj = obj;

	// 親オブジェクトを上がっていき、<HTML>タグまでのY座標を取得・合計する
	while ((tmpObj = tmpObj.offsetParent) != null){
		if (tmpObj.tagName.toUpperCase() != 'HTML'){
			ret += tmpObj.offsetTop;
		}
	}
	return ret;
}

function RunFlContent(){
  var setVersion = "";
  var codebase = "fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=";
  var pluginspage = "www.macromedia.com/jp/shockwave/download/?P1_Prod_Version=ShockwaveFlash&Lang=Japanese";

  if (document.location.protocol.toLowerCase() == "https:"){
    codebase = "https://" + codebase;
    pluginspage = "https://" + pluginspage;
  } else {
    codebase = "http://" + codebase;
    pluginspage = "http://" + pluginspage;
  }

  for (var i = 0; arguments.length > i; i++){
    if (arguments[i].toLowerCase() == "version"){
      setVersion = arguments[i + 1];
    }
  }

  codebase = codebase + setVersion;

  _GenerateObj(
    "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",
    codebase,
    pluginspage,
    "application/x-shockwave-flash",
    arguments);
}

function _GenerateObj(classid, codebase, pluginsPage, mimeType, args){
  var tagStr = '';
  var currArg = '';
  var closer = '>';
  var srcFound = false;
  var embedStr = '<embed';
  var paramStr = '';
  var embedNameAttr = '';
  var objStr = '<object classid="' + classid + '" codebase="' + codebase + '"';

  for (var i = 0; i < args.length; i = i + 2){
    currArg = args[i].toLowerCase();

    if (currArg == "src"){
      paramStr += '<param name="movie" value="' + args[i + 1] + '"' + closer + '\n'; 
      embedStr += ' ' + args[i] + '="' + args[i + 1] + '"';
      srcFound = true;
    } else if (currArg == "movie"){
      if (!srcFound){
        paramStr += '<param name="' + args[i] + '" value="' + args[i + 1] + '"' + closer + '\n'; 
        embedStr += ' src="' + args[i + 1] + '"';
        srcFound = true;
      }
    } else if (  currArg == "width" || currArg == "height" || currArg == "align" || currArg == "vspace" 
              || currArg == "hspace" || currArg == "class" || currArg == "title" || currArg == "accesskey" 
              || currArg == "tabindex"){
      objStr += ' ' + args[i] + '="' + args[i + 1] + '"';
      embedStr += ' ' + args[i] + '="' + args[i + 1] + '"';
    } else if (currArg == "id"){
      objStr += ' ' + args[i] + '="' + args[i + 1] + '"';
      if (embedNameAttr == "")
        embedNameAttr = ' name="' + args[i + 1] + '"';
    } else if (currArg == "name"){
      objStr += ' ' + args[i] + '="' + args[i + 1] + '"';
      embedNameAttr = ' ' + args[i] + '="' + args[i + 1] + '"';
    } else if (currArg == "codebase" || currArg == "version"){
    } else {
      paramStr += '<param name="' + args[i] + '" value="' + args[i + 1] + '"' + closer + '\n';
      embedStr += ' ' + args[i] + '="' + args[i + 1] + '"';
    }
  }

  if (!srcFound){
    return;
  }

  if (embedNameAttr)
    embedStr += embedNameAttr;
  if (pluginsPage)
    embedStr += ' pluginspage="' + pluginsPage + '"';
  if (mimeType)
    embedStr += ' type="' + mimeType + '"';

  objStr += '>\n';
  embedStr += ' swLiveConnect=true></embed>\n';

  tagStr = objStr + paramStr + embedStr + "</object>\n";

  document.write(tagStr);
}
