/* designCnt対策
---------------------------------------------------------------------*/
function designCnt(pos,opt){
return false;
}
/* イベント
---------------------------------------------------------------------*/
var appendEventListener = function(elem,type,func,capture){
var ret = null;
if(elem.addEventListener){
ret = func;
elem.addEventListener(type,func,capture);
}else if(elem.attachEvent){
ret = func;
elem.attachEvent('on' + type,ret);
}
return ret;
};
var deleteEventListener = function(element,type,func,capture){
if(element.removeEventListener){
element.removeEventListener(type,func,capture);
}else if(element.detachEvent){
element.detachEvent('on' + type,func);
}
};
/* URL 取得
---------------------------------------------------------------------*/
function getUrl(){
var url = {
'url':document.URL,
'url_cutparam':document.URL.replace(/\.html.+/,'.html'),
'domain':document.domain,
'path':location.pathname,
'path_cutparam':location.pathname.replace(/\.html.+/,'.html'),
'port':location.port,
'path_cutpageing_cutparam':location.pathname.replace(/\_\d*\.html(.+)?/,'.html')
};
return url;
};
/* SiteCatslyst (RESPONCE TIME)
---------------------------------------------------------------------*/
function resTime(){
var str = '';
var num = 0;
var num_break = 100;
var range = [0,0];
if(typeof dcl_start != 'undefined'){ // 変数チェック
var now = new Date();
var date_ms = parseInt((now.getTime() - dcl_start.getTime())) / num_break;
if(date_ms >= num_break){
num = (num_break * num_break) + '_';
}else{
num = date_ms;
range = [Math.floor(num) * num_break,Math.ceil(num) * num_break];
if(range[0] == range[1]){
range[1] += num_break;
}
num = range[0] + '_' + range[1];
}
str = 'pcv_' + masterChannel() + '_' + num;
// console.log(str);
}else{
}
return str;
};
/* IMAGE サーバ
---------------------------------------------------------------------*/
function imgSrv(){
var url = getUrl();
if(!url['domain'].match(/(preview|broom|localhost)/)){
return '//ima' + 'ge.itmedia.co.jp';
}else{
return '';
}
};
/* 外部 JS ロード
---------------------------------------------------------------------*/
function setJs(url){
if(setJs.checkJs(url) == false){
setJs.createJs(url);
setJs.addJs();
return true;
}
return false;
}
setJs.checkJs = function(url){
this.head = document.getElementsByTagName('head')[0];
this.script = this.head.getElementsByTagName('script');
for(var i = 0; i < this.script.length; i++){
if(this.script[i].getAttribute('src') == url){
return true;
break;
}
}
return false;
}
setJs.createJs = function(url){
this.head = document.getElementsByTagName('head')[0];
this.js = document.createElement('script');
this.js.setAttribute('type','text/javascript');
this.js.setAttribute('src',url);
}
setJs.addJs = function(){
this.head.appendChild(this.js);
};
function addJS(_src,_id){
var d = document;
var js = d.createElement('script');
js.src = _src;
if(_id) js.id = _id;
d.head.appendChild(js);
return js;
};
/* ディレクトリ階層を body class にセット
-------------------------------------------------------------*/
function attachBodyClass(){
var a = location.pathname.split('/');
for(var i = 1; i < a.length; i++){
if(a[i].match('.html') || a[i] == '') continue;
a[i] = 'dir-' + a[i];
}
document.getElementsByTagName('body')[0].className = a.join(' ');
};
/* 実行 JS 取得
-----------------------------------------------------------------------*/
function getScriptThis(e){
if(e.nodeName.toLowerCase() == 'script'){
return e;
}else{
return arguments.callee(e.lastChild);
}
};
/* JS TITLE 属性取得
-----------------------------------------------------------------------*/
function getScriptTitleTag(e){
if(e.nodeName.toLowerCase() == 'script'){
return e.getAttribute('title');
}else{
return arguments.callee(e.lastChild);
}
};
/* META 取得
-----------------------------------------------------------------------*/
function getMETA(metaname){
if(!metaname || metaname == '') return false;
var head = document.getElementsByTagName('head')[0];
var meta = head.getElementsByTagName('meta');
var target = [];
for(var i = 0; i < meta.length; i++){
if(meta[i].name == metaname){
target.push(meta[i]);
break;
}
}
if(target.length == 0) return false;
return target[0];
};
/* WAIT 関数(遅延ロード対応) - 2011/04/18
-----------------------------------------------------------------------*/
function domWait(a,func){
var check = 0;
try{
eval('check = ' + a);
}catch(e){
}
if(check){
func()
}else{
var f = function(){
domWait(a,func)
};
setTimeout(f,100);
}
};
/* 配列のキーを指定し重複があるものを排除し返す - 2011/06/10
-----------------------------------------------------------------------*/
function uniqueArray(hash){
var storage = {};
var uniqueArray = [];
var i,value;
for(i = 0; i < hash.length; i++){
value = hash[i];
if(!(value in storage)){
storage[value] = true;
uniqueArray.push(value);
}
}
return uniqueArray;
}
/* ブラウザ幅&高さ取得 - 2011/08/22
-----------------------------------------------------------------------*/
function getBrowserWH(){
var win = window;
var doc = document;
if(win.innerWidth || win.innerHeight){
return {'w':win.innerWidth,'h':win.innerHeight};
}else if((doc.documentElement && doc.documentElement.clientWidth != 0) || (document.documentElement && document.documentElement.clientHeight != 0)){
return {'w':doc.documentElement.clientWidth,'h':doc.documentElement.clientHeight};
}else if(document.body){
return {'w':doc.body.clientWidth,'h':doc.body.clientHeight};
}
return {'w':0,'h':0};
}
/* ブラウザスクロール量取得 - 2011/08/22
-----------------------------------------------------------------------*/
function getBrowserScrollXY(){
return {'x':document.documentElement.scrollLeft || document.body.scrollLeft,'y':document.documentElement.scrollTop || document.body.scrollTop};
}
/* ノード位置取得 - 2011/08/22
-----------------------------------------------------------------------*/
function getElementXY(e){
var x = 0;
var y = 0;
while(e){
x += e.offsetLeft;
y += e.offsetTop;
e = e.offsetParent;
}
return {'x':x,'y':y};
};
/* ノード幅&高さ取得 - 2011/08/22
-----------------------------------------------------------------------*/
function getElementWH(e){
return {'w':e.offsetWidth,'h':e.offsetHeight};
};
/* ナビゲーションプルダウン(jQuery) - 2011/06/03
第三階層対応 - 2013/05/12
-----------------------------------------------------------------------*/
function localNavigationPD(id,flag){
if(!id || !flag) return false;
if(!document.getElementById(id)) return false;
var a = document.getElementById(id);
var b = a.getElementsByTagName('div');
var c = [];
for(var i in flag){
if(i == '') break;
for(var j = 0; j < b.length; j++){
if(b[j].className.match(/^lnavBtn\s?/) && b[j].innerHTML.match(i)){
b[j].className += ' lnavBtnHover';
var tempTop = '
';
var tempMid = [];
for(var k = 0; k < flag[i]['data'].length; k++){
if(!flag[i]['data'][k]['name']) continue;
if(flag[i]['data'][k]['data']){
tempMid.push('
');
}else{
tempMid.push('
');
}
tempMid.push('
» ' + flag[i]['data'][k]['name'] + '');
if(flag[i]['data'][k]['data']){
tempMid.push('
');
for(var l = 0; l < flag[i]['data'][k]['data'].length; l++){
if(!flag[i]['data'][k]['data'][l]['name']) continue;
tempMid.push('
');
}
tempMid.push('
');
}
tempMid.push('
');
}
var tempBtm = '
';
var joinHTML = tempTop + tempMid.join('') + tempBtm;
var insertNode = document.createElement('div');
insertNode.className = 'lnavBtnGroup';
insertNode.style.display = 'none';
insertNode.style.position = 'absolute';
insertNode.innerHTML = joinHTML;
b[j].appendChild(insertNode);
if(b[j].getElementsByTagName('a')[0].getElementsByTagName('span')[0]){
b[j].getElementsByTagName('a')[0].getElementsByTagName('span')[0].innerHTML = '▼';
}
break;
}
}
}
function parentRel(elem){ // 上位で position:relative があれば取得しプルダウンナビゲーションの座標からマイナスする - 11/08/18
do{
var style = elem.currentStyle || document.defaultView.getComputedStyle(elem,'');
if(elem.tagName == 'BODY') break;
if(style.position == 'relative') break;
var elem = elem.parentNode;
}while(style.position != 'relative');
return elem;
};
// 2 階層目イベント
jQuery('#' + id + ' .lnavBtnHover').hover(
function(){
jQuery(this).children('.lnavBtnGroup').css('display','block');
jQuery(this).children('.lnavBtnGroup').css('left',((getElementXY(this)['x']) - getElementXY(parentRel(a))['x']) + 'px');
jQuery(this).children('.lnavBtnGroup').css('top',((getElementXY(this)['y'] + getElementWH(jQuery(this).get(0))['h'] - 2) - getElementXY(parentRel(a))['y']) + 'px');
},function(){
jQuery(this).children('.lnavBtnGroup').css('display','none');
}
);
// 3 階層目イベント
jQuery('#' + id + ' .lnavBtnHover .lnavBtnHover').hover(
function(){
jQuery(this).children('.lnavBtnGroup').css('display','block');
jQuery(this).children('.lnavBtnGroup').css('left','200px');
jQuery(this).children('.lnavBtnGroup').css('top',(getElementXY(this)['y'] - getElementXY(this.parentNode.parentNode.parentNode)['y'] - 1) + 'px');
},function(){
jQuery(this).children('.lnavBtnGroup').css('display','none');
}
);
return true;
};
/* 文字バイト数カウント&指定文字バイト数でカット - 111026
-----------------------------------------------------------------------*/
function cutString(str,num){
var len = 0;
var estr = escape(str);
var ostr = '';
for(i = 0;i < estr.length; i++){
len++;
ostr = ostr + estr.charAt(i);
if(estr.charAt(i) == '%'){
i++;
ostr = ostr + estr.charAt(i);
if(estr.charAt(i) == 'u'){
ostr = ostr + estr.charAt(i + 1) + estr.charAt(i + 2) + estr.charAt(i + 3) + estr.charAt(i + 4);
i += 4;
len++;
} else if(isFinite(estr.charAt(i))){
ostr = ostr + estr.charAt(i + 1);
i++;
}
}
if(len >= num - 3){
return unescape(ostr) + '...';
}
}
return unescape(ostr);
};
/* senna 連載 json RD:6327 - 120117
-----------------------------------------------------------------------*/
function rensaiCallback(json){
var parentW = getElementWH(getScriptThis(document).parentNode)['w'];
if(!getScriptTitleTag(document)){
json['param'] = {
'type':'default',
'column':'1',
'box':'true',
'loop':json['data'].length,
'head':'true',
'icon':'true',
'icontype':'default',
'subtitle':'true',
'description':'true',
'dcdate':'true'
};
}else{
var parentW = getElementWH(getScriptThis(document).parentNode)['w'];
var query = getScriptTitleTag(document);
var str = '{"' + query.replace(/\=/g,'":"').replace(/\&/g,'","') + '"}';
json['param'] = eval('(' + str + ')');
if(isNaN(json['param']['column']) == true || json['param']['column'] > 4) json['param']['column'] = 4;
if(isNaN(json['param']['loop']) == true || json['param']['loop'] > json['data'].length) json['param']['loop'] = json['data'].length;
}
json['param']['parentW'] = parentW;
if(json['param']['type'] == 'list'){
document.write(rensaiCallback.templateList(json));
}else if(json['param']['type'] == 'notfloat'){
document.write(rensaiCallback.templateNotfloat(json));
}else if(json['param']['type'] == 'mix'){
document.write(rensaiCallback.templateMix(json));
}else{
document.write(rensaiCallback.templateDefault(json));
}
};
// 見出し
rensaiCallback.partsHead = function(data,param){
if(param == 'true') return '
' + data + '
';
return '';
};
// アイコン
rensaiCallback.partsIcon = function(data,param){
if(data['icontype'] == 'small'){
var a = ' style="width:40px;height:30px;"';
}else{
var a = '';
}
if(data['iconpath'] != '' && param == 'true') return '
';
return '';
};
// サブタイトル
rensaiCallback.partsSubtitle = function(data,param){
if(data != '' && param == 'true') return '
' + data + '
';
return '';
};
// タイトル
rensaiCallback.partsTitle = function(data){
if(data['icontype'] == 'small'){
var a = ' style="font-size:14px;line-height:18px;"';
}else{
var a = '';
}
return '
';
};
// アブストラクト
rensaiCallback.partsDescription = function(data,param){
if(data != '' && param == 'true') return '
';
return '';
};
// 更新日時
rensaiCallback.partsDcdate = function(data,param){
if(data != '' && param == 'true') return '
(' + data + ')
';
return '';
};
// カラム
rensaiCallback.partsIndex = function(data,param){
if(param['box'] == 'true'){
var box = 'border:1px solid #CCC;background:#DDD;margin:0 0 10px;padding:10px;';
}else{
var box = '';
}
if(param['column'] != 1){
var nodeM = 10;
var nodeW = Math.floor((param['parentW'] - (nodeM * (param['column'] - 1))) / param['column']);
if((data + 1) % param['column'] == 0){
return '
';
}else{
return '
';
}
}else{
return '
';
}
};
rensaiCallback.templateDefault = function(json){
var a = [];
a.push('
');
a.push('
');
a.push(rensaiCallback.partsHead(json['head'],json['param']['head']));
a.push('
');
for(var i = 0; i < json['param']['loop']; i++){
var data = json['data'][i];
if(!data['title']) continue;
a.push(rensaiCallback.partsIndex(i,{'column':json['param']['column'],'parentW':json['param']['parentW'],'box':json['param']['box']}));
a.push(rensaiCallback.partsIcon({'iconpath':data['iconpath'],'icontype':json['param']['icontype'],'link':data['link']},json['param']['icon']));
a.push(rensaiCallback.partsSubtitle(data['subtitle'],json['param']['subtitle']));
a.push(rensaiCallback.partsTitle({'title':data['title'],'link':data['link'],'icontype':json['param']['icontype']}));
a.push(rensaiCallback.partsDescription(data['description'],json['param']['description']));
a.push(rensaiCallback.partsDcdate(data['dcdate'],json['param']['dcdate']));
a.push('
');
a.push('
');
if((i + 1) % json['param']['column'] == 0) a.push('
');
}
if(json['param']['column'] != 1) a.push('
');
a.push('
');
a.push('
');
a.push('
');
return a.join('');
};
rensaiCallback.templateNotfloat = function(json){
var a = [];
a.push('
');
a.push('
');
a.push(rensaiCallback.partsHead(json['head'],json['param']['head']));
a.push('
');
for(var i = 0; i < json['param']['loop']; i++){
var data = json['data'][i];
a.push(rensaiCallback.partsIndex(i,{'column':json['param']['column'],'parentW':json['param']['parentW'],'box':json['param']['box']}));
if(json['param']['icontype'] == 'small'){
a.push('
');
}else{
a.push('
');
}
a.push(rensaiCallback.partsIcon({'iconpath':data['iconpath'],'icontype':json['param']['icontype'],'link':data['link']},json['param']['icon']));
a.push('
');
if(json['param']['icontype'] == 'small'){
a.push('
');
}else{
a.push('
');
}
a.push(rensaiCallback.partsSubtitle(data['subtitle'],json['param']['subtitle']));
a.push(rensaiCallback.partsTitle({'title':data['title'],'link':data['link'],'icontype':json['param']['icontype']}));
a.push(rensaiCallback.partsDescription(data['description'],json['param']['description']));
a.push(rensaiCallback.partsDcdate(data['dcdate'],json['param']['dcdate']));
a.push('
');
a.push('
');
a.push('
');
if((i + 1) % json['param']['column'] == 0) a.push('
');
}
if(json['param']['column'] != 1) a.push('
');
a.push('
');
a.push('
');
a.push('
');
return a.join('');
};
rensaiCallback.templateMix = function(json){
var data = json['data'][0];
var a = [];
a.push('
');
a.push('
');
a.push(rensaiCallback.partsHead(json['head'],json['param']['head']));
a.push('
');
a.push(rensaiCallback.partsIndex(i,{'column':json['param']['column'],'parentW':json['param']['parentW'],'box':json['param']['box']}));
if(json['icontype'] == 'small'){
a.push('
');
}else{
a.push('
');
}
a.push(rensaiCallback.partsIcon({'iconpath':data['iconpath'],'icontype':json['param']['icontype'],'link':data['link']},json['param']['icon']));
a.push('
');
if(json['icontype'] == 'small'){
a.push('
');
}else{
a.push('
');
}
a.push(rensaiCallback.partsSubtitle(data['subtitle'],json['param']['subtitle']));
a.push(rensaiCallback.partsTitle({'title':data['title'],'link':data['link'],'icontype':json['param']['icontype']}));
a.push(rensaiCallback.partsDescription(data['description'],json['param']['description']));
a.push(rensaiCallback.partsDcdate(data['dcdate'],json['param']['dcdate']));
a.push('
');
a.push('
');
for(var i = 1; i < json['param']['loop']; i++){
var data = json['data'][i];
if(!data['title']) continue;
a.push('- ' + data['title'] + '
');
}
a.push('
');
a.push('
');
a.push('
');
a.push('
');
a.push('
');
a.push('
');
a.push('
');
return a.join('');
};
rensaiCallback.templateList = function(json){
var a = [];
a.push('
');
a.push('
');
a.push(rensaiCallback.partsHead(json['head'],json['param']['head']));
a.push('
');
a.push('
');
a.push('
');
for(var i = 0; i < json['param']['loop']; i++){
var data = json['data'][i];
if(!data['title']) continue;
a.push('- ' + data['title'] + '
');
}
a.push('
');
a.push('
');
a.push('
');
a.push('
');
a.push('
');
a.push('
');
return a.join('');
};
/* CMS/Input Video
---------------------------------------------------------------------*/
function setVideo(param){
if(param['type'] == 'youtube'){
document.write(setVideo.youtube(param));
}else if(param['type'] == 'ustream'){
document.write(setVideo.ustream(param));
}else if(param['type'] == 'niconico'){
document.write(setVideo.niconico(param));
}else if(param['type'] == 'vine'){
document.write(setVideo.vine(param));
}else if(param['type'] == 'vimeo'){
document.write(setVideo.vimeo(param));
}else if(param['type'] == 'yvp'){
document.write(setVideo.yvp(param));
}else if(param['type'] == 'omnibus'){
document.write(setVideo.omnibus(param));
}
return true;
};
setVideo.youtube = function(param){
var url = '';
var html = [];
if(location.protocol.indexOf('https') != -1){
url = '//www.youtube-nocookie.com/embed/' + param['id'];
}else{
url = '//www.youtube.com/embed/' + param['id'];
}
html.push('
');
html.push('
');
if(param['caption'] || param['caption'] != '') html.push('
' + param['caption'] + '
');
html.push('
');
return html.join('');
};
setVideo.ustream = function(param){
var html = [];
html.push('
');
html.push('
');
if(param['caption'] || param['caption'] != '') html.push('
' + param['caption'] + '
');
html.push('
');
return html.join('');
};
setVideo.niconico = function(param){
var html = [];
var ua = navigator.userAgent;
// IE のみサムネイル表示(DOM 構築のタイミングのずれ)
if(ua.indexOf('MSIE') != -1 || ua.indexOf('Trident') != -1){
html.push('
');
html.push('
');
}else{
html.push('