////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//      裏2ch用のチェックスクリプト
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		検索前に入力内容に誤りが無いかチェックする。
//      検索ワードが入力されているか
//      入力文字数が多すぎないか
//
//引数：
//		引数無し
//戻り値：true : エラー無し　　false：エラー有り
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function CheckSearchWord()
{

	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★検索種類として「最近書き込まれたスレッド」が選択されている場合には必須入力無しとする。
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    var type = document.name_form_search.SEARCH_TYPE.value;
    if( type == "LAST_WRITE")
    {
        return true;
    } 
    
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★検索種類として「勢いのあるスレ」が選択されている場合には必須入力無しとする。
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    var type = document.name_form_search.SEARCH_TYPE.value;
    if( type == "ENERGY_THREAD")
    {
        return true;
    } 

	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★検索種類として「書込み数の多いスレ検索」が選択されている場合には必須入力無しとする。
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    if( type == "WRITE_COUNT")
    {
        return true;
    } 
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★検索種類として「最近作成されたスレ検索」が選択されている場合には必須入力無しとする。
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    if( type == "LAST_MAKE")
    {
        return true;
    }     

    

	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★検索ワード
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//不正文字の排除
	document.name_form_search.search_word.value = DeleteNgValue(document.name_form_search.search_word.value);	
	//Trim処理
	var strCheck = document.name_form_search.search_word.value;
    document.name_form_search.search_word.value = Trim(strCheck);

    //必須入力チェック
    if( document.name_form_search.search_word.value.length == 0)
    {
        alert("【検索ワード】は入力必須です。全角100文字以内、半角英数字200文字以内で入力して下さい。");
        document.name_form_search.search_word.focus();
        return false;
    } 

	//全角40文字以内、半角英数字80文字以内の条件を満たしているかチェック。
	var iByte = CountLength(document.name_form_search.search_word.value);
	if( iByte > 200)
	{
		alert("【検索ワード】は全角100文字以内、半角英数字200文字以内で入力して下さい。\r\n※入力された文字数は、" + document.name_form_search.search_word.value.length + "文字です。");
		document.name_form_search.search_word.focus();
		return false;
	}
	return true;    
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		トップページ(下部)の画像の切り替え
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//var normal = "url(../object/ura2ch_youkoso.gif)";
//var hover = "url(../object/ura2ch_tubo.gif)";


/// <summary>
/// 対象オブジェクトの画像を切り替える。
/// </summary>
/// <param name="obj">対象オブジェクト(div)</param>
/// <param name="img_name">切り替え対象の画像名</param>
/// <returns>
/// 無し
/// </returns>
function mouseOverOutEvent(obj,img_name) {
    //パスの作成
    var setFilePath = "url(../object/" + img_name + ")";
    obj.style.backgroundImage = setFilePath;
}

    
/// <summary>
/// 対象オブジェクトの画像を切り替える。
/// ※各画面から見た相対パスで直接指定する
/// </summary>
/// <param name="obj">対象オブジェクト(div)</param>
/// <param name="img_name">切り替え対象の画像までの相対パス</param>
/// <returns>
/// 無し
/// </returns>
function mouseOverOutEventForScreen(obj,img_name) {
    //パスの作成
    var setFilePath = "url(" + img_name + ")";
    obj.style.backgroundImage = setFilePath;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		画像へのリンクを制御するJavaScript
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////    


	   //チェックボックスにチェックが入っている場合には一度表示した画像を隠さずそのまま表示する。       
       //画像リンクへフォーカスが当たった場合にinnerHTMLを書換える。
       var workInnerHTML = ""; //innerHTML変更前の値（退避用）
       function DisplayImage(id)
       {
       
           if(disImgFlag == 1)
           {
                //一括表示ボタンの表示(＋活性状態)を切り替える
                var disableStatus = document.getElementById("id_dispay_all_page_image").value;
                if (disableStatus == "一括表示")
                {
                    //「一括表示」ボタンが活性状態の場合
                    document.getElementById("img_" + id).style.display = "block";
                }
                else
                {
                    //画像が全て表示された状態だから何もしない。
                    return;               
                }
           }
           else
           {
                //imgタグが含まれていない場合のみ画像を取得し表示する。
               if (CheckExistsImgTag(id) == 0)
               {
                   //URLが画像へのリンクであるか同かを判定(M/F等の細工をしているURLかどうかの判定はまた別途行う。)
                   if (CheckIsImageURL(id) == 0)
                   {
                        //一時ワーク変数
                        var wk = "";
                       
                       //「明和水産」 or  「しゃにむに」の画像の場合
                       var meiwa1 = "meiwasuisan.com";
                       var meiwa2 = "shanimuni.net";
                       //alert("明和の判定ロジック");
                       if ( String(id).indexOf(meiwa1, 0) != -1 || String(id).indexOf(meiwa2, 0) != -1)
                       {

                            /* 「明和水産」 or  「しゃにむに」の画像の場合
                                    偽物 : http://bbs19.meiwasuisan.com/bbs/bin/img/soccer/12527622040003.jpg  6
                                    本物 : http://bbs19.meiwasuisan.com/bbs/soccer/img/12527622040003.jpg      5     
                            */

                            // http://　より右側の文字列を取得
                           wk = String(id).substr(7, String(id).length - 7);
                           var ary = wk.split("/");
                           //要素数を判定(5：正常なURL　6：偽者のURL) 
                           if ( ary.length == 6) 
                           {
                                //偽者のURLの場合にはURLを組み替える。
                                /*
                                    0 / 1 / 4 / 3 / 5　に組み替える。                                    
                                    0: bbs19.meiwasuisan.com
                                    1: bbs
                                    2: bin
                                    3: img
                                    4: soccer
                                    5: gazou.jpg
                                */
                                //整形後のURL
                                //      0 / 1 / 4 / 3 / 5　に組み替える。
                                var truUrl = "http://" + String(ary[0]) + "/" +  String(ary[1]) + "/" + String(ary[4]) + "/" + String(ary[3]) + "/" + String(ary[5]);
                                wkInnerHTML = truUrl;
                                                  
                           }
                           else
                           {
                                //正常なURLの場合
                                //  idを指定して取得出来るinnerHTMLをそのまま使用
                                wkInnerHTML = document.getElementById(id).innerHTML;
                           }		                 
                       }
                       else
                       {
                           //変数では無く hidden項目に値を退避
                           wkInnerHTML = document.getElementById(id).innerHTML;
                       }

                        //hidden項目よりカテゴリ(大)の値を取得
                        var big = document.getElementById("id_hidden_big").value;
                        if(big == 46)
                        {
                            //アダルトカテゴリの場合にはPostBoxにて画像をポップアップ表示
                            var hidden = "<input id=\"hidden_" + id + "\" type=\"hidden\" value=\"" + wkInnerHTML + "\" />";
                            document.getElementById(id).innerHTML = wkInnerHTML + "<br><img style=\"zoom: 20%;\" id=\"" + "img_" + wkInnerHTML + "\" border=\"0\" src=\"" + wkInnerHTML + "\" pbsrc=\"" + wkInnerHTML + "\" class=\"popup_img_size PopBoxImageSmall\" pbShowRevertBar=\"false\" pbShowRevertImage=\"false\" onclick=\"Pop(this,90,'PopBoxImageLarge');\" />" + hidden;
                        }
                        else
                        {
                           var hidden = "<input id=\"hidden_" + id + "\" type=\"hidden\" value=\"" + wkInnerHTML + "\" />";
                           document.getElementById(id).innerHTML = wkInnerHTML + "<br><img style=\"zoom: 20%;\" id=\"" + "img_" + wkInnerHTML + "\" class=\"popup_img_size\" border=\"0\" src=\"" + wkInnerHTML + "\"/>" + hidden;
                        }
                   }     
               }
           }

       }
       
        //画像リンクからフォーカスが外れた場合にinnerHTMLを最初に戻す。
        function HideImage(id)
        {
           //既にimgタグがJavaScriptにより生成されていた場合
           if(disImgFlag == 1)
           {          
                //一括表示ボタンの表示(＋活性状態)を切り替える
                var disableStatus = document.getElementById("id_dispay_all_page_image").value;
                if (disableStatus == "一括表示")
                {
                
                    //画像を常に表示にチェックが入っている場合には画像は表示したママ
                    var chk;
                    chk = document.getElementById("id_check_always_disp").checked;
                    
                    if( chk == true)
                    {
                        return;                    
                    }
                    else
                    {
                        //「一括表示」ボタンが活性状態の場合
                        document.getElementById("img_" + id).style.display = "none";                    
                    }

                }
                else
                {
                    //画像が全て表示された状態だから何もしない。
                    return;
                }
           }
           else
           {
                //画像表示切替チェックボックスにチェックが入っていない場合のみhidden項目より
                //元リンク文字列を復元する。
                var chk = document.getElementById("id_check_always_disp").checked;
                if (chk == false)
                {
                   //innerHTML内に設定したhidden値より、元々作成されていた画像へのリンク文字列を復元する。
                   var getHiddenValue = document.getElementById("hidden_" + id).value;
                   document.getElementById(id).innerHTML = getHiddenValue;
                }
           }

        }
       
       /// <summary>
       /// URLが画像へのリンクかどうかを判定する。
       /// </summary>
       /// <param name="CheckID">判定対象のID(URL)</param>
       /// <returns>
       /// 0:画像へのリンク
       /// 1:通常ページへのリンク
       /// </returns>
       function CheckIsImageURL(CheckID)
       {
           var str = CheckID;
           //   最後の要素が「 jpg / JPG / gif / GIF /  png / PNG / bmp / BMP 」いずれかである場合のみ表示
           var OkImage = ["jpg", "JPG", "gif", "GIF", "png", "PNG", "bmp", "BMP"];
           str = str.substr(7, str.length - 7);
           var ary = str.split("/");

           //画像として扱うか判定
           for (var i = 0; i < OkImage.length; i++) {
               //URLを切り出した要素の末尾に画像の拡張子が含まれているか？
               var lastString = ary[ary.length - 1];
               var point = lastString.indexOf(OkImage[i]);
               if (point != -1) {
                   //画像へのリンクURLの場合
                   return 0;
                   //innertHTMLに画像を描画するロジックを追加する。
                   //return;
                   //break;
               }
           }
            return 1;
        }
        

        /// <summary>
        /// クリックされた項目のIDが画像以外へのリンクの場合にはせのページへ遷移させる。
        /// </summary>
        /// <param name="object">クリックされた対象オブジェクト( <a></a> )</param>
        /// <returns>
        /// false       遷移しない
        /// true        遷移する
        /// </returns>
        function JudgeLink(object)
        {
//           //URLが画像へのリンクであるか同かを判定
//           if (CheckIsImageURL(id) == 0)
//           {
//                return false;
//           }
//           else
//           {
//                //通常ページへのリンク
//           }
//                   
//            var s = "aa";
//            var ss = "bb";
//            alert("呼ばれました。");
//                            
        }

       /// <summary>
       /// innerHTMLの中に  <img  が含まれているかチェックする。
       /// </summary>
       /// <param name="chkId">チェック対象のID</param>
       /// <returns>
       /// 0:含まれていない。
       /// 1:含まれている。
       /// </returns>
       function CheckExistsImgTag(chkId)
       {
           var w = document.getElementById(chkId).innerHTML;
           //既にinnertHTMLに<imgタグが挿入されている場合には
           //FireFoxだとタグ名が小文字で取得されるが、IEの場合<IMGとなっている為、画像の存在チェックは大文字・小文字両方で行う。
            point = w.indexOf("<IMG", 0); //←大文字：FireFox
           //含まれていない場合
           if (point == -1)
           {
               point = w.indexOf("<img", 0); //←小文字：IE
               //含まれていない場合
               if (point == -1)
               {
                   return 0;
               }
               //含まれている場合
               else
               {
                   return 1;
               }
           }
           //含まれている場合
           else
           {
               return 1;
           }
       }
       

        /// <summary>
        /// ページ内のinnerHTML書き換え対象の要素(ID）を配列にする。
        /// </summary>
        /// <param name="">無し</param>
        /// <returns>
        /// 無し
        /// </returns>
        function GetCheckBoxIdValueToVec() {
            var elements = document.getElementsByTagName("a");
            var array = [];
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                if (e.getAttribute("id")) 
                {
                    //配列の最後に取得した要素を追加
                    //array.push(e);
                    array.push(String(e.getAttribute("id")));
                }
            }
            return array;
        }

        /// <summary>
        /// ページ内に表示されたimgタグに設定されたIDを取得する。
        /// ※「表示解除」ボタンが押された場合に画面内のimgを非表示(display=none)の設定をする場合に使用
        /// </summary>
        /// <param name="">なし</param>
        /// <returns>
        /// 無し
        /// </returns>
        function GetImageID() {
            var elements = document.getElementsByTagName("img");
            var array = [];
            for (var i = 0; i < elements.length; i++) {
                var e = elements[i];
                if (e.getAttribute("id")) 
                    //配列の最後に取得したimg要素のIDを追加
                    var imgID = e.getAttribute("id");
                    array.push(imgID);
            }
            return array;
        }
        
       

//画像が一度表示されたかどうかを判定する為のフラグ
//0 : 画像が一度も表示されていない状態
//1 : 画像が一度表示された状態(画像された後にdisplay=none or blockで表示を制御)
var disImgFlag = 0;

/// <summary>
/// ページ内に含まれる画像URLから画像を全て表示する。
/// ※一括表示　ボタンがクリックされた場合の処理
/// </summary>
/// <param name="str">入力エリアに入力された値</param>
/// <param name="str">入力可能バイト数（MaxLengthでは無い）</param>
/// <returns>
/// 無し
/// </returns>
function DisplayTotalPageImage() {

    //「一括表示」「表示解除」が押された場合にはチェックボックスを触れなくする。            
    //document.getElementById("id_check_always_disp").disabled="disabled";
            
    //要素を格納する配列
    var array;

    //一括表示ボタンの表示(＋活性状態)を切り替える
    var disableStatus = document.getElementById("id_dispay_all_page_image").value;
    if (disableStatus == "一括表示")
    {

        document.getElementById("id_dispay_all_page_image").value = "表示解除";
        
        //既に一度画像の表示処理が行われている場合
        if (disImgFlag == 1)
        {
            //JavaScriptにより画像のdisplayが変更された場合

            // ページ内に表示されたimgタグに設定されたIDを取得
            array = GetImageID();
            for (var j = 0; j < array.length; j++)
            {
                var execID = String(array[j]);
                ChangeDisplayImageStyle(execID,"1");
            }
        }
        else
        {

            //画面内に存在する画像へのリンクを作成する。   
            //ID取得処理の実行
            array = GetCheckBoxIdValueToVec();
            for (var i = 0; i < array.length; i++)
            {
                //document.write(i + "回目 : " + array[i] + "<br>");

                //配列より取得した値を文字列にキャストする。(配列に格納されているのは文字列では無く、document.getElementsByTagName("a")で取得された要素
                //	が格納されている為。
                var chk = String(array[i]).substr(0, 18);
	            if (chk == "http://www.youtube")
	            {
		            //YouTubeは何もしない。(別の処理にて埋め込みスクリプトを既に表示している為)
	            }
                else
                {
                    //画像を表すURLなので画像を描画する。
                    DisplayImage(String(array[i]));
        				
                    //画像の一括描画が完了したら「画像を常に表示する」にチェックを入れる
                    document.getElementById("id_check_always_disp").checked = true;
                }
            }
        }


    }
    else
    {
        document.getElementById("id_dispay_all_page_image").value = "一括表示";

        // ページ内に表示されたimgタグに設定されたIDを取得
        array = GetImageID();
        for (var j = 0; j < array.length; j++)
        {
            var execID = String(array[j]);
            ChangeDisplayImageStyle(execID,"0");
        }
        
        //JavaScriptにて一度display=noneが指定された場合にはフラグを立てる
        disImgFlag = 1;
    }
    

                
}



/// <summary>
/// 指定されたIDを持つ要素の表示・非表示を切り替える。
/// </summary>
/// <param name="CheckID">判定対象のID(URL)</param>
/// <param name="dispFlag">
/// 0:非表示
/// 1:　表示
/// </param>
/// <returns>
/// 0:画像へのリンク
/// 1:通常ページへのリンク
/// </returns>
function ChangeDisplayImageStyle(targetID,dispFlag) {
    var status = document.getElementById(targetID).style.display;
    
    //if (status == "" || status == "block")
    if (dispFlag == "1")
    {
        //(対象オブジェクトを表示)
        document.getElementById(targetID).style.display = "block";
    }
    else
    {
        //(対象オブジェクトを非表示)
        document.getElementById(targetID).style.display = "none";
    }  
}





////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		書込欄の固定
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//書込欄固定フラグ(0：非固定　1:固定)
//JavaScriptで制御すると重たくなるのでCSSで調節する。
var fixFlg = 0;
function FixUra2chWriteArea(){

    //固定フラグが1の場合のみ書込エリア固定化
    if ( fixFlg == 1 )
    {
        //対象オブジェクトを取得
        targetObject = document.getElementById("Ura2chWriteArea").style;
        
        //固定ブロックの高さ
        var divHeight = document.getElementById("Ura2chWriteArea").clientHeight;

        //ブラウザ毎の補正用
        var browserAdjust = 10;
     
        //表示位置を計算    
        targetObject.left = 0;
        targetObject.top  = document.body.scrollTop  + document.body.clientHeight - divHeight + browserAdjust;

        setTimeout("FixUra2chWriteArea()",200);    
    }

}


/// <summary>
/// ブロック固定フラグを制御するA(CSS制御)
/// JavaScriptでは無くCSSで制御する。
/// </summary>
/// <param name="なし">なし</param>
/// <returns>
/// なし
/// </returns>
function FixUra2chWriteAreaCSS(){

	var fixFlg = 1;
    //固定フラグが1の場合のみ書込エリア固定化
    if ( fixFlg == 1 )
    {
        //        //対象オブジェクトを取得
        //        targetObject = document.getElementById("Ura2chWriteArea").style;
        //        
        //        //固定ブロックの高さ
        //        var divHeight = document.getElementById("Ura2chWriteArea").clientHeight;
        //		
        //		//表示位置(高さ補正用
        //        //var browserAdjust = 300;
        //		
        //		//コンテンツの高さ
        //		//document.body.clientHeight
        //		//ブラウザの表示領域の高さ
        //		//document.documentElement.clientHeight;

        //        //表示位置を計算
        //		var pointTop = document.documentElement.clientHeight - divHeight;
        //		
        //		//※Lunascape5.0 / IE8 / FireFox3.53　以上ならpx指定でもOK
        //		targetObject.top  = pointTop + "px";
        //		
        //        //画面表示位置調節用エリアのサイズ変更
        //		//document.getElementById("id_adjust_height").clientHeight = 600;
        //
        SetWriteAreaToPageEnd();
    }

}



/// <summary>
/// 書込みエリアを画面下部に設定する。
/// </summary>
/// <param name="なし">なし</param>
/// <returns>
/// なし
/// </returns>
function SetWriteAreaToPageEnd(){

    //対象オブジェクトを取得
    targetObject = document.getElementById("Ura2chWriteArea").style;
    
    //固定ブロックの高さ
    var divHeight = document.getElementById("Ura2chWriteArea").clientHeight;
	
    //表示位置を計算
	var pointTop = document.documentElement.clientHeight - divHeight;
	
	//※Lunascape5.0 / IE8 / FireFox3.53　以上ならpx指定でもOK
	targetObject.top  = pointTop + "px";

}





/// <summary>
/// ブロック固定フラグを制御する@(JavaScript制御)
/// </summary>
/// <param name="なし">なし</param>
/// <returns>
/// なし
/// </returns>
function ChangeFixFlag(){

    if ( fixFlg == 0 )
    {
        //固定
        fixFlg = 1;
        
        //固定処理の呼出
        //FixUra2chWriteArea();
        FixUra2chWriteAreaCSS();
        //ボタンのスタイルを変更
        document.getElementById("id_button_fix_write_area").style.backgroundColor = "orange";
        document.getElementById("id_button_fix_write_area").value = "固定中";

    }
    else
    {
        //非固定
        fixFlg = 0;    
        
        //ボタンのスタイルを変更
        document.getElementById("id_button_fix_write_area").style.backgroundColor = "";
        document.getElementById("id_button_fix_write_area").value = "書込欄を固定";
    }

}




/// <summary>
/// ブラウザを判定する。
/// </summary>
/// <param name="">なし</param>
/// <returns>
/// browserName:ブラウザ名
/// </returns>
function GetBrowserName() {
    //ブラウザ名
    var browserName = "";
    if (navigator.userAgent.indexOf("Opera") != -1) {
        browserName = "Opera";
    }
    else if (navigator.userAgent.indexOf("MSIE") != -1) {
        browserName = "MSIE";
    }
    else if (navigator.userAgent.indexOf("Firefox") != -1) {
        browserName = "Firefox";
    }
    else if (Netscape.userAgent.indexOf("Netscape") != -1) {
        browserName = "Opera";

    }
    else if (navigator.userAgent.indexOf("Safari") != -1) {
        browserName = "Safari";

    }
    else {
        browserName = "other";
    }
    return browserName;
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		スレッド作成前の入力値チェック処理を行う。
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function CheckMakeThread()
{
    //var strErrorMessage = "入力内容が不正です。";    
    //alert ("CheckMakeThreadが呼ばれました");
    //return true;
    
    
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★名前
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//不正文字の排除
	document.name_make_thread.RegistName.value = DeleteNgValue(document.name_make_thread.RegistName.value);	
	//Trim処理
	var strCheck = document.name_make_thread.RegistName.value;
    document.name_make_thread.RegistName.value = Trim(strCheck);

    //	//必須入力チェック
    //    if( document.name_make_thread.RegistName.value.length == 0)
    //   	{
    //		alert("【タイトル】は入力必須です。全角40文字以内、半角英数字80文字以内で入力して下さい。");
    //		document.name_make_thread.RegistName.focus();
    //		return false;
    //   	} 
   	    
	//全角40文字以内、半角英数字80文字以内の条件を満たしているかチェック。
	var iByte = CountLength(document.name_make_thread.RegistName.value);
	if( iByte > 50)
	{
		alert("【名前】は全角25文字以内、半角英数字50文字以内で入力して下さい。\r\n※入力された文字数は、" + document.name_make_thread.RegistName.value.length + "文字です。");
		document.name_make_thread.RegistName.focus();
		return false;
	}
	
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★    E-mail
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★メールアドレス Check
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//不正文字の排除
	document.name_make_thread.RegistMail.value = DeleteNgValue(document.name_make_thread.RegistMail.value);
	//全角文字が含まれている場合にはエラー
	if( CheckLength(document.name_make_thread.RegistMail.value,1))
	{
		alert("【メールアドレス】は半角英数字1文字以上、100文字以内で入力して下さい。\r\n※全角文字が含まれています。");
		document.name_make_thread.RegistMail.focus();
		return false;
	}
	
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★スレッド名称
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//不正文字の排除
	document.name_make_thread.ThreadTitle.value = DeleteNgValue(document.name_make_thread.ThreadTitle.value);	
	//Trim処理
	var strCheck = document.name_make_thread.ThreadTitle.value;
    document.name_make_thread.ThreadTitle.value = Trim(strCheck);

	//必須入力チェック
    if( document.name_make_thread.ThreadTitle.value.length == 0)
   	{
		alert("【タイトル】は入力必須です。全角40文字以内、半角英数字80文字以内で入力して下さい。");
		document.name_make_thread.ThreadTitle.focus();
		return false;
   	}
   	    
	//全角40文字以内、半角英数字80文字以内の条件を満たしているかチェック。
	var iByte = CountLength(document.name_make_thread.ThreadTitle.value);
	if( iByte > 80)
	{
		alert("【タイトル】は全角40文字以内、半角英数字80文字以内で入力して下さい。\r\n※入力された文字数は、" + document.ThreadTitle.message.value.length + "文字です。");
		document.name_make_thread.ThreadTitle.focus();
		return false;
	}
	

	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//★内容（投稿内容）
	//★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
	//不正文字の排除
	document.name_make_thread.RegistContents.value = DeleteNgValue(document.name_make_thread.RegistContents.value);	
	//Trim処理
	var strCheck = document.name_make_thread.RegistContents.value;
    document.name_make_thread.RegistContents.value = Trim(strCheck);

	//必須入力チェック
    if( document.name_make_thread.RegistContents.value.length == 0)
   	{
		alert("【内容（投稿メッセージ）】は入力必須です。全角1000文字以内、半角英数字2000文字以内で入力して下さい。");
		document.name_make_thread.RegistContents.focus();
		return false;
   	}
   	    
	//全角1000文字以内、半角英数字2000文字以内の条件を満たしているかチェック。
	var iByte = CountLength(document.name_make_thread.RegistContents.value);
	if( iByte > 2000)
	{
		alert("【内容（投稿メッセージ）】は全角1000文字以内、半角英数字2000文字以内で入力して下さい。\r\n※入力された文字数は、" + document.RegistContents.message.value.length + "文字です。");
		document.name_make_thread.RegistContents.focus();
		return false;
	}
	
	//チェックの結果いずれにも引っかからなければOKとする。
    //入力値チェックでＯＫならcookieに名前をセット
    WriteDownToCookieForLoungePage();


	return true;
	    
    
}




/**************************************************************** 
* 全角/半角文字判定 
* 
* 引数 ： str チェックする文字列 
* flg 0:半角文字、1:全角文字 
* 戻り値： true:含まれている、false:含まれていない 
* 
****************************************************************/ 
function CheckLength(str,flg)
{ 
	for (var i = 0; i < str.length; i++)
	{ 
		var c = str.charCodeAt(i); 
		// Shift_JIS: 0x0 〜 0x80, 0xa0 , 0xa1 〜 0xdf , 0xfd 〜 0xff 
		// Unicode : 0x0 〜 0x80, 0xf8f0, 0xff61 〜 0xff9f, 0xf8f1 〜 0xf8f3 
		if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) ||
		 (c >= 0xff61 && c < 0xffa0) ||(c >= 0xf8f1 && c < 0xf8f4))
		{ 
			if(!flg) return true;
		}
		else
		{
			if(flg) return true;
		}
	} 
	return false; 
}

/**************************************************************** 
* バイト数を数える 
* 
* 引数 ： str 文字列 
* 戻り値： バイト数 
* 
****************************************************************/ 
function CountLength(str)
{
    var r = 0; 
    for (var i = 0; i < str.length; i++)
    {
        var c = str.charCodeAt(i); 
        // Shift_JIS: 0x0 〜 0x80, 0xa0 , 0xa1 〜 0xdf , 0xfd 〜 0xff 
        // Unicode : 0x0 〜 0x80, 0xf8f0, 0xff61 〜 0xff9f, 0xf8f1 〜 0xf8f3 
        if ( (c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4))
        { 
            r += 1; 
        }
        else
        { 
            r += 2; 
        } 
    } 
    return r; 
} 



/**************************************************************** 
* 不正文字を削除する。
* '%
* 引数 ： str チェックする文字列 
* flg 0:半角文字、1:全角文字 
* 戻り値： true:含まれている、false:含まれていない 
* 
****************************************************************/ 
function DeleteNgValue(strChange)
{
	var strBack = strChange;
	var strWork = "";
	strWork = strChange;
	
	//【'】の排除
	strWork = strWork.replace("'", "");
	
	//【_】の排除
	//strWork = strWork.replace("_", "");

	//【%】の排除
	strWork = strWork.replace("%", "");

	//alert("置換前：" + strBack + "\r\n" +
	//	"置換後：" + strWork);

	//Trim処理(前後のスペースを削除する。）
	strWork = Trim(strWork);	
	

	return strWork;
}

function Trim(s)
{
    //文字列の左側のTrim、文字列の右側のTrim
	return s.replace(/^[ 　]+/,"").replace(/[ 　]+$/,"");
}


function TestHello()
{
    alert("呼ばれた");
}




//有効期限日数を入れる。
var limit = 100; 
exp = new Date();

//有効日数を設定する。
exp.setTime(exp.getTime() + 1000 * 60 * 60 * 24 * limit);

/**************************************************************** 
* cookieから値を取得する。
* にセットする。
* 引数@ ： name        Cookieの名前
* 戻り値：  取得したcookieの値
* 
****************************************************************/
function GetCookie(name)
{
    var cookie = document.cookie;

    if(cookie && cookie.length > 0)
    {
        var offset = cookie.indexOf(name + '=');
        var end;
        if(offset != -1)
        {
            offset += name.length + 1;
            end     = cookie.indexOf(';',offset);
            if(end == -1)
            {
                end = cookie.length;
            }
            return unescape(cookie.substring(offset,end));
        }
    }
    return "";
}

/**************************************************************** 
* cookieに値をセットする。 
* 
* 引数@ ： name        Cookieの名前
* 引数A ： value       セットする値
* 引数B ： expire      有効期限
* 引数C ： path        cookieのパス
* 戻り値：  無し
* 
****************************************************************/ 
function SetCookie(name, value, expire, path)
{
    var cookie = name + '=' + escape(value);
    if(expire)
    {
        cookie += '; expires=' + expire.toGMTString();
    }
    //サイト内でクッキーを有効にする場合には「/」を指定する必要がある。
    //※但し、なぜかlocalhostでは確認が出来ない。
    if(path)
    {
        cookie += '; path=' + path;
    }
    document.cookie = cookie;
}


/**************************************************************** 
* 取得したcookieの値を「名前」欄に設定する。
* 引数@ ： 無し
* 戻り値：  無し
* 
****************************************************************/
function SetNameItemFromCookie()
{
    var cookie_name = GetCookie("Ura2chName");   

    if( cookie_name != "")
    {
        //cookieから値が取得出来たら名前欄に自動で設定する。
        var element=document.getElementById("id_name_ura2ch");   
        element.value = cookie_name;
    }
    
}

/**************************************************************** 
* 「書き込む」ボタンが押されたタイミングで
* 名前項目に入力された値を取得し、cookieに格納する。
* 戻り値：  常に true;
****************************************************************/
function WriteDownToCookie()
{
    var element = document.getElementById("id_name_ura2ch");

    //名前欄に1文字以上入力されている場合にはcookieに値を設定する。    
    if ( element.value.length > 0 )
    {
        //cookieに値を設定する。
        SetCookie("Ura2chName",element.value,exp,"");
    }
}




/// <summary>
/// 除外リストを生成する。
/// </summary>
/// <param name="obj">チェックされたチェックボックス</param>
/// <returns>
/// 無し
/// </returns>
function CreateExcludeList(obj)
{

	//選択された除外リストの値を取得
	var exclueValue = obj.value;
	
	//hidden項目に設定する値
	var hiddenExclude = "";

    var CheckCount = 0;
    var group = document.getElementById('id_Search').getElementsByTagName('input');

    for (var i = 0; i < group.length; i++)
    {
        if (group[i].type != 'checkbox')
        {
            continue;
        }
        else
        {
			//チェックが外れている場合には、除外リストに追加
            if(group[i].checked == false)
            {
				hiddenExclude += group[i].value + ",";
            }
        }
    }
	//末尾の「,」を削除
	hiddenExclude = hiddenExclude.substr(0, hiddenExclude.length - 1);
	
	//作成した除外リストをhiddenに設定
	document.getElementById('id_except_list').value = hiddenExclude 

	//作成した除外リストをcookieに設定
    SetCookie("Ura2ch_ExcludeList",hiddenExclude ,exp,"/");
	
}



/// <summary>
/// Cookieより除外リストを復元する。
/// </summary>
/// <param name=""></param>
/// <returns>
/// 無し
/// </returns>
function RestoreSearchPlace()
{

	//クッキーの値を取得
    var cookieExclude = GetCookie("Ura2ch_ExcludeList");

	//除外リストを配列に設定
	var ary = cookieExclude.split(",");
			
	if(cookieExclude != "")
	{
		//クッキーに値が設定されている場合	
		
		var CheckCount = 0;
		var group = document.getElementById('id_Search').getElementsByTagName('input');
		for (var i = 0; i < group.length; i++)
		{
			if (group[i].type != 'checkbox')
			{
				continue;
			}
			else
			{
				//除外リストと値が一致している場合にはチェックを外す
				for( var j = 0 ; j < ary.length ; j++)
				{
					//除外リストの場合
					if (group[i].value == String(ary[j]))
					{
						group[i].checked = false;
					}
				}
			}
		}	
	}
}



////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//概要：
//		TextArea項目に指定の文字数以上は入力出来ない様にする。
//引数：n
//		再生する音楽種類
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function limitChars(target,maxlength)
{
    if ( target.value.length > maxlength )
    {
        alert("これ以上入力は出来ません。");
        target.value = target.value.substr(0,maxlength);
    }

    target.focus();
}


/********************************************************************************* 
* 表示件数変更プルダウンが変更された場合に画面遷移させる。
* 引数 ： 
* 戻り値：
*********************************************************************************/ 
function LoadPage(istart)
{
    //alert("コンボボックスで選択された値　⇒　" + istart);
    

    //cookieから値が取得出来たら名前欄に自動で設定する。
    var iBig = document.getElementById("id_hidden_big").value;
    var iMiddle = document.getElementById("id_hidden_middle").value;    
    var iThreadNumber = document.getElementById("id_hidden_thread_number").value;
       
    if(istart != "")
    {
        var begin = istart * 100 + 1;
        var end   = istart * 100 + 100;

        //http://realura2ch.com/Ura2ch_DisplayData.php?BIG=1&MIDDLE=1&THREAD_NUMBER=39
        //最新50の場合には「l50」
        url = "Ura2ch_DisplayData.php?BIG=" + iBig + "&MIDDLE=" + iMiddle + "&THREAD_NUMBER=" + iThreadNumber + "&DisplayType=" + begin + "-" + end + "#page_top";
        //alert("作成されたURL：location.href = " + url);
        location.href = url;
    }
}


/// <summary>
/// TextBox項目に入力された文字数・バイト数・入力可能文字数を画面に表示する。
/// </summary>
/// <param name="str">入力エリアに入力された値</param>
/// <param name="str">入力可能バイト数（MaxLengthでは無い）</param>
/// <returns>
/// 無し
/// </returns>
function DisplayInputValue( str , byteCount)
{

    var strLen = "";            //入力文字数
    var strByte = "";           //入力バイト数
    var strStatus = "";         //あと、何文字入力が可能かを格納する変数
    var strMessage = "";        //画面に表示する内容（InnerHTML)

    //（入力）文字数の設定
    strLen = str.length;
    //（入力）バイト数の設定
    strByte = getByte(str);

    //入力許可文字数を超える入力が行われた場合に、有効文字数のみ入力項目に設定する。
    var sub = "";    

    //入力可能バイト数を超えた場合
    if( strByte > byteCount)
    {
        //document.getElementById("inputlength").innerHTML = "入力可能バイト数を超えました。";
        
        for ( var i = 0; i < str.length; i++ )
        {
            sub = str.substring(0, i + 1);
            if ( getByte(sub) > byteCount )
            {
                //前回ループ時の文字列を取得しTextAreaに設定する。
                //↓を実行すると最大入力文字数の時に全角が入力されると入力された全ての文字列が消去されてしまうのでコメントアウトする。
                //sub = str.substring(0, ( i - 1)  + 1);
                //alert("TextBoxにセットされる値：" + sub);
                //document.getElementById("txtInput").innerHTML = sub;
                break;
            }
        }
        
        //（入力）文字数の設定
        strLen = sub.length;
        //（入力）バイト数の設定
        strByte = getByte(sub);          
    }
    
    //入力可能残バイト数
    var zanByte = byteCount - strByte;    
    //alert("入力可能残バイト数 = " + zanByte);
   
    //半角入力可能文字数
    var han = 0;
    //全角入力可能文字数
    var Zen = 0;

    if ( zanByte >= 0)
    {
       //全角入力可能文字数の設定（余りを引く事により小数部を出さなくさせる。 ）
        Zen = ( zanByte - zanByte % 2 ) / 2 ;
        strMessage = "全角文字：" + Zen + "文字   " + "半角英数字：" + zanByte + "文字　入力可能です。 <br/>";
        strMessage += "※＜" +  strLen + "文字" + strByte + "バイト＞<br>";
    }
    else
    {
        strMessage = "入力された文字が長過ぎます。<br>もっと短くして下さい。";
    }

    //画面に判定結果を出力する。    
    document.getElementById("inputlength").innerHTML = "<span class='char_report'>" + strMessage + "</span>";
    
}


/// <summary>
/// バイト数を取得する。
/// </summary>
/// <param name="str">バイト数の取得対象となる文字列</param>
/// <returns>
/// 無し
/// </returns>
function getByte(str)
{
	count = 0;
	for (i=0; i<str.length; i++)
	{
		n = escape(str.charAt(i));
		if (n.length < 4) count++;
		else count += 2;
	}
	return count;
}



/// <summary>
/// エレベータメニュー
/// </summary>
/// <returns>
/// 無し
/// </returns>
function repositionObject() {
    var top = eval(document.getElementById('div_header').style.top.replace('px', ''));
    var scrollTop = (document.body.scrollTop || document.documentElement.scrollTop);
    var d;
    if (top > scrollTop) {
        if (top - scrollTop > 1024) {
            d = 512;
        } else if (top - scrollTop > 512) {
            d = 256;
        } else if (top - scrollTop > 256) {
            d = 128;
        } else if (top - scrollTop > 128) {
            d = 64;
        } else if (top - scrollTop > 64) {
            d = 32;
        } else if (top - scrollTop > 32) {
            d = 16;
        } else if (top - scrollTop > 16) {
            d = 8;
        } else { if (top - scrollTop < 4) {
                d = top - scrollTop;
            } else {
                d = 4;
            }
        }
        document.getElementById('div_header').style.top = (top - d) + 'px';
        setTimeout('repositionObject()', 100);
    } else if (top < scrollTop) {
        if (scrollTop - top > 1024) {
            d = 512;
        } else if (scrollTop - top > 512) {
            d = 256;
        } else if (scrollTop - top > 256) {
            d = 128;
        } else if (scrollTop - top > 128) {
            d = 64;
        } else if (scrollTop - top > 64) {
            d = 32;
        } else if (scrollTop - top > 32) {
            d = 16;
        } else if (scrollTop - top > 16) {
            d = 8;
        } else { if (scrollTop - top < 4) {
                d = scrollTop - top;
            } else {
                d = 4;
            }
        }
        document.getElementById('div_header').style.top = (top + d) + 'px';
        setTimeout('repositionObject()', 100);
    }
}



/// <summary>
/// TextBox項目に入力された文字数・バイト数・入力可能文字数を画面に表示する。
/// </summary>
/// <param name="str">入力エリアに入力された値</param>
/// <param name="str">入力可能バイト数（MaxLengthでは無い）</param>
/// <returns>
/// 無し
/// </returns>
function CustomizeUra2ch(obj)
{
    //設定色
    var color = obj.value;
    
    //設定タイプ    
    var ct = document.getElementById("customize_type").value;
    
    //設定名称
    var setName;
    switch (ct)
    {
        //背景色
        case "back_color":
            Set_Ura2ch_BackColor(color);
            document.bgColor = color;
            setName = "背景色";
            break;
        case "font_color":
            Set_Ura2ch_FontColor(color);
            document.fgColor = color;
            setName = "フォント色";
            break; 
    }

    var ihtml = document.getElementById('ura2ch_customize_title').innerHTML;
    var ary = String(ihtml).split("<br>");
    //デフォルトのページのタイトル
    var firstMessage = ary[0];
       
    //ステータスを画面に表示
    document.getElementById('ura2ch_customize_title').innerHTML= firstMessage + "<br><span class='ura2ch_apeal'>※【" + setName + "】に【" + color + "】が設定されました。スレッド内容を開くと" + setName + "が反映されています。</span>";
    
    //☆☆☆☆　　　後で背景色の設定に setAttribute　を使用する事

    //document.getElementById('id_test').bgcolor = "red";
    //document.getElementById('id_block').style.backgroundColor = 'red'; 

}

/// <summary>
/// 指定された色を　背景色　のクッキー(cookie)に設定する。
/// </summary>
/// <param name="color">設定する色</param>
/// <returns>
/// 無し
/// </returns>
function Set_Ura2ch_BackColor(color)
{
    //cookieに値を設定する。
    SetCookie("Ura2ch_BackColor",color,exp,"/");
}

/// <summary>
/// 指定された色を　フォント色　のクッキー(cookie)に設定する。
/// </summary>
/// <param name="color">設定する色</param>
/// <returns>
/// 無し
/// </returns>
function Set_Ura2ch_FontColor(color)
{
    //cookieに値を設定する。
    SetCookie("Ura2ch_FontColor",color,exp,"/");
}


/// <summary>
/// 裏2chがカスタマイズされている場合にはその値を設定する。
/// </summary>
/// <param name=""></param>
/// <returns>
/// 無し
/// </returns>
function SetUra2chCustomizedValue()
{
    var test = document.cookie;
       
    //背景色
    var bc = GetCookie("Ura2ch_BackColor");
    if(bc != "")
    {

        //スレッド一覧ページの場合のみ実行
        if ( document.getElementById('div_header') != null)
        {
            //エレベータメニューの設定
            document.getElementById('div_header').style.backgroundColor = bc; 

            //書込欄
            document.getElementById('Ura2chWriteArea').style.backgroundColor = bc
        
        }
            

        //背景色を設定
        document.bgColor = bc;
    }
    
    //フォント色
    var fc = GetCookie("Ura2ch_FontColor");

    if(fc != "")
    {
//        //エレベータメニューの設定
//        document.getElementById('div_header').style.backgroundColor = bc; 
//            
//        //書込欄
//        document.getElementById('Ura2chWriteArea').style.backgroundColor = bc

//        //背景色を設定
//        document.bgColor = bc;
        //文字色を設定
        document.fgColor = fc;

    }
    
}


