/* ---------------------------------------------------------------------
JavaScript for allsports
FileName: common.js
--------------------------------------------------------------------- */


// *** メソッドを短縮化
function DW(htmlSrc){document.write(htmlSrc);}
function DWL(htmlSrc){document.writeln(htmlSrc);}


// *** プリロード関連

	// 初期化
	var preLoadObj = new Array();

	// プリロードに追加
	function addPreLoad(imgObj){
		preLoadObj = preLoadObj.concat(imgObj);
	}

	// 画像をプリロードする
	function imgPreLoad(){
		preLoadImg = new Array();
		for(var i = 0; i < preLoadObj.length; i++){
			preLoadImg[i] = new Image();
			preLoadImg[i].src = preLoadObj[i];
		}
	}

	// *** 共通要素をプリロード候補に追加
	addPreLoad(new Array(
		'/common/image/menu1_over.gif',
		'/common/image/menu2_over.gif',
		'/common/image/menu3_over.gif',
		'/common/image/menu4_over.gif',
		'/common/image/pagetop_over.gif'
	));

	// onloadで実行
	window.onload = imgPreLoad;


// *** マウスオーバー時画像切り替え
function imgChange(imgObj){
	var imgSrc = imgObj.src;
	var imgStatus = imgSrc.indexOf("_over") != -1;
	if(!imgStatus){
		var P = imgSrc.lastIndexOf(".");
		imgSrc = imgSrc.substr(0, P) + '_over' + imgSrc.substring(P);
	} else {
		imgSrc = imgSrc.replace('_over', '');
	}
	imgObj.src = imgSrc;
}


// *** 文字列関連

	// 文字数をカウントして値を返す
	function checkMultiBite(text){
		var result = 0;
		for(var i = 0; i < text.length; i++){
			var C = text.charCodeAt(i);
			result += 1 + Number(!(C < 256 || (C >= 0xFF61 && C <= 0xFF9F)));
		}
		return result;
	}

	// 任意の文字列を返す
	function getTextByMultiBite(text, length){
		text = text.substr(0, length);
		while(length < checkMultiBite(text)){
			text = text.substr(0, text.length - 1);
		}
		return text;
	}


// *** ユーザーログイン情報
function userLoginInfo(){

	// 初期設定
	var favHref = '#'; // お気に入りのリンク先
	var offHref = '#'; // ログオフのリンク先

	// クッキー取得
	var tmp = document.cookie + ';';
	var cookieTxt = 'userid='; // ユーザーIDの定義名
	var st = tmp.indexOf(cookieTxt);
	if(st != -1){
		var en = tmp.indexOf(';', st);
		var UserID = tmp.substring(st + cookieTxt.length, en);
	} else {
		return false;
	}

	// ユーザーIDの文字数をチェック
	if(17 < checkMultiBite(UserID)) UserID = getTextByMultiBite(UserID, 14) + '...';


	// HTMLを定義
	var docSrc = '';
	docSrc += '<div class="login">';
	docSrc += '<p class="youkoso">ようこそ</p>';
	docSrc += '<p class="name">' + UserID + ' さん</p>';
	docSrc += '<p class="btn">';
	docSrc += '<a href="' + favHref + '"><img src="/common/image/favoritephoto.gif"';
	docSrc += ' onmouseover="imgChange(this);" onmouseout="imgChange(this);" alt="お気に入り写真"></a>';
	docSrc += '<a href="' + offHref + '"><img src="/common/image/logoff.gif"';
	docSrc += ' onmouseover="imgChange(this);" onmouseout="imgChange(this);" alt="ログオフ" class="off"></a>';
	docSrc += '</p></div>';
	
	DW(docSrc); // HTMLを表示
}


// *** 都道府県リスト
function eachPrefecture(anchorObj, targetID){
	var imgSrc = anchorObj.firstChild.src;
	var targetObj = document.getElementById(targetID);

	if(imgSrc.indexOf('minus.gif') != -1){
		anchorObj.firstChild.src = imgSrc.replace('minus.gif', 'plus.gif');
		targetObj.style.display = 'none';
	} else {
		anchorObj.firstChild.src = imgSrc.replace('plus.gif', 'minus.gif');
		targetObj.style.display = 'block';
	}

	return true;
}


// *** ページトップモーション
function pageTopScroll(){

	var x1 = x2 = x3 = 0;
	var y1 = y2 = y3 = 0;

	if(document.documentElement){
		x1 = document.documentElement.scrollLeft || 0;
		y1 = document.documentElement.scrollTop || 0;
	}

	if (document.body){
		x2 = document.body.scrollLeft || 0;
		y2 = document.body.scrollTop || 0;
	}

	x3 = window.scrollX || 0;
	y3 = window.scrollY || 0;
	var x = Math.max(x1, Math.max(x2, x3));
	var y = Math.max(y1, Math.max(y2, y3)); 
	window.scrollTo(Math.floor(x / 1.3), Math.floor(y / 1.3));

	if(x > 0 || y > 0){
		window.setTimeout("pageTopScroll()", 30);
	}
}

// *** TOP ランダムイメージ
function random(){
	ranimg = new Array();
	ranimg[0]="/image/top_vis1.jpg";
	ranimg[1]="/image/top_vis3.jpg";
	ranimg[2]="/image/top_vis4.jpg";
	ranimg[3]="/image/top_vis5.jpg";
	ranimg[4]="/image/top_vis6.jpg";
	ranimg[5]="/image/top_vis8.jpg";

	xx = Math.floor(ranimg.length*Math.random());
	ranimg = ranimg[Math.floor(xx)];
	
	document.write('<img src="'+ ranimg +'" alt="all sports community">');
}

// *** タイトル文字省略
function abbreviate() {
	var maxLength = 29;
	var elements = document.getElementsByClassName('abbreviate', document);
	for (var i = 0; i < elements.length; i++) {
		var str = elements[i].firstChild.nodeValue;
		if (str.length > maxLength) {
		elements[i].innerHTML = str.substring(0, maxLength) + '…';
		}
	}
}

// *** タイトル文字省略②
function abbreviate2() {
	var maxLength = 25;
	var elements = document.getElementsByClassName('abbreviate', document);
	for (var i = 0; i < elements.length; i++) {
		var str = elements[i].firstChild.nodeValue;
		if (str.length > maxLength) {
		elements[i].innerHTML = str.substring(0, maxLength) + '…';
		}
	}
}

// *** タイトル文字省略③
function abbreviate3() {
	var maxLength = 26;
	var elements = document.getElementsByClassName('abbreviate3', document);
	for (var i = 0; i < elements.length; i++) {
		var str = elements[i].firstChild.nodeValue;
		if (str.length > maxLength) {
		elements[i].innerHTML = str.substring(0, maxLength) + '…';
		}
	}
}



// *** 半角カナ⇒全角カナ変換
var zen_table = new Array(
    "。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ",
    "ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ",
    "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ",
    "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ",
    "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ",
    "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ",
    "ン", "゛", "゜");

function iskana(c)   { return (c >= 65377 && c <= 65439); }
function is_ka_to(c) { return (c >= 65398 && c <= 65412); }
function is_ha_ho(c) { return (c >= 65418 && c <= 65422); }

function h2z_kana(src) {
    var i, code, next;
    var str = new String;
    var len = src.length;
    for (i = 0; i < len; i++) {
        var c = src.charCodeAt(i);
        if (iskana(c)) {
            code = zen_table[c - 65377];
            if (i < len - 1) {
                next = src.charCodeAt(i+1);
                if (next == 65438 && c == 65395) {
                    code = "ヴ";
                    i++;
                } else if (next == 65438 && (is_ka_to(c) || is_ha_ho(c))) {
                    code = String.fromCharCode(code.charCodeAt(0)+1);
                    i++;
                } else if (next == 65439 && is_ha_ho(c)) {
                    code = String.fromCharCode(code.charCodeAt(0)+2);
                    i++;
                }
            }
            str += code;
        } else {
            str += src.charAt(i);
        } 
   }
   return str;
}

	function convert1(formname,num) {
	    var src = new String(document.forms[formname].elements[num].value);
	    document.forms[formname].elements[num].value = h2z_kana(src);
	}


// *** 全角英数字⇒半角英数字
function z2h_ascii(src) {
    var str = new String;
    var len = src.length;
    for (var i = 0; i < len; i++) {
        var c = src.charCodeAt(i);
        if (c >= 65281 && c <= 65374 && c != 65340) {
            str += String.fromCharCode(c - 65248);
        } else if (c == 8217) {
            str += String.fromCharCode(39);
        } else if (c == 8221) {
            str += String.fromCharCode(34);
        } else if (c == 12288) {
            str += String.fromCharCode(32);
        } else if (c == 65507) {
            str += String.fromCharCode(126);
        } else if (c == 65509) {
            str += String.fromCharCode(92);
        } else {
            str += src.charAt(i);
        } 
    }
    return str;
}

	function convert2(formname,num) {
	    var src = new String(document.forms[formname].elements[num].value);
	    document.forms[formname].elements[num].value = z2h_ascii(src);
	}


// *** 半角英数字記号類⇒全角英数字記号類
function h2z(han) {  // 半角英数字記号類を全角英数字記号類に変換
  // ASCII の 文字類 => 全角のそれら ( SP が含まれていないことに注意 )
  // [\u0021-\u007e] => [\uff01-\uff5e] 
  return han.replace(/[\u0021-\u007e]/g, function(c) {
    return String.fromCharCode(c.charCodeAt(0) + 0xff01 - 0x0021);
  });
}


	function convert4(formname,num) {
	    var han = new String(document.forms[formname].elements[num].value);
	    document.forms[formname].elements[num].value = h2z(han);
	}



