//*******************//
//****Global VAR*****//
//*******************//
//for debug
var g_DebugFLG = 0;
//for stage
var g_stgDate = cookF.get('viewDate').replace(' ', 'T');//XMLの基準日付
//for year
var g_yearAry=new Array();
// 番組リスト表示時のポップアップ抑制
var g_popup = false;
// 現在ポップアップ中のID
var g_nowPopup = null;
//for search
var g_psf=0;
var g_xhrsearch = null;
var g_ = {};
var g_cache = {};
var g_static = 1;//静的XMLのスイッチ 1:静的 0:動的
g_static = (g_stgDate != '') ? 0 : 1;//ステージングDateがあるなら動的
// if (!cookF.get('sorter')) {
// cookF.set('sorter', 4, {});
// }
//for xml & item
var g_domain = '';
if (location.hostname.indexOf('nhk-ondemand') == -1) g_domain = 'http://www.nhk-ondemand.jp';
var g_qAry = {};
var g_path = {
goods: '/xml2/goods/'
, sites: '/xml2/siteProgram/'
, opus: '/xml2/opus/'
, staticOpus0: '/material/disp/screen/panel/img/A001_adviseProgram/opus/opus0.xml'
, staticOpus2: '/material/disp/screen/panel/img/A001_adviseProgram/opus/opus2.xml'
, favEntry: '/user/purchasePlanList/entry/'
, favView: '/user/purchasePlanList/view/'
, favView2: '/user/purchasePlanList/view2/'
, favDelete: '/user/purchasePlanList/delete/'
, reqEntry: '/requestForm/entry/'
, login: '/login/'
, ranking: '/material/disp/screen/panel/img/A001_rankingList/ranking.xml'
, all_ranking: '/material/disp/screen/panel/img/A001_rankingList/all_ranking.xml'
, topMinogashiNew: '/share/static/resources/xml/goods/topminogashinew.xml'
, topLibraryNew: '/share/static/resources/xml/tokusen/lib_new_t.xml'
, topxmlpath: '/material/disp/screen/panel/img/A001_adviseProgram/top/promo_top.xml'
, topadxmlpath: '/material/disp/screen/panel/img/A001_adviseProgram/topswf_banner/top_ad.xml'
//,libraryNew_h:'/material/disp/screen/panel/img/A001_adviseProgram/tokusen/lib_new_.xml'
, libraryNew_k: '/share/static/resources/xml/tokusen/lib_new_k.xml'
, libraryNew_b: '/share/static/resources/xml/tokusen/lib_new_b.xml'
, monthfixBanner: '/share/data/resources/xml/monthFix_banner.xml'
, datephp: '/material/disp/screen/panel/img/A001_selectProgram/date.php'
, useHistory: '/xml/useHistory/'
, purchaseDecision: '/user/purchaseDecision/'
, getuuid: '/user/resUUID/'
, getresume: '/authap/web/service/service_PlayTimeWebService'
, pack: '/share/data/resources/xml/pack.xml'
};
var g_hash = {};
var g_myP = {};
var g_Result;
var g_Length = 0;
var g_tgt = {
kensu: 'table.result td.count',
navHead: 'table.result td.move'
};
var g_yearSfx = '';
$.ajaxSetup({
async: true
, beforeSend: beforeAjax
, type: 'GET'
});
var g_user = {
isMinogashiMiho: 0
, isTokusenMiho: 0
};
//新着マークのリミット日数
var g_newlim = {
1: 2,
2: 8
};
//smp番組リスト
var g_smpprolist = {
'1/1': 'aa',
'1/2': 'ab',
'1/3': 'ac',
'1/4': 'ad',
'1/5': 'ae',
'1/6': 'af',
'1/7': 'ag',
'2/1': 'ba',
'2/2': 'bb',
'2/3': 'bc',
'2/4': 'bd',
'2/5': 'bi',
'2/6': 'be',
'2/7': 'bf',
'2/8': 'bg',
'2/9': 'bh',
'3/1': 'ca',
'3/2': 'cb',
'3/3': 'cc',
'3/4': 'cd',
'4/1': 'da',
'4/2': 'db',
'4/3': 'dc',
'4/4': 'dd',
'4/5': 'de',
'4/6': 'df',
'4/7': 'dg',
'4/8': 'dh',
'5/1': 'ea',
'5/2': 'eb',
'5/3': 'ec'
};
//NOLサイカタ用Cookie削除
if (cookF.get('AMCV_02C51F6A550AFE4E0A4C98A7%40AdobeOrg')) {
cookF.set('AMCV_02C51F6A550AFE4E0A4C98A7%40AdobeOrg','',{domain:'.nhk-ondemand.jp',expire:-365});
}
//for layout
cookF.del('nodLayoutStyle');
var g_cookie = cookF.get('nodLayoutStyle');
if (g_cookie == '') g_cookie = 'thumb';
//for history
var g_historyBaseFile = '/js/ph65/library/history.gif';
//default message
var g_loadinghtml = '
';
// var g_errorhtml = '該当する番組はありません
';
var g_errorhtml = '該当する番組はありません
';
var g_otherEpisodeError = '他のエピソードはありません
';
var g_searchErrorhtml = 'お探しの番組は 見つけられませんでした。番組名または出演者名が一致していない可能性があります。
「ひらがな」でお試し頂くと見つかる可能性があります。
';
//main swf
var g_mainSWFURL = '/material/disp/screen/panel/img/A001_adviseProgram/player/main79_ver08.swf';
var g_textSWFURL = '/material/disp/screen/panel/img/A001_adviseProgram/player/readable78_ver02.swf';
//for text-version
var g_text = cookF.get('textversion');
if (g_text == '1' || location.href.search('/share/text/') > -1) {
g_text = '1';
document.write('');
if(location.href.search('/share/group/') > -1 ||
location.href.search('/share/genre/') > -1 ||
location.href.search('/share/missed/') > -1 ||
location.href.search('/share/library/') > -1 ||
location.href.search('/share/free/') > -1 ){
//テキスト版未対応ページはトップへ
location.href = '/';
}
$('link[href^="/css/"]').each(function () {
var hr = $(this).attr('href');
$(this).attr('href', hr.replace('/ph65/', '/ph40text/'));
$(this).attr('href', hr.replace('/ph2017/css/nod.css', '/ph2017/text/nod.css'));
if (hr.search('/css/ph2017/css/header.css') > -1
|| hr.search('/css/ph2017/css/promo.css') > -1
|| hr.search('/css/ph2017/css/pc_home.css') > -1
|| hr.search('/css/ph2017/css/swiper.min.css') > -1
|| hr.search('/css/ph2017/css/movie_item_thumb.css') > -1
) {
$(this).remove();
}
});
$(function () {
$('#LoginPanel').remove();
$('#SearchPanel').remove();
$('#pankuzu').remove();
});
}
var g_favresume = cookF.get('favresume');
if (g_favresume != '' && location.href.search('/login/') == -1) {
if(g_favresume[0] == 'G'){
$.getJSON(
g_path.favEntry,
{
goods: g_favresume,
sess: cookF.get('sessionid')
},
function (json) {
if (json.code != '900') {
cookF.del('favresume');
}
}
);
}
else{
$.getJSON(
g_path.favEntry,
{
siteProgram: g_favresume,
sess: cookF.get('sessionid')
},
function (json) {
if (json.code != '900') {
cookF.del('favresume');
}
}
);
}
}
//for s_code
var mailreceive = 0;
//日付
var g_serverDate;
// for suggestion list search
var g_sug;
//EnvSwitchドメイン変更対応
function setEnvSwitch() {
var Val1 = cookF.get('EnvSwitch');
cookF.del('EnvSwitch'); //www.?のCookieを削除(自ホストのCookieを操作する場合はドメインを指定しない)
var Val2 = cookF.get('EnvSwitch');
if (Val2) {
cookF.set('EnvSwitch', Val2, {domain: '.nhk-ondemand.jp', expires: 365});
} else {
cookF.set('EnvSwitch', Val1, {domain: '.nhk-ondemand.jp', expires: 365});
}
}
//uuidの書き込み
var g_uuid = '';
function setUUID() {
var purchaseCookie = cookF.get('PURCHASE_COOKIE');
if (g_user.islogin) {
var cookieUUID = cookF.get('s_uuid');
if (!cookieUUID) {
$.ajax({
url: g_path.getuuid,
async: false,
type: 'post',
timeout: 5000,
data: {
sess: cookF.get('sessionid')
},
success: function (x) {
g_uuid = $(x).find('uuid:eq(0)').text();
if (purchaseCookie != '' && location.href.search(/https?:\/\/[^\/]+\/buy\//gi) > -1) {
document.cookie = 'PURCHASE_COOKIE=' + purchaseCookie + ';path=/;';
}
cookF.set('s_uuid', g_uuid, {expires: 1825});
}
})
}
else {
g_uuid = cookieUUID;
}
}
}
// assign for Withdrawl page
var g_withdrawal = "Testing";
var g_menu;
//EnvSwitch
setEnvSwitch();
//****************************//
//****General onLoad Func*****//
//****************************//
//Open right click for specific area
$(window).bind('load', function(e) {
// console.log("local th");
$(document).unbind("contextmenu");
document.oncontextmenu = function (e) {
// console.log(e.target)
let t = e.target;
if (t.id == "scopeTextProgram" || t.id == "serchBox" || t.id == "key1" || t.id == "TextProgram") {
return true;
} else if (t.tagName == "H1" && t.parentNode.className == "programInfoPack-wrap") {
return true;
} else if (t.className == "outline down") {
return true;
} else {
return false;
}
}
//対象ページではフッターで表示している共通見放題バナーを非表示にする
var hideFtBanner_page_path = [
'/monthFix/G2008003000MA000/',
'/regist/entry/result/index.html',
'/regist/entry/index.html',
'/regist/entry/confirm/',
'/regist/entry/tempresult/index.html',
'/withdrawal/',
'/withdrawal/confirm/index.html',
'/purchase/settleChoice/index.html',
'/purchase/confirm/index.html',
'/purchase/result/index.html',
'/purchase/creditInput/index.html',
'/purchase/creditConfirm/index.html'
];
var path_len = hideFtBanner_page_path.length;
for (var i = 0; i < path_len; i++) {
var match = location.pathname.match(hideFtBanner_page_path[i]);
if (match) {
$('#bnrPack').hide();
}
}
});
$(function () {
setUUID();
// $(document).bind("contextmenu", function (e) {
// return false;
// });
//optout cookies process
optoutProcess();
//単品⇒見放題 の購入遷移のため
var pl = location.href.replace(/\?.*/gi, '').replace(/#.*/gi, '');
if (pl.search(/\/monthFix\/G2008003000MA000\//) > -1) {
cookF.set('goodstype', 'librarypack', {});
}
else if (pl.search(/\/monthFix\/G2008000000MC000\//) > -1) {
cookF.set('goodstype', 'missedpack', {});
}
if (location.href.search(/\/purchase\/|\/buy\/|\/login\/|\/goods\/|\/share\/redirect|\/share\/yahoo/) == -1) {
if (location.href.search(/\/monthFix\/G2008003000MA000\//) == -1) {
debug('delete tokusenmihoban!! ' + cookF.get('tokusenmihoban'));
cookF.del('tokusenmihoban');
}
if (location.href.search(/\/monthFix\/G2008000000MC000\//) == -1) {
debug('delete minomiho!! ' + cookF.get('minomiho'));
cookF.del('minomiho');
}
}
debug('tokusenmihoban ' + cookF.get('tokusenmihoban'));
debug('minomiho ' + cookF.get('minomiho'));
//for s_code メルマガ配信
if (location.href.search('/regist/entry/confirm/') > -1 || location.href.search('/regist/edit/confirm/') > -1) {
if ($('input[name="siteUserTemp.mailDeliveryFlag"]').val() == "0" || $('input[name="mailDeliveryFlag"]').val() == "0") {
cookF.set('scodemailmaga', '1', {expire: 1});
}
}
if (location.href.search('/regist/entry/result/') > -1 || location.href.search('/regist/edit/result/') > -1) {
if (cookF.get('scodemailmaga') == '1') {
mailreceive = 1;
}
cookF.del('scodemailmaga');
}
$('.goNext').click(function () {
g_myP.send = 1;
var Pform = $(this).parents('form');
//二重送信防止
$(this).attr('disabled', true).attr('dbl', 1);
//$('input, select, a').attr('disabled',true).attr('dbl',1);
if (location.href.search('/regist/entry/confirm/') > -1) {
//仮登録ボタン
Pform.attr('action', '/regist/entry/tempresult/index.html');
}
else if (location.href.search('/regist/edit/confirm/') > -1) {
//会員情報変更ボタン
Pform.attr('action', '/regist/edit/result/index.html');
}
//時間差送信 for scode
setTimeout(function () {
if (g_myP.send) {
Pform.submit();
}
else {
//元に戻す
$('input[dbl="1"], select[dbl="1"], a[dbl="1"]').attr('disabled', false).removeAttr('dbl');
}
delete g_myP.send;
}, 400);
return false;
});
//クレカ入力の名前は大文字へ 補助
if (location.href.search('/purchase/creditConfirm/') > -1 || location.href.search('/regist/creditEdit/') > -1 || location.href.search('/purchase/creditInput/') > -1) {
$('input:text').attr('autocomplete', 'off');
$('input[name="userName"]').keyup(function () {
$(this).val($(this).val().toUpperCase());
});
}
//見放題紹介のXML取得
//見放題紹介ページのときのみXMLを取得
if (location.href.search('/share/pack/') > 1) {
$.ajax({
url: g_path.pack
, dataType: 'xml'
, success: function (xml) {
packIntroMakeHtml(xml);
}
});
}
// まるごと見放題パック紹介-ページ
// ログイン確認して表示切り替え
var match = location.pathname.match('/monthFix/G2008003000MA000/');
if (match) {
if (!g_user.islogin) {
$('.reg_need').addClass('show');
$('.reg_finish').removeClass('show');
}else{
$('.reg_need').removeClass('show');
$('.reg_finish').addClass('show');
}
getMonthFix();
}
//テキスト版へ 共通処理はここまで
if (g_text == '1') {
NODtextFunc();
return;
}
//スマートフォン版、タブ版へのリンクを表示
switchDevice.init();
//Tab、Smo版では「テキスト版について」のリンクを非表示
if(cookF.get('EnvSwitch') != 'stayPC'){
$("#outline ul.item3 li:contains('テキスト版について')").hide();
}
//debug(document.cookie.replace(/;/g,'
'));
//popWindow init
jTip.init();
g_fav.init();
jGoods.init();
//form focus
$('#primaryActiveObject').focus();
//hover
bindHover('.rollover');
//pulldown genre-year-name
$('#search h2').each(function () {
var imgsrc = '';
$(this).hover(
function () {
swfCleanup(1);
if (g_browser.iev == 6) $('.movieItemHeader td[class!=category1] select').css('visibility', 'hidden');
$('#searchOption, #searchArea p.close').hide();
imgsrc = $(this).find('img').attr('src');
$(this).find('img').attr('src', imgsrc.substring(0, imgsrc.lastIndexOf('.')) + '_on' + imgsrc.substring(imgsrc.lastIndexOf('.')));
$(this).next().show();
},
function () {
swfCleanup(0);
if (g_browser.iev == 6) $('.movieItemHeader select').css('visibility', 'visible');
imgsrc = $(this).find('img').attr('src');
$(this).find('img').attr('src', imgsrc.substring(0, imgsrc.search(/_on\./)) + imgsrc.substring(imgsrc.lastIndexOf('.')));
$(this).next().hide();
}
);
$(this).next().hover(
function () {
swfCleanup(1);
if (g_browser.iev == 6) $('.movieItemHeader td[class!=category1] select').css('visibility', 'hidden');
$(this).show();
imgsrc = $(this).prev().find('img').attr('src');
$(this).prev().find('img').attr('src', imgsrc.substring(0, imgsrc.lastIndexOf('.')) + '_on' + imgsrc.substring(imgsrc.lastIndexOf('.')));
},
function () {
swfCleanup(0);
if (g_browser.iev == 6) $('.movieItemHeader select').css('visibility', 'visible');
$(this).hide();
imgsrc = $(this).prev().find('img').attr('src');
$(this).prev().find('img').attr('src', imgsrc.substring(0, imgsrc.search(/_on\./)) + imgsrc.substring(imgsrc.lastIndexOf('.')));
}
);
});
//SiteCatBind
$('#search div.item1 div ul li a').click(function () {
s.getAjaxAction("program");
});
$('#search div.item2 ul li a').click(function () {
s.getAjaxAction("genre");
});
$('#search div.item3 ul li a').click(function () {
s.getAjaxAction("year");
});
//searchArea
var showSearchOption = function () {
$('#searchOption, #searchArea p.close').show();
};
$('#searchArea input.key').focus(showSearchOption).click(showSearchOption);
$('#searchArea p.close').click(function () {
$('#searchOption, #searchArea p.close').hide();
});
$(document).bind('mousedown', function (event) {
var el;
if ($('#searchOption').is(':hidden'))return;
if (g_browser.isIE) {
el = window.event.srcElement;
}
else {
el = (event.target.tagName ? event.target : event.target.parentNode);
}
if ($(el).attr('id') == 'searchOption') return;
if (!$(el).parents().is('#searchOption,.searchWord')) {
$('#searchOption, #searchArea p.close').hide();
}
});
$('#searchForm').bind('submit', fn_gsearch);
// $('#searchButton').bind('click',fn_gsearch);
$('a[href="#"]').click(function () {
$(this).blur();
return false;
});
$('#goodspopup div.list tr a').live('click', function () {
if ($(this).attr('href')) {
location.href = $(this).attr('href');
}
return false;
});
//ネットクラブの画面へリダイレクト(本登録完了)
if (document.getElementById('goNetclb') != null) {
location.href = document.getElementById('netclbURL').value;
}
//ヘッダー検索ボックス内のデフォルト文字表示
var d_color = '#999999';
var f_color = '#000000';
var sBox = document.getElementById('serchBox');
$(sBox).css('color', d_color).focus(function () {
if (this.value == this.defaultValue) {
this.value = '';
$(this).css('color', f_color);
}
})
//選択が外れた時
.blur(function () {
if ($(this).val() == this.defaultValue | $(this).val() == '') {
$(this).val(this.defaultValue).css('color', d_color);
}
;
});
//検索ボタンが押された時
$('#searchButton').click(function () {
s.getAjaxAction('search');
if (sBox.value == sBox.defaultValue) {
sBox.value = '';
}
g_sug=0;
fn_gsearch();
});
// for suggestion list
search.getSuggestJson(fn_gsearch, '#serchBox');
// for suggestion list
//ページ遷移を起こさせないようにする為、ヘッダー・フッターを一部非表示にする
//(会員登録画面・購入遷移画面)
var path_len = hide_page_path.length;
for (var i = 0; i < path_len; i++) {
var match = location.pathname.match(hide_page_path[i]);
if (match) hideHeaderAndFooter();
}
//pan kuzu移動
setGuidebar();
//サーバーの日付取得 2013/09/27
$.ajax({
dataType: 'text'
, async: false
, url: g_path.datephp
, timeout: 3000
, success: function (dt) {
g_serverDate = dt;
}
, error: function () {
g_serverDate = "";
}
});
madeYearAry();
$(window).resize(function() {
settingGoodsPopupSize();
});
//show entrypopup
if (!g_user.islogin) {
if(!cookF.get('entrypopup') && g_text != '1'){
// $('.popup-modal').show();
cookF.set('entrypopup', true,{ expires: 365 });
}
$('#promo_top .promo_price').show();
}
else{
if(g_user.isMinogashiMiho==0 && g_user.isTokusenMiho==0){
$('#promo_top .promo_price').show();
}
else{
$('#promo_top .promo_price').hide();
}
}
$('.modal-close').click(function(){
$('.popup-modal').hide();
})
});
function setGuidebar() {
var sTp = $('#topicPath');
var $pankuzu = $('#pankuzu');
if ($pankuzu.length) {
$pankuzu.html(sTp).find('img').remove();
}
else {
$('#topicPath').hide();
}
}
//一部非表示にするURLパス
var hide_page_path = [
'/regist/entry/',
'/purchase/confirm/',
'/purchase/settleChoice/',
'/purchase/creditInput/',
'/purchase/creditConfirm/'
];
//ヘッダー・フッターを全て表示するURLパス
var show_page_path = [
'/purchase/result/',
'/regist/entry/result/'
];
//ヘッダー・フッター一部非表示用関数
function hideHeaderAndFooter() {
//ページ遷移可のページだった場合、何もせずに戻す
var path_len = show_page_path.length;
for (var i = 0; i < path_len; i++) {
var match = location.pathname.match(show_page_path[i]);
if (match) return;
}
$('#header p').hide();
$('body div#menuGlobal').css({'cssText': 'display: none !important;'});
$('#enqueteboxdisp').hide();
$('#search').hide();
$('#topicPath').hide();
$('#outline').hide();
$('#switchView').hide();
$('.urgent_notice').hide();
//画像リンクのアンカー削除
removeAnchor('#header h1');
removeAnchor('#footer .logo');
//アンカー削除用サポート関数
function removeAnchor(elem_name) {
$(elem_name).find('img').appendTo(elem_name);
$(elem_name).find('a').remove();
}
}
function isLogin() {
//console.log('no use');
return $('#login_flg').size() > 0;
}
function fn_gsearch() {
// var sc = $('#searchOption input:checked').attr('value');
var sc = $('[name="searchOption"]:checked').attr('id');
var txt = $('form#searchForm p.searchNewG input:text').attr('value');
if (!txt) {
txt = '';
}
txt = txt.replace(/ /g, ' ');
txt = txt.replace(/ +/, ' ');
txt = txt.replace(/ +$/, '');
if (txt == '') {
// location.href = '/share/search/#specifiedsearch'; // not going search page if there is nothing input.
return false;
}
// var sa = {program: 0, cast: 1};
// var so = ['', ''];
// so[sa[sc]] = txt;
// //location.href='/share/search/'+hashF.setStr([so[0],so[1],1,0,1,0,0,0,0,'']);
// location.href = '/share/search/' + hashF.setStr([so[0], so[1], 1, 0]);
if(g_sug==1){
var so = ['', '', 1, 0, 1]; //検索ページのURLオプション
}else{
var so = ['', '', 1, 0, 0]; //検索ページのURLオプション
}
// switch(sc){
// case 'pro': //番組
// so[0]=txt;
// break;
// case 'per': //出演者
// so[1]=txt;
// break;
// }
so[0]=txt;
location.href = '/share/search/' + hashF.setStr(so);
return false;
}
function bindHover(tgt) {
var keyName = 'nod_rollover';
$(tgt).css('cursor', 'pointer');
$(tgt).each(function () {
var obj = {};
obj.orig_src = this.src;
obj.over_src = this.src.substring(0, this.src.lastIndexOf('.')) + '_on' + this.src.substring(this.src.lastIndexOf('.'));
$.data(this, keyName, obj);
$(this)
.bind('mouseover', function () {
if ($.data(this, keyName).sw == 0)return false;
$(this).attr('src', $.data(this, keyName).over_src);
})
.bind('mouseout', function () {
if ($.data(this, keyName).sw == 0)return false;
$(this).attr('src', $.data(this, keyName).orig_src);
})
});
//image cache
imgCache(tgt);
}
function imgCache(tgt) {
var ar = [];
$(tgt).each(function () {
ar[ar.length] = new Image();
ar[ar.length - 1].src = this.src.substring(0, this.src.lastIndexOf('.')) + '_on' + this.src.substring(this.src.lastIndexOf('.'));
});
ar[ar.length] = new Image();
ar[ar.length - 1].src = '/css/ph65/img/common/bg_movie_popup_l.png';
ar[ar.length] = new Image();
ar[ar.length - 1].src = '/css/ph65/img/common/bg_movie_popup_r.png';
}
function getMonthFix(){
var xm1;
$.ajax({
dataType:'xml'
,url:g_path.monthfixBanner
,success:function(xml){
xm1=$(xml).find('Contents');
$(".point_inner li").children('ul.point_img').remove();
if(xm1.length > 3){
makeMonthFixBanner(xm1.slice(0,3), ".point_inner li.point_1");
makeMonthFixBanner(xm1.slice(3,xm1.length), ".point_inner li.point_2");
}
else if(xm1.length == 3){
makeMonthFixBanner(xm1.slice(0,3), ".point_inner li.point_1");
}
else{
makeMonthFixBanner(xm1, ".point_inner li.point_1");
}
}
,error:function(xhr){
$(".point_inner li").children('ul.point_img').remove();
console.log('ERROR: ' + xhr.status);
}
});
}
function makeMonthFixBanner(xd , tg){
var ht = '';
ht += '';
for(var i=0; i < 3 ;i++){
if(xd.eq(i).find('ImgUrl').text()){
ht += '';
}
else if(xd.eq(i).find('SiteId').text()){
ht += '';
}
else{
ht += '';
}
}
ht += '
';
$(tg).append(ht);
}
var switchDevice = {
go: function () {
var loc = location.href.split('/');
var ck = cookF.get('EnvSwitch');
var u = '/';
if (ck == '_smp') {
if(!g_browser.SmartPhone){
setEnvSwitch();
cookF.set('EnvSwitch', '', {domain: '.nhk-ondemand.jp'});//ドメインを指定して削除
}else{
return false;
}
// u = '/share/smp/';
// if (loc[3] == 'share') {
// if (loc[4] == 'missed') {//見逃し
// if (loc[6] == 'c') {
// u = '/share/smp/#/share/smp/minogashi_list.html?' + loc[7];
// }
// else {
// u = '/share/smp/#/share/smp/minogashi.html';
// }
// }
// else if (loc[4] == 'news') {//ニュース
// u = '/share/smp/#/share/smp/news.html';
// }
// else if (loc[4] == 'enjoy' && loc[5] == '') {//初めての方へ
// u = '/share/smp/#/share/smp/enjoy.html';
// }
// else if (loc[4] == 'purchase') {//購入方法
// u = '/share/smp/#/share/smp/purchase.html';
// }
// else if (loc[4] == 'premium') {
// if (loc[6] == 'n') {
// u = '/share/smp/#/share/smp/newrel_list.html?p';
// }
// else if (loc[6] == 'a' && loc[7] != '0') {
// u = '/share/smp/#/share/smp/premium_list.html?' + g_smpprolist[loc[7] + '/' + loc[8]];
// }
// else {
// u = '/share/smp/#/share/smp/premium.html';
// }
// }
// else if (loc[4] == 'library') {
// if (loc[6] == 'n') {
// u = '/share/smp/#/share/smp/newrel_list.html?l';
// }
// else if (loc[6] == 'a' && loc[7] != '0') {
// u = '/share/smp/#/share/smp/library_list.html?' + g_smpprolist[loc[7] + '/' + loc[8]];
// }
// else {
// u = '/share/smp/#/share/smp/library.html';
// }
// }
// else if (loc[4] == 'search') {//検索
// u = '/share/smp/#/share/smp/search.html?/' + loc[6] + '/' + loc[7] + '/';
// }
// else if (loc[4] == 'faq') {//お問い合わせ
// u = '/share/smp/#/share/smp/faq.html';
// }
// else if (loc[4].indexOf('pickup', 0) != -1 ||
// loc[4].indexOf('pr', 0) != -1 ||
// loc[4].indexOf('special', 0) != -1 ||
// loc[4].indexOf('campaign', 0) != -1) { //特集・PR・スペシャル・キャンペーン
// u = '/share/smp/#/share/smp/' + loc[4] + '_' + loc[5];
// }
// else if (loc[4] == 'free') {//無料
// u = '/share/smp/#/share/smp/free_list.html';
// }
// }
// else if (loc[3] == 'regist' && loc[4] == 'entry') {//会員登録
// u = '/share/smp/#/share/smp/regist.html';
// }
// else if (loc[3] == 'login') {//ログイン
// u = '/share/smp/#/share/smp/login.html';
// }
// else if (loc[3] == 'reminder') {//パスコードを忘れた方
// u = '/share/smp/#/share/smp/remind.html';
// }
// else if (loc[3] == 'user' || loc[3] == 'regist' || loc[3] == 'withdrawal') {//マイページ関連
// u = '/share/smp/#/share/smp/mycontents.html';
// }
// else if (loc[3] == 'goods') {//商品ページ
// u = '/share/smp/#/share/smp/goods.html?' + loc[4];
// }
// else if (loc[3] == 'inquiry') {//お問い合わせフォーム
// u = '/share/smp/#/share/smp/inquiry.html';
// }
}
else if (ck == '_tab') {
if(!g_browser.Tablet){
setEnvSwitch();
cookF.set('EnvSwitch', '', {domain: '.nhk-ondemand.jp'});//ドメインを指定して削除
}else{
return false;
}
// u = '/share/tab/';
// if (loc[3] == 'share') {
// if (loc[4].indexOf('pickup', 0) != -1 ||
// loc[4].indexOf('pr', 0) != -1 ||
// loc[4].indexOf('special', 0) != -1 ||
// loc[4].indexOf('campaign', 0) != -1) {
// u = '/share/tab/' + loc[4] + '_' + loc[5];
// }
// else if (loc[4] == 'free') {
// u = '/share/tab/free.html';
// }
// }
}
else {
//PC,SMP,TAB以外はEnvSwitchを削除
setEnvSwitch();
cookF.set('EnvSwitch', '', {domain: '.nhk-ondemand.jp'});//ドメインを指定して削除
}
// location.href = u;
location.reload();
},
bind: function () {
},
cl: function (ty) {
var ar = [0, '_smp', '_tab']
setEnvSwitch();
cookF.set('EnvSwitch', ar[ty], {domain: '.nhk-ondemand.jp', expire: 365});
switchDevice.go();
return false;
},
init: function () {
if (!cookF.check()) {
}
else {
// check for iPadOS13 bug
if( /iPad|Macintosh/i.test(navigator.userAgent) && 'ontouchend' in document ){
var ck = cookF.get('EnvSwitch');
if (ck != '_tab') {
ck = '_tab';
setEnvSwitch();
cookF.set('EnvSwitch', ck, {domain: '.nhk-ondemand.jp'});
}
} else {
var ck = cookF.get('EnvSwitch');
if (ck == '_txt') {//bandaid
ck = 'stayPC';
setEnvSwitch();
cookF.set('EnvSwitch', ck, {domain: '.nhk-ondemand.jp'});
}
//スマホ、タブのUAはEnvSwitch削除
if (ck == 'stayPC' && !this.isEscape() && (g_browser.SmartPhone || g_browser.Tablet)) {
setEnvSwitch();
cookF.set('EnvSwitch', '', {domain: '.nhk-ondemand.jp'});//ドメインを指定して削除
// location.href = '/';
location.reload();
return;
}
/*
if(g_browser.SmartPhone)ck='_smp';
if(g_browser.Tablet)ck='_tab';
cookF.set('EnvSwitch',ck,{});
*/
if (ck != 'stayPC' && !this.isEscape()) {
// if (ck != 'stayPC' && ck != '_tab' && !this.isEscape()) {
switchDevice.go();
}
}
}
this.bind();
}
, isEscape: function () {
//リダイレクト回避ページリスト
var ar = '/share/faq/faq_cookie.html,/share/faq/faq_ssl.html,/share/calendar/,/share/about/,/share/sns/help.html'.split(',');
for (var i = 0; i < ar.length; i++) {
if (location.href.search(ar[i]) > -1) {
return true;
}
}
return false;
}
};
//*********************//
//****XML CALLBACK*****//
//*********************//
var nodjax = {
getGoods: function (o) {
var q = o.q;
var cb = o.callback;
var tgt = o.target;
if (typeof o.url !== 'undefined' || o.url !== undefined) {
var url = o.url;
}else{
var url = g_path.goods;
}
if (g_stgDate != '') q.G98 = DateIF.reformat('YYYY-MM-DDThh:mm:ss',g_stgDate);
if (!q.G54) q.G54 = 1000;
if (!q.G5) q.G5 = '1,4,5';
g_xhrsearch = $.ajax({
dataType: 'xml'
// , url: g_path.goods
, url: url
, data: q
, type: 'POST'
, success: function (dt) {
if ($(dt).find('Package').length == 0) {
if (typeof o.callbackEr !== 'undefined' || o.callbackEr !== undefined) {
$(tgt).html(g_errorhtml);
o.callbackEr(o);
}else{
this.error();
}
return;
}
// if(tgt)$(tgt).html('');
o.xml = dt;
cb(o);
if (g_myP.local) {
location.href = '#content';
location.href = g_myP.local;
delete g_myP.local;
}
}
, error: function () {
if (o.error) {
o.error();
}
else {
$(tgt).html(g_errorhtml);
$(g_tgt.navHead).html('');
$(g_tgt.kensu).html('0件');
}
}
});
},
getSites: function (o) {
var q = o.q;
var cb = o.callback;
var tgt = o.target;
if (typeof o.url !== 'undefined' || o.url !== undefined) {
var url = o.url;
}else{
var url = g_path.sites;
}
if (g_stgDate != '') q.P98 = g_stgDate;
if (!q.P5) q.P5 = '1,4,5';
g_xhrsearch = $.ajax({
dataType: 'xml'
// , url: g_path.sites
, url: url
, data: q
, type: 'POST'
, success: function (dt) {
if (tgt) $(tgt).html('');
o.xml = dt;
cb(o);
if (g_myP.local) {
location.href = '#content';
location.href = g_myP.local;
delete g_myP.local;
}
}
, error: function () {
if (o.error) o.error();
else $(tgt).html(g_errorhtml);
}
});
},
missedF: false,
favlstF: false,
xml: null,
getFavJSON: function (cb, flg) {
if (!g_user.islogin) {
nodjax.favlstF = true;
if (flg || nodjax.missedF) {
cb(nodjax.xml);
}
return;
}
$.getJSON(
g_path.favView2,
{
sess: cookF.get('sessionid')
},
function (json) {
nodjax.favlstF = true;
g_fav.str = '';
var tmp = new Array();
if (json.code == '000') {
g_fav.str = json.listdata;
}
if (flg || nodjax.missedF) {
cb(nodjax.xml);
}
}
);
},
getMissedPackXML: function (cb) {
$.ajax({
url: '/missedProgram/detail/0/0/'
, dataType: 'text'
, success: function (mxml) {
nodjax.missedF = true;
nodjax.xml = parseXml(mxml);
if (nodjax.favlstF) {
cb(nodjax.xml);
}
}
});
nodjax.getFavJSON(cb, 0);
},
getResumeTime: function (obj) {
if (obj.judgeflag) {
$.ajax({
url: g_path.getuuid,
type: 'post',
data: {
sess: cookF.get('sessionid')
},
success: function (x) {
var uuid = $(x).find('uuid:eq(0)').text();
$.ajax({
url: g_path.getresume,
type: 'post',
data: {
svid: nodjax.getsvid(),
uuid: uuid,
cid: obj.opusid
},
success: function (tx) {
var dt = tx.split('\n');
var o = {};
var t;
for (var i = 0; i < dt.length; i++) {
t = dt[i].split('=');
if (t.length == 2) {
o[t[0]] = t[1].replace(/[\r\t\s]$/gi, '');
}
}
if (o.issuccessFlg == 'true') {
obj.callback(o.playTime);
}
else {
obj.callback('0000:00');
}
}
});
}
});
}
else {
obj.callback('0000:00');
}
},
getsvid: function () {
var h = location.hostname.split('.');
var def = {
't1-stage': '00000001',
't1-www': '00000002',
't3-stage': '00000003',
't3-www': '00000004',
'stage': '00000005',
'www': '00000006'
};
return def[h[0]];
},
timeconv: function (str) {
var t = str.split(':');
var o = {h: 0, m: 0, s: 0};
var n = {h: 0, m: 0, s: 0};
if (t.length == 2) {//mmmm:ss->hh:mm:ss
o.m = parseInt(t[0], 10);
o.s = parseInt(t[1], 10);
n.m = o.m % 60;
n.h = (o.m - n.m) / o.m;
n.s = o.s;
return DateIF.zeroPad(n.h, 2) + ':' + DateIF.zeroPad(n.m, 2) + ':' + DateIF.zeroPad(n.s, 2);
}
else if (t.length == 3) {//hh:mm:ss->mmmm:ss
o.h = parseInt(t[0], 10);
o.m = parseInt(t[1], 10);
o.s = parseInt(t[2], 10);
n.m = o.h * 60 + o.m;
n.s = o.s;
return DateIF.zeroPad(n.m, 4) + ':' + DateIF.zeroPad(n.s, 2);
}
}
};
function beforeAjax() {
var u = this.url;
var d = this.data;
if (this.type == 'GET') {
u = u + queryF.setStr(this.data);
debug('' + u + '');
}
else if (this.type == 'POST') {
var ht = '';
ht += '';
debug(ht);
}
}
var makeItem = {
iconArr: [
''
, '見逃し'
, '特選'
, ''
]
, general: function (o) {
var q = o.q;
var xml = o.xml;
var tgt = o.target;
var coreCB = o.coreCB;
var xa = $(xml).find('Package');
g_Result = $(xml).find('Result').text();
g_Length = xa.length;
if (o.length) {
g_Length = o.length;
}
debug(g_Length);
if (g_Length == 0) {
$(tgt).html(g_errorhtml);
$(g_tgt.navHead).html('');
$(g_tgt.kensu).html('0件');
}
else {
var makeFunc = (coreCB) ? coreCB : makeItem.generalCore;
var ht = '';
for (var i = 0; i < g_Length; i++) {
ht += makeFunc(xa.eq(i), null);
}
$(tgt).html(ht);
if (!o.nokensu) nod.makeKensu(tgt);
}
}
, generalCore: function (xd, tgt) {
var imgs = xd.find('TitleImage_h').text();
// var divi = parseInt(xd.find('Division').text(), 10);
var divi = 0;
var mt = '# mi lib lib'.split(' ');
var X = {
ID: xd.find('Id').text()
, URI: xd.find('Uri').text().replace('index.html', '')
, TITLE: xd.find('Title').text()
, SUBTITLE: xd.find('Subtitle').text()
, SYNOPSIS: xd.find('Synopsis_short').text()
, ONTHEAIR: nod.dateFormat2(xd.find('BroadcastDate').text())
, OAYEAR: nod.YYYYFormat(xd.find('OnTheAir').text())
, PRICE: formatNum(xd.find('PricewithTax').text())
, QTRANGE: nod.convQtRange(xd.find('QuantityRange').text())
, PERIOD: DateIF.reformat('YYYY年M月D日', xd.find('PeriodEnd').text())
, IMAGE: g_domain + imgs
, ICON: makeItem.iconArr[divi]
, NEW: ''
, NEWHOSEI: 0
};
var dp = DateIF.parse(xd.find('PeriodStart').text());
var today = (g_xml.d) ? g_xml.d : (new Date());
if (DateIF.diffDate(today, dp) < g_newlim[divi]) {
X.NEW = '[新着]';
X.NEWHOSEI = 25;
}
var fv = (g_fav.str.search(X.ID) > -1) ? 0 : 1;
var ht = '';
ht += '';
ht += '
';
ht += '
';
ht += '
' + X.SYNOPSIS + '
';
ht += '
';
ht += '- ' + X.ONTHEAIR + X.ICON + '
';
//見逃し見放題を買ってる人には、単品の見逃しは値段出さない
//特選見放題を買ってる人には、特選ライブラリの値段出さない
if (!((divi == 1 && g_user.isMinogashiMiho == 1) || (divi == 2 && g_user.isTokusenMiho == 1))) {
ht += '- ' + X.PRICE + '円(税込み) 購入後' + X.QTRANGE + '
';
}
//見逃し見放題を買ってない人にだけ、公開期限を出す
if (divi == 1 && g_user.isMinogashiMiho == 0) {
ht += '- 公開終了:' + X.PERIOD + '(購入期限はその24時間前です)
';
}
ht += '
';
ht += '
';
ht += '
';
ht += '';
ht += '
';
ht += '
';
ht += '
';
if (tgt) $(tgt).append(ht);
else return ht;
}
, sites: function (o) {
var xml = o.xml;
var tgt = o.target;
var xa = $(xml).find('Group');
g_Result = $(xml).find('Result').text();
g_Length = xa.length;
if (g_Length == 0) {
//0件文言
if (location.href.search('/share/search/') > -1) {
//検索結果ページだったら
$(tgt).html(g_searchErrorhtml);
} else {
//検索結果ページ以外
$(tgt).html(g_errorhtml);
}
$(g_tgt.navHead).html('');
$(g_tgt.kensu).html('0件');
}
else {
var ht = '';
for (var i = 0; i < g_Length; i++) {
ht += makeItem.sitesCore(xa.eq(i), null);
}
$(tgt).html(ht);
nod.makeKensu(tgt);
}
}
, sitesCore: function (xd, tgt) {
var imgs = xd.find('TitleImage_h').text();
var X = {
URI: xd.find('Uri').text().replace('index.html', '')
, TITLE: xd.find('Title').text()
, SYNOPSIS: xd.find('Synopsis').text()
, ONTHEAIR: nod.dateFormat(xd.find('OnTheAir').text())
, IMAGE: g_domain + imgs
, NUM: '(' + xd.find('NumberofPackage').text() + '本)'
};
var ht = '';
ht += '';
ht += '
';
// ht+='
';
ht += '
' + X.TITLE + '';
//新着タブで、表示が番組のごとのとき、本数表示を消す
//g_hash.tab
//'a':全番組タブ 'n':新着タブ
if (g_hash.tab == 'a') {
ht += '' + X.NUM + '';
}
ht += '
';
ht += '
' + X.SYNOPSIS + '
';
if (X.NUM == '(0本)') {
ht += '
この番組の配信はお休みしています。
';
}
ht += '
' + X.ONTHEAIR + '
';
ht += '
';
ht += '
';
ht += '';
ht += '
';
ht += '
';
ht += '
';
ht += '';
ht += '';
ht += '
' + X.TITLE + '';
//新着タブで、表示が番組のごとのとき、本数表示を消す
//g_hash.tab
//'a':全番組タブ 'n':新着タブ
if (g_hash.tab == 'a') {
ht += '' + X.NUM + '';
}
ht += '' + X.ONTHEAIR + '
';
if (tgt) $(tgt).append(ht);
else return ht;
}
, expireCore: function (xg, tgt) {
var imgs = xg.find('TitleImage_m').text();
var divi = 0;
var mt = 'mi lib lib lib'.split(' ');
var X = {
ID: xg.find('Id').text()
, URI: xg.find('Uri').text().replace('index.html', '')
, TITLE: xg.find('Title').text()
, SUBTITLE: xg.find('Subtitle').text()
, SYNOPSIS: xg.find('Synopsis_short').text()
, ONTHEAIR: nod.dateFormat(xg.find('OnTheAir').text())
, PRICE: formatNum(xg.find('PricewithTax').text())
, QTRANGE: nod.convQtRange(xg.find('QuantityRange').text())
, PERIOD: DateIF.reformat('YYYY年M月D日', xg.find('PeriodEnd').text())
, IMAGE: g_domain + imgs
, ICON: makeItem.iconArr[divi]
, YEAR: nod.setYidx(xg.find('OnTheAirforSearch').text().split(';'))
, BYRANGE: nod.convBuyRange(xg.find('PeriodEnd').text(), xg.find('QuantityRange').text())
};
var divi = xg.find('Division').text();
var fv = (g_fav.str.search(X.ID) > -1) ? 0 : 1;
var ht = '';
ht += '';
ht += '
';
ht += '
';
ht += '
' + X.SYNOPSIS + '
';
ht += '
';
ht += '- ' + X.ONTHEAIR + X.ICON + '
';
if (!((divi == 1 && g_user.isMinogashiMiho == 1) || (divi == 2 && g_user.isTokusenMiho == 1))) {
ht += '- ' + X.PRICE + '円(税込み) 購入後' + X.QTRANGE + '
';
}
ht += '- 公開終了:' + X.PERIOD + '';
if (!((divi == 1 && g_user.isMinogashiMiho == 1) || (divi == 2 && g_user.isTokusenMiho == 1))) {
ht += X.BYRANGE;
}
ht += '
';
ht += '
';
ht += '
';
ht += '';
ht += '
';
ht += '
';
ht += '';
ht += '' + X.ICON + '';
ht += '';
ht += '';
ht += '';
ht += '';
ht += '' + cutText(X.TITLE, 11) + '
' + cutText(X.SUBTITLE, 11) + '';
ht += '' + X.ONTHEAIR + '
';
ht += '
';
if (tgt) $(tgt).append(ht);
else return ht;
}
};
function parseXml(xmlText) {
if (window.ActiveXObject) {
try {
var domDoc = new ActiveXObject('Microsoft.XMLDOM')
domDoc.async = false;
domDoc.loadXML(xmlText);
return domDoc;
}
catch (e) {
error = e;
return error;
}
}
else if (window.DOMParser) {
var domParser = new DOMParser();
return domParser.parseFromString(xmlText, 'application/xml');
}
else {
return null;
}
}
function convQuery(q) {
var ret = {};
for (var i in q) {
if (i == 'G53') {
if (q[i] == 3) {
ret.P53 = 1;
}
else if (q[i] == 10) {
ret.P53 = 6;
}
else if (q[i] == 11) {
ret.P53 = 7;
}
else {
ret.P53 = 5;
}
}
else {
ret[i.replace('G', 'P')] = q[i];
}
}
return ret;
}
//*********************//
//****for NOD Func*****//
//*********************//
var g_xml = {};
var nod = {
dateFormat: function (_Y) {
_Y = _Y.replace(/放送/, '');
if (_Y.indexOf('月') > -1) {
return _Y.replace(/\d+年/, '') + '放送';
}
return _Y + '放送';
}
, YYYYFormat: function (_Y) {
var tmp = _Y.split('年');
if (tmp.length == 2) {
return tmp[0];
}
return '';
}
, dateFormat2: function (s) {
var oatime=new Date(s) ;
var today= DateIF.parse(g_serverDate) ;
if (oatime.getFullYear() == today.getFullYear() ){
return DateIF.reformat('M月D日放送', s);
}else{
return DateIF.reformat('YYYY年M月D日放送', s);
}
// var sn = {};
// sn.Y = s.indexOf('年');
// sn.M = s.indexOf('月');
// sn.D = s.indexOf('日');
// if (sn.D < 0 || sn.M < 0 || sn.Y < 0)return s;
// sn.MM = parseInt(s.substring(sn.Y + 1, sn.M), 10);
// sn.DD = parseInt(s.substring(sn.M + 1, sn.D), 10);
// return sn.MM + '月' + sn.DD + '日放送';
}
, convQtRange: function (_n) {
_n = parseInt(_n, 10);
if (isNaN(_n)) {
return _n;
}
return ((_n - (_n % 24)) / 24).toString() + '日' + (_n % 24) + '時間';
}
, convPeriod: function (yyy) {
var today = new Date();
var xday = new Date(yyy.split('T')[0].split('-').join('/'));
var dayMS = 24 * 60 * 60 * 1000;
var n = Math.floor((xday.getTime() - today.getTime()) / dayMS) + 1;
return n;
}
, convBuyRange: function (_P, _QR) {
var today = (g_xml.d) ? g_xml.d : (new Date());
var koukai = DateIF.parse(_P);
var hanbai = DateIF.addDate(koukai, {h: -1 * _QR});
var range = DateIF.diffDate(hanbai, today) + 1;
if (range < 1) {
return '(購入期限を過ぎました)';
}
else {
return '(購入期限は、本日を含めあと' + range + '日です)';
}
}
, getPurchaseDec: function (o) {
$.ajax({
url: g_path.purchaseDecision,
dataType: 'xml',
data: {
sess: cookF.get('sessionid'),
goods: o.goodsid
},
success: function (pdx) {
if ($(pdx).find('Status').text() == '000') {
o.purchaseDecXml = pdx;
}
o.callback(o);
}
});
}
, getRangeString: function (o) {
var today = (g_xml.d) ? g_xml.d : (new Date());
var qr = o.xd.find('QuantityRange').text();
var koukai = DateIF.parse(o.xd.find('PeriodEnd').text());
var hanbai = DateIF.addDate(koukai, {h: -1 * qr});
var range = DateIF.diffDate(hanbai, today) + 1;//本日含める
var rangeKoukai = DateIF.diffDate(koukai, today) + 1;//本日含める
function getNobuy() {
var t = '';
// t += '視聴期間:購入後' + nod.convQtRange(qr);
// t += '
';
if (range < 1) {
// t += '購入期限を過ぎました';
t += '単品商品は購入期限を過ぎました';
}
else {
// if (range <= 30) {
// t += '購入期限:本日を含めあと' + range + '日';
if (range < 3) {
var ht= (range==1)? 'きょうまで' : 'あすまで';
t += '購入期限:' + ht + '';
} else {
var dt = hanbai.getFullYear() + '-' + (hanbai.getMonth() + 1) + '-' + hanbai.getDate() + 'T' + hanbai.getHours() + ':' + hanbai.getMinutes();
t += '購入期限:' + DateIF.reformat('YYYY年M月D日', dt);
}
}
t += '
' + getperiodEnd();
return t;
}
function getperiodEnd(){
if (rangeKoukai < 3) {
var ht= (rangeKoukai==1)? 'きょうまで' : 'あすまで';
return '公開終了:' + ht + '';
}
return DateIF.reformat('公開終了:YYYY年M月D日', o.xd.find('PeriodEnd').text());
}
function getHaishin() {
if (rangeKoukai < 3) {
var ht= (rangeKoukai==1)? 'きょうまで' : 'あすまで';
return '配信:' + ht + '';
}
return DateIF.reformat('配信:YYYY年M月D日まで', o.xd.find('PeriodEnd').text());
}
/*
//2013.0129 "視聴可能期間"は不要文言のため、処理削除
function getShichokano(){
if(o.purDecXML){
var $dec=$(o.purDecXML).find('Id:contains("'+o.xd.find('Id').text()+'")').parent('Decision');
if($dec.find('result')=='1'){
return DateIF.reformat('視聴可能期間:YYYY年M月D日 h時m分',$dec.find('availableLimit').text());
}
}
return getNobuy();
}
*/
var divi = parseInt(o.xd.find('Division').text(), 10);
if (g_user.islogin) {
if ((g_user.isMinogashiMiho == 1) || (g_user.isTokusenMiho == 1)) {
return getHaishin();
}
// return getShichokano();//2013.0129 "視聴可能期間"は不要文言のため、処理削除
}
return getNobuy();
}
, layoutHash: {
thumb: '/css/ph65/movie_item_thumb.css'
, list: '/css/ph65/movie_item_list.css'
}
, changeLayout: function (hs) {
$('link.changeLayout').attr("href", this.layoutHash[hs]);
cookF.set('nodLayoutStyle', hs, {expires: 365});
g_cookie = hs;
var sA = {
thumb: 'viewThumbNail'
, list: 'viewList'
};
s.getAjaxAction(sA[hs]);
}
, setupLayout: function () {
var lo = cookF.get('nodLayoutStyle');
if (lo != '') $('link.changeLayout').attr('href', this.layoutHash[lo]);
$('ul.nodLayoutStyle li.item1 a').bind('click', function () {
nod.changeLayout('thumb');
return false;
});
$('ul.nodLayoutStyle li.item2 a').bind('click', function () {
nod.changeLayout('list');
return false;
});
}
, initPackSolo: function () {
var base = 'td.sort ul li a';
var disp = 'inline-block';
if (g_browser.iev == 6 || g_browser.iev == 7) {
disp = 'inline';
}
$('td.sort ul li.selnarrow a, td.sort ul li.narrow a').removeClass('current');
if (g_hash.pack == 1) {
$('td.sort li.narrow').show().css('display', disp);
// $(base + ':contains("各回")').addClass('current');
$(base + ':contains("エピソード (各回)")').addClass('current');
$(base + ':contains("単品")').addClass('current');
g_myP.G5 = 1;
}
else if (g_hash.pack == 2) {
$('td.sort li.narrow').show().css('display', disp);
// $(base + ':contains("各回")').addClass('current');
$(base + ':contains("エピソード (各回)")').addClass('current');
$(base + ':contains("パック")').addClass('current');
g_myP.G5 = 2;
}
else if (g_hash.pack == 3) {
$('td.sort li.narrow').hide();
// $(base + ':contains("番組ごと")').addClass('current');
$(base + ':contains("シリーズ")').addClass('current');
g_myP.G5 = 3;
$(base + ':contains("人気順")').hide();
if ($(base + ':contains("人気順")').hasClass('current')) {
$(base + ':contains("人気順")').removeClass('current');
$(base + ':contains("新着順")').addClass('current');
}
if (cookF.get('sorter') == 9) {
cookF.set('sorter', 4, {});
g_myP.G53=4;
}
}
else {
$('td.sort li.narrow').show().css('display', disp);
$(base + ':contains("人気順")').show().css('display', disp); //---Pyae---///
// $(base + ':contains("各回")').addClass('current');
$(base + ':contains("エピソード (各回)")').addClass('current');
// $(base + ':contains("すべて")').addClass('current');
delete g_myP.G5;
//g_qAry.G5='1,2';
}
}
, narrowCtrl: function () {
var disp = 'inline-block';
if (g_browser.iev == 6 || g_browser.iev == 7) {
disp = 'inline';
}
if (g_qAry.G9 == 1) {//字幕のときは非表示
$('td.sort li.selnarrow').each(function () {
$(this).find('a:eq(1)').hide();
});
$('td.sort li.narrow').hide();
}
else {
$('td.sort li.selnarrow').each(function () {
$(this).find('a:eq(1)').show();
}).css('color', '#505050').find('strong').css('color', '#505050');
$('td.sort li.narrow').show().css('display', disp);
}
//alert('g_hash.pack='+g_hash.pack+'\ng_hash.Class='+g_hash.Class);
//すべて・単品・パック の表示
$('td.sort li.selnarrow a.current').removeClass('current');
if (g_hash.pack == 0 || g_hash.pack == 1 || g_hash.pack == 2) {//各回(すべて、単品、パック)
$('td.sort li.selnarrow').each(function () {
$(this).find('a:eq(0)').addClass('current');
});
var cur = 0;
if (g_hash.Class == '1-2') {
cur = g_hash.pack;
$('td.sort li.narrow a')
.removeClass('current')
.show()
.css('color', '#0088CC');
}
else if (g_hash.Class == '1') {
cur = 1;
$('td.sort li.narrow').each(function () {
$(this).find('a:eq(0), a:eq(2)').hide();
}).css('color', '#FFF').find('strong').css('color', '#505050');
}
else if (g_hash.Class == '2') {
cur = 2;
$('td.sort li.narrow').each(function () {
$(this).find('a:eq(0), a:eq(1)').hide();
}).css('color', '#FFF').find('strong').css('color', '#505050');
}
$('td.sort li.narrow').each(function () {
$(this).show().css('display', disp)
.find('a:eq(' + cur + ')')
.show()
.addClass('current')
.css('color', '#FFF');
});
}
else if (g_hash.pack == 3) {//番組ごと
$('td.sort li.selnarrow').each(function () {
$(this).find('a:eq(1)').addClass('current');
});
$('td.sort li.narrow').hide();
}
}
, initSort: function (c) {
// if (isNaN(c) || (c != 4 && c != 3)) {
// if (isNaN(c) || (c != 4 && c != 10 && c != 3 && c != 8)) {
if (isNaN(c) || (c != 10 && c != 11 && c != 4 && c != 9)) {
c = 4;
}
cookF.set('sorter', c, {expires: 365});
g_myP.G53 = c;
g_hash.page = 1;
g_myP.G55 = g_hash.page;
g_qAry.G55 = g_myP.G55;
var base = 'td.sort ul li.sortli a';
if ($(base + ':contains("シリーズ")').hasClass('current')) { //番組ごと
// g_hash.pack=0;
$(base + '.current').removeClass('current');
$(base + ':eq(0)').addClass('current');
}
$(base).removeClass('current down up blur');
// if (c == 1) {
// $(base + ':contains("放送日順")').addClass('current down');
// }
// else if (c == 2) {
// $(base + ':contains("放送日順")').addClass('current up');
// }
if (c == 4) {
$(base + ':contains("新着順")').addClass('current');
}
else if (c == 10) {
$(base + ':contains("放送日 (昇順)")').addClass('current');
}
else if (c == 11) {
$(base + ':contains("放送日 (降順)")').addClass('current');
}
else if (c == 3) {
$(base + ':contains("番組名順")').addClass('current');
}
else if (c == 9) {
$(base + ':contains("人気順")').addClass('current');
}
}
, bindSort: function (cb) {
var st;
var base = 'td.sort ul li a';
$(base + ':contains("新着順")').click(function () {
this.blur();
if ($(this).hasClass('current')) {
return false;
}
g_psf=0;
st = 4;
nod.initSort(st);
cb(st);
return false;
});
$(base + ':contains("放送日 (昇順)")').click(function () {
this.blur();
if ($(this).hasClass('current')) {
return false;
}
g_psf=0;
st = 10;
// if ($(this).hasClass('up')) {
// st = 1;
// }
nod.initSort(st);
cb(st);
return false;
});
$(base + ':contains("放送日 (降順)")').click(function () {
this.blur();
if ($(this).hasClass('current')) {
return false;
}
g_psf=0;
st = 11;
// if ($(this).hasClass('up')) {
// st = 1;
// }
nod.initSort(st);
cb(st);
return false;
});
$(base + ':contains("番組名順")').click(function () {
this.blur();
if ($(this).hasClass('current')) {
return false;
}
g_psf=0;
st = 3;
nod.initSort(st);
cb(st);
return false;
});
$(base + ':contains("人気順")').click(function () {
this.blur();
if ($(this).hasClass('current')) {
return false;
}
g_psf=0;
st = 9;
nod.initSort(st);
cb(st);
return false;
});
}
, initPageNum: function (gp) {
if (gp == 'G') {
g_myP.G54 = 30;
}
else if (gp == 'P') {
g_myP.P54 = 30;
}
}
, history: function () {
var h = location.hash.replace(/^.*#/, '');
if (h == '')return;
pageload(h);
$.historyLoad(h);
}
, initHistory: function () {
// Initialize jQuery.history.
if (location.hash == '') {
initHash();
}
pageload('');
$.historyInit(pageload, g_historyBaseFile);
}
, makeKensu: function (navFootAppendTgt) {
var df = {
PGMAX: g_myP.G54
, PGNUM: g_myP.G55
};
if (g_myP.P54) {
df = {
PGMAX: g_myP.P54
, PGNUM: g_myP.P55
};
}
var pg_max = (g_Result - 1 - (g_Result - 1) % df.PGMAX) / df.PGMAX + 1;
var pg_st = parseInt(df.PGNUM, 10);
var it_st = (pg_st - 1) * df.PGMAX + 1;
var it_en = it_st + g_Length - 1;
$(g_tgt.kensu).html(it_st + '~' + it_en + '/' + g_Result + '件');
var navhtml = '';
var wingLength = 10;
var _i = pg_st - (wingLength - 1);
var _max = pg_st + (wingLength - 1);
if (_max > pg_max) _max = pg_max;
if (_i < 1) _i = 1;
for (var i = _i; i <= _max; i++) {
if (i != df.PGNUM) {
navhtml += '';
}else if (i == df.PGNUM) {
navhtml += '';
}
navhtml += i;
if (i != df.PGNUM) {
navhtml += '';
}else if (i == df.PGNUM) {
navhtml += '';
}
navhtml += ' ';
}
var prevPage = (df.PGNUM == 1) ? '前へ' : '前へ';
var nextPage = (df.PGNUM >= pg_max) ? '次へ' : '次へ';
var navhtml2 = '';
navhtml2 = prevPage;
navhtml2 += '|';
navhtml2 += nextPage;
$(navFootAppendTgt).append('' + prevPage + navhtml + nextPage + '
');
$(g_tgt.navHead).html(navhtml2);
}
, bgInit: function () {
var bg = cookF.get('colorbg');
if (bg == '')return;
setBG(bg);
}
, makeYndex: function (_y) {
var idx = getArrIdx(g_yearAry, _y);
if (idx == -1)return false;
var tmp = g_yearAry[idx].split('-');
if (tmp.length != 2)return false;
var str = (tmp[0] == tmp[1]) ? (tmp[0] + '年') : (tmp[0] + '年~' + tmp[1] + '年');
var i = parseInt(tmp[0], 10);
var rtn = new Array();
while (i <= parseInt(tmp[1], 10)) {
rtn.push(i);
i++;
}
return [rtn.join(','), str];
}
, setYidx: function (_y) {
var res = new Array();
for (var i = 0; i < _y.length; i++) {
res[i] = 'oa' + _y[i];
}
if (res.length)return res.join(' ');
return 'oa0';
}
,makeYearlist: function (tgt,type) {
var ht='';
if(type=='select'){
ht += '';
}
for(var i=0 ; i< g_yearAry.length;i++){
var tmp = g_yearAry[i].split('-');
var str = (tmp[0] == tmp[1]) ? (tmp[0] + '年放送') : (tmp[0] + '年~' + tmp[1] + '年放送');
var o_value = (tmp[0] == tmp[1]) ? (tmp[0]) : (tmp[0] + '-' + tmp[1]);
if(type=='select'){
ht += ''
}else{
ht += ''+ str +''
}
}
$(tgt).html(ht);
},
makeYearlistNew: function (tgt,type) {
var ht='';
if(type=='select'){
ht += '';
}
for(var i=0 ; i< g_yearAry.length;i++){
var tmp = g_yearAry[i].split('-');
var str = (tmp[0] == tmp[1]) ? (tmp[0] + '年放送') : (tmp[0] + '年~' + tmp[1] + '年放送');
var o_value = (tmp[0] == tmp[1]) ? (tmp[0]) : (tmp[0] + '-' + tmp[1]);
if(type=='select'){
ht += ''
}else{
ht += ''+ str +''
}
}
$(tgt).html(ht);
}
};
//*********************//
//*** Thumb Window ****//
//*********************//
function nodpop() {
if (g_popup == true) {
return;
}
$('p.photo a img, p.logo a img').each(function () {
if ($.data(this, 'nodpoptimer')) {
clearTimeout($.data(this, 'nodpoptimer'));
$.removeData(this, 'nodpoptimer');
//初期表示
var st = 'url(/css/ph65/img/common/bg_movie_popup_l.png) no-repeat';
var isL = 'l';
npc = 50;
//固定表示したいとき var ip=$(this).offset();//r:-500,l:124,t:60
if (jTip.q.x > jTip.q.mw) {
isL = 'r';
npc = -550;
st = 'url(/css/ph65/img/common/bg_movie_popup_r.png) no-repeat';
}
var dispData = $(this.parentNode.parentNode.previousSibling).html();
if (dispData == null) {
dispData = $(this.parentNode.parentNode.parentNode).find("div.pops").html();
}
$('#' + jTip.divID)
.html('' + dispData + '
')
.css({left: jTip.q.x + npc + 'px', top: jTip.q.y - 80 + 'px', background: st})
.show();
//マウス追従bind
$(this).bind('mousemove', function (e) {
var p = jTip.getXYWH(e);
$('#' + jTip.divID).css({left: p.x + npc + 'px', top: p.y - 80 + 'px'});
});
if (g_browser.iev == 6) DD_belatedPNG.fixPng($('#' + jTip.divID).get(0));
}
});
}
function popwindow(ele) {
if (g_popup == true) {
return;
}
if (g_cookie == 'thumb') {
var el = ele;
$(ele).attr('alt', '');
if ($.data(el, 'nodpoptimer'))return;
$.data(el, 'nodpoptimer', setTimeout('nodpop();', 400));
g_nowPopup = ele;
}
}
function hidewindow(ele) {
if (g_cookie == 'thumb') {
var el = ele.parentNode.parentNode.previousSibling;
if ($.data(ele, 'nodpoptimer')) {
clearTimeout($.data(ele, 'nodpoptimer'));
$.removeData(ele, 'nodpoptimer');
}
if ($.data(ele, 'nodpopClass')) {
$.removeData(ele, 'nodpopClass');
}
$('#' + jTip.divID).hide();
$(ele).unbind('mousemove');
g_nowPopup = null;
}
}
function swfCleanup(f) {
if (!g_browser.flickable)return;
var ar = '#mainFlash';
if (f) {
$(ar).hide();
}
else {
$(ar).show();
}
}
//*********************//
//****for Search Func*****//
//*********************//
var g_suggestion_ls;
var search = {
getSuggestJson: function (cb, tgt) {
$.ajax({
url: '/searchkeyword/suggest_goods.json',
type: 'GET',
dataType: 'json',
}).done(function(data) {
g_suggestion_ls=search.changeNameString(data);
search.sugAutocomplete(cb, tgt);
});
}
,changeNameString: function(jsonString){
var _self = this;
var nameString = {};
for (i=0;i" + title + "");
$("#goodspopup p.thumb").html(
''
+ ''
);
$("#goodspopup").removeClass('_smp');
if ( cookF.get('EnvSwitch') != '_smp'){
$("#goodspopup .info p.description").html(description);
}else{
$("#goodspopup .info p.description").html('');
$("#goodspopup").addClass('_smp');
if(g_browser.Android){
var n_h= $('#goodspopup').height() + 50;
$('#goodspopup').css({height: n_h + 'px'});
}
}
$("#goodspopup .info p.year").html(year);
// $("#goodspopup p.item span").html(num);
// $("#goodspopup p.itembottom").html(num);
$("#goodspopup p.item a").attr("href", linkurl).click(function () {
location.href = linkurl
});
/* 砂時計を埋め込み */
/* 表示開始 */
if ($.browser.msie && $.browser.version <= 6) {
$("select").css("visibility", "hidden");
}
$("#goodsLightbox")
.height($(document).height())
.width("100%")
.show();
if (g_browser.isVista && g_browser.iev == 8) {
$("#goodsLightbox").css('background', 'none');
}
$("#goodspopup").show();
/* ajaxで番組情報を取得 */
var height= $('#goodspopup div.popup').height() - $('#goodspopup div.notes').height();
$('div#goodspopup div.list').css('height',height);
height = Math.floor(height / 2) - 24 ;
$("#goodspopup div.popup div.list").html(g_loadinghtml);
$("#goodspopup div.popup div.list p").css({"left":"0px" , "margin":"0", "margin-top": height + "px" });
var s_id = linkurl.match(/([P][0-9]{10}[0-9A-Z]{2}[0-9]{3})/);
/* 直前の検索条件で、対象をクリックした番組に限る。ソートは放送日順 */
var q = g_qAry;
q.G8 = s_id[0];
q.G53 = 3;
if(!q.G5){
q.G5 = '1,4,5'; //見放題は除外。
}
if(!q.G2){
q.G2 = '*';
}
if (location.href.search('/share/genre/') > -1) {
q.G7 = genreId[g_cID];//絞込にジャンルを追加
}
if (!(location.href.search('/share/goodslist/') > -1)) {
delete q.G20;
}
delete q.G10; //文字絞込みがついていたら削除
delete q.G54; //全件
delete q.G55; //ページも無し
// delete q.G2;
if (g_stgDate != '') q.G98 = g_stgDate;
$.ajax({
dataType: 'xml'
, url: '/xml3/goods/'
, data: q
, type: 'POST'
, success: function (xml) {
/* 描画 */
$("#goodspopup div.popup div.list").html('');
var priceF = (function () {
if (location.href.search(/\/share\/missed\//i) > -1) {
if (g_user.isMinogashiMiho == 1) {
return false;
}
}
else if (location.href.search(/\/share\/library\//i) > -1) {
if (g_user.isTokusenMiho == 1) {
return false;
}
}
return true;
})();
$(xml).find("Package").each(function () {
jGoods.addList(
$(this).find("Uri").text()
, $(this).find("Title").text() + " " + $(this).find("Subtitle").text()
, formatNum($(this).find("PricewithTax").text())
, priceF
);
});
if (g_browser.flickable) {
$('#goodspopup div.list')
.flickable('select', 0);
}
else {
$('#goodspopup div.list')
.css({'overflow-y': 'scroll'})
.scrollTop(1);
$('#goodspopup div.list table')
.css({'width': '100%'});
}
}
});
return;
}
function closeProgramList() {
if ($.browser.msie && $.browser.version <= 6) {
$("select").css("visibility", "visible");
}
$('#goodspopup div.list')
.flickable('refresh')
.flickable('destroy');
swfCleanup(0);
/* ウインドウを消す。 */
$("#goodspopup").hide();
$("#goodsLightbox").hide();
/* ポップアップ抑制を解除 */
g_popup = false;
}
//*********************//
//***for SWF Object****//
//*********************//
// function mainSwfEmbed(obj) {
// debugObj(obj.vars);
// exSwfObject.set(obj, 'main');
// }
// function swfEmbed(obj) {
// exSwfObject.set(obj, 0);
// }
// var exSwfObject = {
// versionCheck: function (v) {
// var myVer = swfobject.getFlashPlayerVersion();
// var lmVer = v.split('.');
// for (var j = 0; j < 3; j++) {
// lmVer[j] = parseInt(lmVer[j], 10);
// }
// debug('your:' + myVer.major + '.' + myVer.minor + '.' + myVer.release);
// debug('Limit: ' + v);
// if (myVer.major > lmVer[0]) {
// return true;
// }
// else if (myVer.major == lmVer[0]) {
// if (myVer.minor > lmVer[1]) {
// return true;
// }
// else if (myVer.minor == lmVer[1]) {
// if (myVer.release >= lmVer[2]) {
// return true;
// }
// }
// }
// return false;
// }
// , set: function (obj, er) {
// debug('setting up swf...');
// if (!obj.URL || !obj.targetId || !obj.Width || !obj.Height)return;
// debug('setupCHK pass');
// if (obj.Version && obj.Version.split('.').length != 3) delete obj.Version;//Version指定は、Revisionまで指定していないものは無効
// var o = {
// Version: '10.0.32'
// , express: false
// , chache: true
// , vars: {}
// , params: {
// base: '.'
// , scale: 'noScale'
// , allowFullscreen: 'true'
// , allowScriptAccess: 'always'
// , wmode: 'transparent'
// }
// , attr: {}
// };
// for (var i in obj) {
// o[i] = obj[i];
// }
// function isEnableActiveX() {
// for (var i = 20; i > 9; i--) {
// eval("try {var res = new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + i + "')} catch(e) {error = e};");
// if (res) {
// return i;
// }
// }
// return false;
// }
// function isEnablePlugin() {
// for (i = 0; i < navigator.mimeTypes.length; i++) {
// if (navigator.mimeTypes[i].type == "application/x-shockwave-flash") {
// return true;
// }
// }
// return false;
// }
// if (cookF.check() || er != 'main') {
// if (g_browser.isIE) {
// if (!isEnableActiveX() && er == 'main') {
// var ht = '';
// ht += '
NHKオンデマンドでは、動画の再生や画像の表示を行うため、ActiveXコントロールを使用しています。
';
// ht += 'お持ちでない方は、以下の画像をクリックし、Flash Playerプラグイン(ActiveXコントロール)をダウンロード・インストールしてからご利用ください。
';
// ht += '
';
// ht += '
インストールしてもご覧ただだけない方は、お使いのブラウザの設定で、「ActiveXコントロールとプラグインの実行」を有効にしてからご利用ください。
';
// ht += '有効にする方法は、お使いのブラウザのヘルプなどをご参照ください。
';
// ht += '
同じ状態が続く場合は、お手数をおかけいたしますが、NHKオンデマンドコールセンターまでお問い合わせください。
';
// ht += '
';
// $('#' + o.targetId).html(ht).show();
// return;
// }
// }
// else {
// if (!isEnablePlugin() && er == 'main') {
// var ht = '';
// ht += '
NHKオンデマンドでは、動画の再生や画像の表示を行うため、Flash Playerプラグインを使用しています。
';
// ht += 'お持ちでない方は、以下の画像をクリックし、Flash Playerプラグインをダウンロード・インストールしてからご利用ください。
';
// ht += '
';
// ht += '
インストールしてもご覧ただだけない方は、お使いのブラウザの設定で、プラグイン(Flashプラグイン)を有効にしてからご利用ください。
';
// ht += '有効にする方法は、お使いのブラウザのヘルプなどをご参照ください。
';
// ht += '
同じ状態が続く場合は、お手数をおかけいたしますが、NHKオンデマンドコールセンターまでお問い合わせください。
';
// ht += '
';
// $('#' + o.targetId).html(ht).show();
// return;
// }
// }
// if (this.versionCheck(o.Version)) {
// //if(!o.cache)o.URL+='?'+(new Date()).getTime();
// debug('trying draw SWF... ' + o.URL + ' to ' + o.targetId);
// debug($('#' + o.targetId).html());
// swfobject.embedSWF(
// o.URL
// , o.targetId
// , o.Width
// , o.Height
// , o.Version
// , o.express
// , o.vars
// , o.params
// , o.attr
// );
// }
// else {
// if (er == 'main') {
// var ht = '';
// ht += '
Flash Playerプラグインはインストール済みですが、NHKオンデマンドが推奨するものより古いバージョンである可能性があります。
';
// ht += '以下の画像をクリックし、Flash Playerの最新版をダウンロード・インストールしてからご利用ください。
';
// ht += '
';
// ht += '
同じ状態が続く場合は、お手数をおかけいたしますが、NHKオンデマンドコールセンターまでお問い合わせください。
';
// ht += '
';
// $('#' + o.targetId).html(ht).show();
// }
// }
// }
// else {
// var ht = '';
// ht += '
NHKオンデマンドでは、利便性の向上のため、Cookieを使用しています。お使いのブラウザの設定で、Cookieを有効にしてからご利用ください。
';
// ht += '
有効にする方法は、お使いのブラウザのヘルプなどをご参照ください。
';
// ht += '※ブラウザによっては、「Cookieを受け入れる、Cookieを保存する」などと表現されている場合があります。
';
// ht += '
同じ状態が続く場合は、お手数をおかけいたしますが、NHKオンデマンドコールセンターまでお問い合わせください。
';
// ht += '
';
// $('#' + o.targetId).html(ht).show();
// }
// }
// };
//*********************//
//****General Func*****//
//*********************//
function cutText(_str, Max) {
if (_str.length > Max) {
return _str.substring(0, Max - 1) + '…';
}
return _str;
}
function formatNum(num) {
var n = parseInt(num, 10);
if (isNaN(n))return num;
var s = n.toString();
var r = '';
var cnt = 0;
while (s.length > 0) {
if (cnt == 3) {
cnt = 0;
r = ',' + r;
}
r = s.charAt(s.length - 1) + r;
s = s.substring(0, s.length - 1);
cnt++;
}
return r;
}
var g_bgtype = 0;
function setBG(st) {
g_bgtype = parseInt(st, 10);
var bg = 'black goodsMissed goodsLibrary goodsPremium';
var bgclass = bg.split(' ');
$('#moviePlayer').removeClass(bg).addClass(bgclass[g_bgtype]);
cookF.set('colorbg', g_bgtype.toString(), {expires: 365});
}
function getArrIdx(ar, t) {
t = t.toString();
for (var i = 0; i < ar.length; i++) {
if (ar[i].substring(0, 4) == t)return i;
}
return -1;
}
//********************//
//***** JSON *****//
//********************//
var json = {
toStr: function (js) {
var ret;
if (js.constructor === Array) {
ret = this.parseArr(js);
}
else if (js.constructor === Object) {
ret = this.parseObj(js);
}
else {
ret = '"' + js + '"';
}
//return ret;
return this.escapeIE(ret);
}
, parseObj: function (o) {
var ret = [];
for (var i in o) {
if (o[i].constructor === Array) {
ret.push('"' + i + '":' + this.parseArr(o[i]));
}
else if (o[i].constructor === Object) {
ret.push('"' + i + '":' + this.parseObj(o[i]));
}
else {
ret.push('"' + i + '":"' + this.parseString(o[i].toString()) + '"');
}
}
return ( '{' + ret.join(',') + '}' );
}
, parseArr: function (ar) {
var ret = [];
for (var i = 0; i < ar.length; i++) {
if (ar[i].constructor === Array) {
ret.push(this.parseArr(ar[i]));
}
else if (ar[i].constructor === Object) {
ret.push(this.parseObj(ar[i]));
}
else if (ar[i].constructor === Number) {
ret.push(ar[i].toString());
}
else if (ar[i].constructor === String) {
ret.push('"' + this.parseString(ar[i].toString()) + '"');
}
}
var rets = '[' + ret.join(',') + ']';
return rets;
}
, parseString: function (str) {
return str;
//return str.replace(/"/g,'"').replace(/;/g,'%3B');
}
, escapeIE: function (str) {
if (g_browser.isIE && g_browser.iev > 4) {
return str.replace(/"/g, '"');
}
return str;
}
};
//*********************//
//**** Date I/F *****//
//*********************//
var DateIF = {
yobi: ['日', '月', '火', '水', '木', '金', '土'],
parse: function (str) {
//日付形式の文字列をDateに
//サポート形式「YYYYMMDD」または「Y+/M+/D+」「Y+-M+-D+」など数字以外の文字で数字が区切れた形式
var ret = false;
if (!str)return false;
if (str.match(/(\d{4})\-(\d{2})\-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})Z/)) { //2019-11-16T23:59:59Z
ret = new Date(str);
}
else if (str.match(/(\d{4})\-(\d{2})\-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})/)) { //2019-11-16T23:59:59
var a = str.split(/[^0-9]/);
ret =new Date (a[0],a[1]-1,a[2],a[3],a[4],a[5] );
}
else if (str.match(/(\d{4})(\d{2})(\d{2})/)) {
ret = new Date(parseInt(RegExp.$1, 10), parseInt(RegExp.$2, 10) - 1, parseInt(RegExp.$3, 10));
}
else if (str.match(/(\d{4})\D(\d{1,2})\D(\d{1,2})\D(\d{1,2})\D(\d{1,2})\D(\d{1,2})/)) {
ret = new Date(parseInt(RegExp.$1, 10), parseInt(RegExp.$2, 10) - 1, parseInt(RegExp.$3, 10), parseInt(RegExp.$4, 10), parseInt(RegExp.$5, 10), parseInt(RegExp.$6, 10));
}
else if (str.match(/(\d{4})\D(\d{1,2})\D(\d{1,2})/)) {
ret = new Date(parseInt(RegExp.$1, 10), parseInt(RegExp.$2, 10) - 1, parseInt(RegExp.$3, 10));
}
return ret;
},
format: function (fmt, d) {
var t = {};
t.Y = fmt.match(/Y+/);
if (t.Y) fmt = fmt.replace(/Y+/g, d.getFullYear().toString().slice(4 - t.Y[0].length));
t.M = fmt.match(/M+/);
if (t.M) fmt = fmt.replace(/M+/g, this.zeroPad(d.getMonth() + 1, t.M[0].length));
t.D = fmt.match(/D+/);
if (t.D) fmt = fmt.replace(/D+/g, this.zeroPad(d.getDate(), t.D[0].length));
t.a = fmt.match(/a+/);
if (t.a) fmt = fmt.replace(/a+/g, this.yobi[d.getDay()]);
t.h = fmt.match(/h+/);
if (t.h) fmt = fmt.replace(/h+/g, this.zeroPad(d.getHours(), t.h[0].length));
t.m = fmt.match(/m+/);
if (t.m) fmt = fmt.replace(/m+/g, this.zeroPad(d.getMinutes(), t.m[0].length));
t.s = fmt.match(/s+/);
if (t.s) fmt = fmt.replace(/s+/g, this.zeroPad(d.getSeconds(), t.s[0].length));
return fmt;
},
reformat: function (fmt, dstr) {
var dt = this.parse(dstr);
if (dt) {
return this.format(fmt, dt);
}
else return dt;
},
getFirstDay: function (d) {
return this.parse(this.format('YYYY/MM/01', d));
},
zeroPad: function (s, l) {
s = s.toString();
while (s.length < l) {
s = '0' + s;
}
return s;
},
addDate: function (d, add) {
var ad = {Y: 0, M: 0, D: 0, h: 0, m: 0, s: 0};
for (var i in add) {
ad[i] = add[i];
}
return (new Date(d.getFullYear() + ad.Y, d.getMonth() + ad.M, d.getDate() + ad.D, d.getHours() + ad.h, d.getMinutes() + ad.m, d.getSeconds() + ad.s));
},
setDate: function (d, set) {
var se = {
Y: d.getFullYear(),
M: d.getMonth(),
D: d.getDate(),
h: d.getHours(),
m: d.getMinutes(),
s: d.getSeconds()
};
for (var i in set) {
if (i == 'M') {
se[i] = set[i] + 1;
}
else se[i] = set[i];
}
return new Date(se.Y, se.M, se.D, se.h, se.d, se.s);
},
timeDelete: function (d) {
return this.parse(this.format('YYYY/MM/DD', d));
},
diffDate: function (d1, d2) {
return (this.timeDelete(d1) - this.timeDelete(d2)) / 86400000;
}
};
//*********************//
//**** Tooltip *****//
//*********************//
var jTip = {
divID: 'tooltip'
, q: {}
, t: ''
, divStyle: 'background:no-repeat;width:506px;height:186px;top:0px;left:-99999px;display:none;overflow:hidden;'
, init: function () {
var o = this;
o.t = document.title;
$('body').append('');
$('body').bind('mousemove', function (e) {
o.q = o.getXYWH(e);
document.title = o.t;
});
/*
$('body').append('')
.bind('mousemove',function(e){
var p=o.getXYWH(e);
$('#mousetrack').html(
'X='+p.x
+'
Y='+p.y
+'
W='+p.w
+'
H='+p.h
+'
M='+((p.mw