/* Overture */
// 何件表示したかを保持
ovtAdCnt = 0;
/**
 * Overture広告表示関数。重要度の高い広告から表示する。
 * @args integer ad_num 表示件数
 * @args type   表示タイプ
 */
function ShowListings(ad_num, type) {
    if (typeof window["zSr"] == 'undefined'){
       return;
    }
    var zstrStartElem = 6; // 配列zStrの中のデータ開始位置
    var zstrAdElem = 6; // 配列zStrでの１広告の要素数
    var start = zstrStartElem + (ovtAdCnt * zstrAdElem);
    var end = start + (ad_num * zstrAdElem);
    document.write('<div id=\"overture_'+ ad_num +'\">');
    for (i=start; i<end; i) {
        var descr = zSr[i++];
        var unused1 = zSr[i++];
        var clickURL = zSr[i++];
        var title = zSr[i++];
        var sitehost = zSr[i++];
        var unused2 = zSr[i++];


        document.write('<a target=\'_new\' href=\"' + clickURL + '\" class=\"over-block\">');

        if (type == 'line0' || type == 'line01') {
           document.write('【PR】');
        }
        document.write('<span class=\"over-title\">' + title + '</span>');

        if (type=='line0') {
            document.write('<span class=\"over-descr\"> - ' + descr);
        } else {
            document.write('<br /><span class=\"over-descr\">' + descr + '</span><br /><span class=\"host\">' + sitehost);
        }

        document.write('</span></a>');
        ovtAdCnt++;
    }
    document.write('</div>');
}

/**
 * Overture広告表示関数。2008.8.20 -
 * @args integer startNum 開始番号
 * @args integer ad_num 表示件数
 * @args string  type   表示タイプ
 * @args string  domId  getElementByIdで指定するid (オプション)
 */
function printOvt(startNum, records, type, domId) {
    if (typeof window["zSr"] == 'undefined'){
       return;
    }
    var zsrStartElem = 6; // 配列zStrの中のデータ開始位置
    var zsrAdElem = 6; // 配列zStrでの１広告の要素数
    var start = zsrStartElem + ((startNum - 1) * zsrAdElem);
    var end = start + (records * zsrAdElem);
    if (end > zSr.length) {
        return;
    }
    var html = '';
    for (i=start; i < end; i+=zsrAdElem) {
        var descr = zSr[i];
        var clickURL = zSr[i+2];
        var title = zSr[i+3];
        var sitehost = zSr[i+4];
        

        if (sitehost == "ikazo.info" ) {
             continue;
        }
        
        switch (type) {
        case "list":
            html += '<li><a target=\'_new\' href=\"' + clickURL + '\" class=\"over-block\">';
            html += '<span class=\"over-title\">' + title + '</span>';
            html += '<span class=\"host\">' + sitehost + '</span><br />';
            html += '<span class=\"over-descr\">' + descr + '</span>';
            html += '</a></li>';
            break;
        default:
            html += '<a target=\'_new\' href=\"' + clickURL + '\" class=\"over-block\">';
            html += '<span class=\"over-title\">' + title + '</span>'
            html += '<span class=\"host\">' + sitehost + '</span><br />';
            html += '<span class=\"over-descr\">' + descr + '</span>';
            html += '</a>';
            break;
        }


/*
        if (type=='no-br') {
                html += '<span class=\"over-title\">' + title + '</span> - ';
                html += '<span class=\"over-descr\">' + descr + '</span>';
        } else {
                html += '<span class=\"over-title\">' + title + '</span><br />';
                html += '<span class=\"over-descr\">' + descr + '</span><br />';
        }
        if (type=='with-domain') {
                html += '<span class="host">' + sitehost + '</span>';
        }
*/

    }

    if (typeof domId != 'undefined' && domId) {
        if (document.getElementById(domId))  {
           document.getElementById(domId).innerHTML = html;
        }
    } else {
        document.write(html);
    }
}

/**
 *  Overture IM テスト用の一時的なもの。後日削除2009.3.5
 *
 * OvertureIM広告表示関数。
 * @args integer startNum 開始番号
 * @args integer ad_num 表示件数
 * @args string  type   表示タイプ
 * @args string  domId  表示エリアのdomID
 */
function printOvtIM(startNum, records, type, domId) {
    if (typeof window["zSr"] == 'undefined'){
       return;
    }
    var zsrStartElem = 6; // 配列zStrの中のデータ開始位置
    var zsrAdElem = 6; // 配列zStrでの１広告の要素数
    var start = zsrStartElem + ((startNum - 1) * zsrAdElem);
    var end = start + (records * zsrAdElem);
    if (end > zSr.length) {
        return;
    }
    var html = '';
    for (i=start; i < end; i+=zsrAdElem) {
        var descr = zSr[i];
        var clickURL = zSr[i+2];
        var title = zSr[i+3];
        var sitehost = zSr[i+4];

        html += '<a target=\'_new\' href=\"' + clickURL + '\" class=\"over-block\">';
        if (type=='no-br') {
                html += '<span class=\"over-title\">' + title + '</span> - ';
                html += '<span class=\"over-descr\">' + descr + '</span>';
        } else {
                html += '<span class=\"over-title\">' + title + '</span><br />';
                html += '<span class=\"over-descr\">' + descr + '</span><br />';
        }
        if (type=='with-domain') {
                html += '<span class="host">' + sitehost + '</span>';
        }
        html += '</a>';

    }

    html += '(IM) ';
    document.getElementById(domId).innerHTML = html;
}

JcastJS = function () {};
/***********Grobal**************/
//XMLHttpRequestで利用可能なドメイン
JcastJS.ERROR_MESSAGE = "必須項目です。入力してください。";
JcastJS.ERROR_MESSAGE2 = "制限文字数に達しました。";
JcastJS.timeout;
JcastJS.focus_element;

/*******************************
* InputCheck
*説明:第1引数で渡されたform内で第2以降の引数で渡された
*     名前のオブジェクトに対し値のNULLチェックを行いNULLである場合は警告を行う
*引数:form name (2番目以降の引数は空チェックを行うオブジェクトを文字で指定)
*戻り値:
*false:第2以降の引数で指定されたオブジェクトで値が
*       空のオブジェクトがひとつでもある場合
*true :指定されたオブジェクトの値がすべて入力されている場合
********************************/
JcastJS.InputCheck = function(formname)
{
    var result = true;          //戻り値
    var result_array = new Array();//チェック結果格納用配列

    //引数の数(空のチェックを行う欄の数)だけroop
    for(var i=1; i<= arguments.length-1; i++)
    {
        var check_obj = document[formname].elements[arguments[i]];//チェック対象オブジェクト
        if(check_obj != "" && check_obj != undefined)
        {
            if(check_obj.length>1)
            {
                if(check_obj[0].type == "radio")
                {
                    result_array.push(JcastJS.NullCheckForRadio(check_obj));
                }
            }
            else
            {
                if(check_obj.type == "text" || check_obj.type == "textarea")
                {
                    result_array.push(JcastJS.NullCheckForText(check_obj));
                }
                else{//エラー処理
                    JcastJS.InternalErrorfunc("JcastJs:\""+arguments[i]+"\" is a type not supported.");
                    result_array.push(true);
                }
            }
        }
        else//エラー処理
        {
            JcastJS.InternalErrorfunc("JcastJs:\""+arguments[i]+"\" does not exist.");
            result_array.push(true);
        }
    }


    //オブジェクトごとのチェック結果を判定する
    //対象のオブジェクトのチェック結果をすべて確認
    for(var j=1; j<= arguments.length-1; j++)
    {
        if(result_array.shift() == false)
        {
            result = false;
            break;
        }
    }

    return result;
}
/************************************
* NullCheckForText
*
*************************************/
JcastJS.NullCheckForText = function(object){
    var txt_val;
    var text_result = true;//戻り値

    if(object != "" && object != undefined){

        txt_val = object.value;
        if(txt_val == ""){//入力値がNULLであるかチェック
            text_result = false;
        }

        JcastJS.DisplayMessage(object,JcastJS.ERROR_MESSAGE,'red',text_result);

        if(text_result == false){
            //エラー処理
            object.style.backgroundColor = '#ffcccc';
        }
        else{//エラーなし
            object.style.backgroundColor = '#ffffff';
        }
    }
    return text_result;
}
/************************************
* NullCheckForRadio
*
*************************************/
JcastJS.NullCheckForRadio = function(object){
    var radio_result = true;//戻り値

    if(object != "" && object != undefined){
        radio_result = false;
        //入力値がNULLであるかチェック
        for(var j=0 ; j < object.length; j++){
            if(object[j].checked == true){
                //ラジオボタン用のエラー処理(赤とかで画面に示すなど)
                radio_result = true;
                break;
            }
        }
        JcastJS.DisplayMessage(object[0],JcastJS.ERROR_MESSAGE,'red',radio_result);
        if(radio_result == false)
        {//ラジオボタンにチェックがない場合のエラー処理
            for(var k=0 ; k < object.length; k++){
                //FireFoxでは動作しない
                object[k].style.backgroundColor = '#ffcccc';
            }
        }
        else
        {//戻す処理
            for(var k=0 ; k < object.length; k++){
                //FireFoxでは動作しない
                object[k].style.backgroundColor = '#ffffff';
            }
        }
    }
    return radio_result;
}

/************************************
* Errorfunc
*
*************************************/
JcastJS.InternalErrorfunc = function(message){
    if(message != "" /*&& message.valueof == text*/){
        alert(message);
    }
}

/************************************
* DisplayMessage
*オブジェクトごとにエラーメッセージを表示する
*result:入力がされているか(されている:true されていない:false)
*************************************/
JcastJS.DisplayMessage = function(object,disp_msg,msg_color,result){
    var tag = object.parentNode;
    var obj_P;
    var className = tag.className;

    while( tag.nodeName != "FORM" && tag.nodeName != "TBODY" && tag.nodeName != "undefined" ){
        if(tag.nodeName == "TD" || className == "form-parts")
        {
            JcastJS.ResetDisplayResult(tag);

            if(result == false)//結果の判定(falseの場合のみ表示)
            {
                obj_P = document.createElement('P');
                obj_P.name = "created_element";
                obj_P.style.color = msg_color;

                obj_P.innerHTML = disp_msg;
                tag.appendChild(obj_P);
            }
        }
        tag = tag.parentNode;
    }
}

/************************************
* ResetDisplayResult
*表示結果を削除する("TD"のオブジェクトを渡す)
*************************************/
JcastJS.ResetDisplayResult = function(object)
{
    if( object.lastChild.name == "created_element" )
    {
        object.removeChild(object.lastChild);
    }
}

/************************************
* StringCountCheck_onfocus
*入力文字数のチェックを行う("onfocus"から呼び出す用)
*文字数チェック（0以外）を必要としない分岐を追加 09.05.18 miyagawa
*************************************/
JcastJS.StringCountCheck_onfocus = function(form_name, element_name, max_length){
    var check_obj = document[form_name].elements[element_name];//チェック対象オブジェクト

    //エラー処理(elementがtext, textarea以外の場合はエラーにする)が必要！
    if(check_obj.type == "text" || check_obj.type == "textarea"){
        if(max_length > 0){
            checkloopfnc = function(){
                var _input_length = check_obj.value.length;
                var _display_txt = '入力文字数：' + _input_length + "/" + max_length;
                var msg_color = 'black';
                var bg_color = '#ffffff';

//フォーカスがあたっているか判定し、当たっていない場合はタイマーをとめる →FireFox2がactiveElementをサポートしていないため、コメントアウトして代わりにイベントリスナーを使用する
//              if(JcastJS.focus_element === check_obj){
//              if(document.activeElement === check_obj){
                //最大文字数を超えた場合
                if(_input_length>max_length){
                    msg_color = 'red';
                    bg_color = '#ffcccc';
                }
                //背景色設定
                check_obj.style.backgroundColor = bg_color;
                //エラーメッセージ表示
                JcastJS.DisplayMessage(check_obj,_display_txt,msg_color,false);

                //0.5秒ごとに再起呼出
                clearTimeout(JcastJS.timeout);//多重呼出防止(タイマーをクリアしないでsetしてはダメ！)
                JcastJS.timeout = setTimeout(checkloopfnc, 500);
//              }
//              else{
//                  //フォーカスが無いのでタイマーを停止
//                  clearTimeout(JcastJS.timeout);
//              }
            }
            //イベントリスナーに登録(代替案)
            //check_obj.addEventListener("blur", JcastJS.StringCountCheck_onblur, true)
            checkloopfnc();
        }
    }
    else{
        JcastJS.InternalErrorfunc("JcastJs:\""+element_name+"\" is a type not supported.");
    }
}

/************************************
* MaxCheck_onkeyup
*入力文字数のチェックを行う("onkeyup"から呼び出す用)
*************************************/
JcastJS.MaxCheck_onkeyup = function(form_name, element_name, max_length){
    var check_obj = document[form_name].elements[element_name];//チェック対象オブジェクト
    var input_length = check_obj.value.length;                 //対象オブジェクトの文字数

    if(input_length>max_length){
        //背景色設定
        check_obj.style.backgroundColor = '#ffcccc';

        check_obj.disabled = true;//入力不可に設定
        //警告表示(フォーカスがどっかにいってしまうため、alertの使用を控えます)
        //alert(JcastJS.ERROR_MESSAGE2+'：'+max_length+'文字以内でお願いします。');
        //エラーメッセージ表示
        JcastJS.DisplayMessage(check_obj,JcastJS.ERROR_MESSAGE2+max_length+'文字以内でお願いします。','red',false);

        //最大文字数を超えた分の文字を削除
        check_obj.value = check_obj.value.substr(0,max_length);

        check_obj.disabled = false;//入力可能に設定
        //フォーカスをはずす処理が必要
        check_obj.blur();
        clearTimeout(JcastJS.timeout);
    }
}
/************************************
* StringCountCheck_onblur
*入力文字数のチェックを行う("onfocus"から呼び出す用)
*"onblur"で必ず呼び出す
*************************************/
JcastJS.StringCountCheck_onblur = function(){
    clearTimeout(JcastJS.timeout);
}


