/* 目次
-----------------------------------------------------------
URL 取得
ドメインリスト
SiteCatslyst (preview or www)
SiteCatslyst (RESPONCE TIME)
SiteCatslyst (designCnt 引数 記事 or それ以外)
DESIGN CLICK COUNT
IMAGE サーバ
外部 JS ロード
外部 CSS ロード
ディレクトリ階層を body class にセット
UL LI の最後の要素に CLASS をつける
OL LI の最後の要素に CLASS をつける
実行 JS 取得
JS TITLE 属性取得
META 取得
WAIT 関数(遅延ロード対応) - 2011/04/18
アイコンシャッフル関数(HTML 版/HTML ツリーが重要|Web ガバナンス) - 2011/07/26
データベース関数(JSON 版|Web ガバナンス) - 2011/07/26
SHUFFLE 関数(e は配列) - 2011/04/19
配列のキーを指定し重複があるものを排除し返す - 2011/06/10
EVENT 関数(e {'this':自分自身,'eventtype':イベントの種類(click , mouseover 等),'function':関数名}) - 2011/04/19
COOKIE 読み込み - 2011/04/21
COOKIE 書き込み(param {'name':COOKIE名,'value':値,'domain':HOST,'path':PATH,'expires':有効期限,'secure':0 or 1(0 = 無効、1 = 有効)}) - 2011/04/21
ブラウザ幅&高さ取得 - 2011/08/22
ブラウザスクロール量取得 - 2011/08/22
ノード位置取得 - 2011/08/22
ノード幅&高さ取得 - 2011/08/22
ソーシャルボタンプルダウン,プルダウン遅延処理追加(setTimeout) - 作業中
ナビゲーションプルダウン(jQuery) - 2011/06/03,プルダウン遅延処理追加(setTimeout) - 作業中
ITMID アラートボタン - 11/06/14 現在未使用
WINDOW 幅&高さ取得 - 11/08/11
スマートフォン表示 - 11/08/04
RETWEET
bitly API
TWITTER WIDGET
文字バイト数カウント&指定文字バイト数でカット - 111026
ソーシャルパーツ RD:5609 - 111104
senna 連載 json RD:6327 - 120117
タブ切り替え - 120125
PC or SP VIEW に移動し状態を保存 - 2012/02/14
-----------------------------------------------------------
*/
/* イベント
---------------------------------------------------------------------*/
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);
}
};
/* デザインカウント関数 OID
---------------------------------------------------------------------*/
function sc_count_oid(pos,opt){
if(!opt) var opt = '';
var a = pos + ' ' + opt;
s.prop14 = a;
s_objectID = a;
console.log(a);
};
/* 現在年月日時分秒取得
---------------------------------------------------------------------*/
function nowTime(){
var nowTime = new Date();
nowTime.nowMS = nowTime.getTime();
nowTime.nowFullYear = nowTime.getFullYear();
nowTime.nowMonth = nowTime.getMonth() + 1;
nowTime.nowDate = nowTime.getDate();
nowTime.nowSeconds = nowTime.getSeconds();
nowTime.nowHours = nowTime.getHours();
nowTime.nowMinutes = nowTime.getMinutes();
nowTime.nowSeconds = nowTime.getSeconds();
return nowTime;
};
/* 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;
};
/* ドメインリスト
---------------------------------------------------------------------*/
function thisDomain(){
var a = getUrl()['path'];
var b = getUrl()['url'];
var lp = location.protocol;
if(b.match('mag.executive.itmedia.co.jp') || a.match(/^\/executive\//)){
var c = lp + '//mag.executive.itmedia.co.jp';
}else if(b.match('monoist.atmarkit.co.jp') || a.match(/^\/mn\//)){
var c = lp + '//monoist.atmarkit.co.jp';
}else if(b.match('eetimes.jp') || a.match(/^\/ee\//)){
var c = lp + '//eetimes.jp';
}else if(b.match('ednjapan.com') || a.match(/^\/edn\//)){
var c = lp + '//ednjapan.com';
}else if(b.match('nlab.itmedia.co.jp') || a.match(/^\/nl\//)){
var c = lp + '//nlab.itmedia.co.jp';
}else if(b.match('marketing.itmedia.co.jp') || a.match(/^\/mm\//)){
var c = lp + '//marketing.itmedia.co.jp';
}else if(b.match('www.atmarkit.co.jp') || a.match(/^\/ait\//) || a.match(/\/AIT\/CMS/)){
var c = lp + '//www.atmarkit.co.jp';
}else if(b.match(/\/techfactory\.itmedia\.co\.jp/) || a.match(/^\/tf\//) || a.match(/\/TechFactory\/CMS/)){
var c = lp + '//techfactory.itmedia.co.jp';
}else if(b.match(/\/keyman\.or\.jp/) || a.match(/^\/kn\//) || a.match(/\/KeymansNet\/CMS/)){
var c = lp + '//www.keyman.or.jp';
}else if(b.match(/\/built\.itmedia\.co\.jp/) || a.match(/^\/bt\//) || a.match(/\/Built\/CMS/)){
var c = lp + '//built.itmedia.co.jp';
}else{
var c = lp + '//www.itmedia.co.jp';
}
return c;
};
/* SiteCatslyst (preview or www)
---------------------------------------------------------------------*/
// Move /js/scAccount.js
/* 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;
};
/* SiteCatslyst (designCnt 引数 記事 or それ以外)
---------------------------------------------------------------------*/
function pageDir(){
if(getUrl()['path'].match(/\/.+\/articles\/\d\d\d\d\/\d\d\/news/) || getUrl()['path'].match(/\/tt\/news\/\d\d\d\d\/\d\d\/news/)){
var a = 'articles';
}else{
var a = 'indexes';
}
return a;
};
/* DESIGN CLICK COUNT
-------------------------------------------------------------*/
function designCnt(pos,opt){
// 除外リストに含まれる場合カウントしない
if(designCnt.exc_list[pos] == true) return false;
if(!opt) var opt = '';
var channel = (function(){
if(typeof masterChannel == 'function') return masterChannel();
return location.pathname.split('/')[0];
})();
var type = (function(){
if(typeof masterType == 'function') return masterType();
return 'notMasterType';
})();
var a = channel + '_' + type + '_' + pos + ' ' + opt;
s.prop14 = a;
// s.tl(this,'e',a);
s_objectID = a;
};
/* DESIGN CLICK COUNT 除外リスト
-------------------------------------------------------------*/
designCnt.exc_list = {
'lart':true, /* 関連記事 */
'llnk':true /* 関連リンク */
};
/* 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;
};
/* 外部 CSS ロード
---------------------------------------------------------------------*/
function setCss(url){
if(setCss.checkCss(url) == false){
setCss.createCss(url);
setCss.addCss();
return true;
}
return false;
}
setCss.checkCss = 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;
}
setCss.createCss = function(url){
this.head = document.getElementsByTagName('head')[0];
this.css = document.createElement('script');
this.css.setAttribute('type','text/javascript');
this.css.setAttribute('src',url);
}
setJs.addCss = function(){
this.head.appendChild(this.css);
};
/* ディレクトリ階層を 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(' ');
};
/* UL LI の最後の要素に CLASS をつける
-------------------------------------------------------------*/
(function(){
if(!document.getElementById('masterContents')) return false;
var a = document.getElementById('masterContents');
var b = a.getElementsByTagName('ul');
for(var i = 0; i < b.length; i++){
var c = b[i].getElementsByTagName('li');
var d = c.length - 1;
if(!c[d].className){
c[d].className = 'lastLiMarginClear';
}else{
c[d].className += ' lastLiMarginClear';
}
}
})();
/* OL LI の最後の要素に CLASS をつける
-------------------------------------------------------------*/
(function(){
if(!document.getElementById('masterContents')) return false;
var a = document.getElementById('masterContents');
var b = a.getElementsByTagName('ol');
for(var i = 0; i < b.length; i++){
var c = b[i].getElementsByTagName('li');
var d = c.length - 1;
if(!c[d].className){
c[d].className = 'lastLiMarginClear';
}else{
c[d].className += ' lastLiMarginClear';
}
}
})();
/* 実行 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);
}
};
/* アイコンシャッフル関数(HTML 版/HTML ツリーが重要|Web ガバナンス) - 2011/07/26
-----------------------------------------------------------------------*/
function colBoxIconShuffle(data){
if(!data['id'] || data['id'] == '') return false;
var colBox= document.getElementById(data['id']);
var colBoxOuter = colBox.getElementsByTagName('div')[0];
var colBoxHead = colBoxOuter.getElementsByTagName('div')[0];
var colBoxInner = colBoxOuter.getElementsByTagName('div')[1];
var colBoxIndex = (function(a){
var b = a.getElementsByTagName('div');
var c = [];
for(var i = 0; i < b.length; i++){
if(b[i].className == 'colBoxIndex'){
c.push(b[i]);
}
}
return c;
})(colBoxInner);
var colBoxIndexShuffle = elemShuffle(colBoxIndex);
var colBoxIconN = 0;
if(!data['loop'] || data['loop'] == ''){
data['loop'] = colBoxIndexShuffle.length;
}else{
data['loop']--;
}
for(var i = 0; i < colBoxIndexShuffle.length; i++){
colBoxInner.appendChild(colBoxIndexShuffle[i]);
if(!colBoxIndexShuffle[i].getElementsByTagName('img')[0]){
colBoxIndexShuffle[i].style.display = 'none';
}else{
if(data['loop'] < colBoxIconN){
colBoxIndexShuffle[i].style.display = 'none';
continue;
}
if(colBoxIconN == 0){
colBoxIndexShuffle[i].style.display = 'block';
colBoxIndexShuffle[i].getElementsByTagName('a')[0].className = 'active';
colBoxHead.getElementsByTagName('h2')[0].innerHTML = colBoxIndexShuffle[i].getElementsByTagName('a')[0].getAttribute('title');
}
colBoxIconN++;
attachingEvent({'data':data,'this':colBoxIndexShuffle[i],'eventtype':'mouseover','function':'database.iconShuffleEventMouseover'});
if(data['designCnt']) attachingEvent({'data':data,'this':colBoxIndexShuffle[i].getElementsByTagName('a')[0],'eventtype':'click','function':'database.iconShuffleEventClick'});
}
}
return true;
};
/* データベース関数(JSON 版|Web ガバナンス) - 2011/07/26
-----------------------------------------------------------------------*/
function database(json){
// script src パラメータ取得
var jsparam = getScriptThis(document).getAttribute('src').split('?');
// パラメータ分割
var param = jsparam[1].split('&');
var data = {};
for(var i = 0; i < param.length; i++){
var a = param[i].split('=');
// colBox id
if(a[0] == 'id'){
data['id'] = a[1];
// colBox class
}else if(a[0] == 'class'){
data['class'] = a[1];
// loop 数
}else if(a[0] == 'loop'){
data['loop'] = a[1];
// 使用テンプレート
}else if(a[0] == 'template'){
data['template'] = a[1];
// 見出し名
}else if(a[0] == 'title'){
data['title'] = a[1];
// デザインカウント名
}else if(a[0] == 'designCnt'){
data['designCnt'] = a[1];
}
}
// id 指定がなければ空
if(!data['id']) data['id'] = '';
// class 指定がなければ空
if(!data['class']) data['class'] = '';
// loop 指定がなければ配列最大数
if(!data['loop']) data['loop'] = json['data'].length;
// template 指定がなければ default テンプレート使用
if(!data['template']) data['template'] = 'defaultTemplate';
// title 指定がなければ json name 使用
if(!data['title']) data['title'] = json['name'];
eval('database.' + data['template'] + '(json,data)');
return true;
};
database.header = function(data){
var a = '
';
a += '
';
a += '
' + data['title'] + '
';
a += '
';
return a;
}
database.footer = function(){
var a = '
';
return a;
}
/* デフォルトテンプレート - 2011/07/28
-------------------------------------------------------*/
database.defaultTemplate = function(json,data){
var header = database.header(data);
var contents = [];
var footer = database.footer();
var json = json['data'];
var loop = data['loop'];
for(var i = 0; i < loop; i++){
var a = '';
a += '';
a += '
';
a += '
' + json[i]['subtitle'] + '
';
a += '
';
a += '
' + json[i]['description'] + '
';
a += '
';
a += '
';
contents.push(a);
}
document.write(header + contents.join('') + footer);
}
/* アイコンシャッフルテンプレート - 2011/07/28
-------------------------------------------------------*/
database.iconShuffle = function(json,data){
var header = database.header(data);
var contents = [];
var footer = database.footer();
var iconShuffleN = 0;
var json = elemShuffle(json['data']);
var loop = data['loop'];
for(var i = 0; i < loop; i++){
if(json['title'] == '') continue;
if(json[i]['icon'] == ''){
i--;
continue;
}
var a = '';
a += '';
contents.push(a);
}
document.write(header + contents.join('') + footer);
var colBox= document.getElementById(data['id']);
var colBoxOuter = colBox.getElementsByTagName('div')[0];
var colBoxHead = colBoxOuter.getElementsByTagName('div')[0];
var colBoxInner = colBoxOuter.getElementsByTagName('div')[1];
var colBoxIndex = (function(a){
var b = a.getElementsByTagName('div');
var c = [];
for(var i = 0; i < b.length; i++){
if(b[i].className == 'colBoxIndex'){
c.push(b[i]);
}
}
return c;
})(colBoxInner);
for(var i = 0; i < colBoxIndex.length; i++){
if(i == 0){
colBoxIndex[i].getElementsByTagName('a')[0].className = 'active';
colBoxHead.getElementsByTagName('h2')[0].innerHTML = colBoxIndex[i].getElementsByTagName('a')[0].getAttribute('title');
}
attachingEvent({'data':data,'this':colBoxIndex[i],'eventtype':'mouseover','function':'database.iconShuffleEventMouseover'});
if(data['designCnt']) attachingEvent({'data':data,'this':colBoxIndex[i].getElementsByTagName('a')[0],'eventtype':'click','function':'database.iconShuffleEventClick'});
}
};
database.iconShuffleEventMouseover = function(elem,data){
var targetChild = elem.parentNode.getElementsByTagName('a');
for(var i = 0; i < targetChild.length; i++){
targetChild[i].className = '';
}
var targetIcon = elem.getElementsByTagName('a')[0];
targetIcon.className = 'active';
var targetHead = (function(node){
var a = node.getElementsByTagName('div');
for(var i = 0; i < a.length; i++){
if(a[i].className == 'colBoxHead'){
return a[i].getElementsByTagName('h2')[0];
}
}
})(elem.parentNode.parentNode);
targetHead.innerHTML = targetIcon.getAttribute('title');
return true;
};
database.iconShuffleEventClick = function(elem,data){
designCnt(data['designCnt'],elem.href);
return true;
};
/* イメージローテーションテンプレート - 2011/07/28
-------------------------------------------------------*/
database.imageRotation = function(json,data){
var header = database.header(data);
var contents = [];
var footer = database.footer();
var json = json['data'];
var loop = data['loop'];
var a = '';
a += '';
a += '';
for(var i = 0; i < loop; i++){
a += '
';
}
a += '
';
contents.push(a);
document.write(header + contents.join('') + footer);
var colBox = document.getElementById(data['id']);
var colBoxOuter = colBox.getElementsByTagName('div')[0];
var colBoxHead = colBoxOuter.getElementsByTagName('div')[0];
var colBoxInner = colBoxOuter.getElementsByTagName('div')[1];
var colBoxIndex = (function(a){
var b = a.getElementsByTagName('div');
var c = [];
for(var i = 0; i < b.length; i++){
if(b[i].className.match('colBoxIndex')){
c.push(b[i]);
}
}
return c;
})(colBoxInner);
if(data['designCnt']) attachingEvent({'data':data,'this':colBoxIndex[0].getElementsByTagName('a')[0],'eventtype':'click','function':'database.imageRotationEventClick'});
var colBoxIcon = colBoxIndex[1].getElementsByTagName('div');
for(var i = 0; i < colBoxIcon.length; i++){
if(i == 0){
colBoxIcon[i].getElementsByTagName('a')[0].className = 'active';
}
attachingEvent({'data':data,'this':colBoxIcon[i],'eventtype':'mouseover','function':'database.imageRotationEventMouseover'});
if(data['designCnt']) attachingEvent({'data':data,'this':colBoxIcon[i].getElementsByTagName('a')[0],'eventtype':'click','function':'database.imageRotationEventClick'});
}
};
database.imageRotationEventMouseover = function(elem,data){
var lphoto = elem.parentNode.parentNode.getElementsByTagName('div')[0];
var sphoto = elem.parentNode.getElementsByTagName('div');
for(var i = 0; i < sphoto.length; i++){
sphoto[i].getElementsByTagName('a')[0].className = '';
}
elem.getElementsByTagName('a')[0].className = 'active';
var a = elem.getElementsByTagName('a')[0];
var str = {'title':a.getAttribute('title'),'link':a.getAttribute('href'),'lphoto':a.getElementsByTagName('img')[1].getAttribute('src')};
lphoto.getElementsByTagName('a')[0].setAttribute('href',str['link']);
lphoto.getElementsByTagName('a')[0].setAttribute('title',str['title']);
lphoto.getElementsByTagName('a')[0].getElementsByTagName('img')[0].setAttribute('src',str['lphoto']);
lphoto.getElementsByTagName('a')[0].getElementsByTagName('img')[0].setAttribute('alt',str['title']);
};
database.imageRotationEventClick = function(elem,data){
designCnt(data['designCnt'],elem.href);
return true;
};
/*-------------------------------------------------------*/
/* SHUFFLE 関数(e は配列) - 2011/04/19
-----------------------------------------------------------------------*/
function elemShuffle(e){
var i = e.length;
while(--i){
var j = Math.floor(Math.random() * (i + 1));
if(i == j) continue;
var k = e[i];
e[i] = e[j];
e[j] = k;
}
return e;
};
/* 配列のキーを指定し重複があるものを排除し返す - 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;
}
/* EVENT 関数(e {'this':自分自身,'eventtype':イベントの種類(click , mouseover 等),'function':関数名}) - 2011/04/19
-----------------------------------------------------------------------*/
function attachingEvent(e){
if(!e['eventtype'].match(/(click|mouseover|mouseout)/)) return false;
e['this'].setAttribute(e['eventtype'] + 'Flag','true');
if(e['this'].addEventListener){
e['this'].addEventListener(e['eventtype'], function(){
eval(e['function'] + '(e[\'this\'],e[\'data\']);');
}, false);
}else if(e['this'].attachEvent){
e['this'].attachEvent('on' + e['eventtype'], function(){
eval(e['function'] + '(e[\'this\'],e[\'data\']);');
});
}
return true;
};
/* COOKIE 読み込み - 2011/04/21
-----------------------------------------------------------------------*/
function getCookie(name){
if(!name) return '';
var cookies = document.cookie.split('; ');
for(var i = 0; i < cookies.length; i++){
var str = cookies[i].split('=');
if (str[0] != name) continue;
return unescape(str[1]);
}
return '';
};
/* COOKIE 書き込み(param {'name':COOKIE名,'value':値,'domain':HOST,'path':PATH,'expires':有効期限,'secure':0 or 1(0 = 無効、1 = 有効)}) - 2011/04/21
-----------------------------------------------------------------------*/
function setCookie(param){
if(!param['name']) return false;
var str = param['name'] + '=' + escape(param['value']);
if(param['domain']){
if(param['domain'] == 1) param['domain'] = location.hostname.replace(/^[^\.]*/, '');
str += '; domain=' + param['domain'];
}
if(param['path']){
if(param['path'] == 1) param['path'] = location.pathname;
str += '; path=' + param['path'];
}
if(param['expires']){
var nowtime = new Date().getTime();
param['expires'] = new Date(nowtime + (60 * 60 * 24 * 1000 * param['expires']));
param['expires'] = param['expires'].toGMTString();
str += '; expires=' + param['expires'];
}
if(param['secure'] && location.protocol == 'https:'){
str += '; secure';
}
document.cookie = str;
return true;
};
/* ブラウザ幅&高さ取得 - 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};
};
/* ソーシャルボタンプルダウン
プルダウン遅延処理追加(setTimeout) - 作業中
------------------------------------------------------*/
function msbGroup(elem,act){
if(!act) return false;
var a = elem.parentNode.parentNode;
var b = a.getElementsByTagName('div');
var c = [];
for(var i = 0; i < b.length; i++){
if(b[i].className == 'msbGroupIn'){
c.push(b[i]);
break;
}
}
if(c.length == 0) return false;
var target = c[0];
if(act == 'over') target.style.display = 'block';
if(act == 'out') target.style.display = 'none';
return true;
}
/* ナビゲーションプルダウン(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;
};
/* ITMID アラートボタン - 11/06/14 現在未使用
-----------------------------------------------------------------------*/
function ITMIDalert(myForm){
ITMIDalert.setForm(myForm);
myForm.submit();
return true;
};
ITMIDalert.setForm = function(myForm){
myForm.action = 'https://id.itmedia.jp/isentry';
myForm.method = 'get';
myForm.article_url.value = ITMIDalert.getURL();
myForm.encoding.value = ITMIDalert.getCharset();
myForm.return_url.value = 'https://id.itmedia.jp/app/alert/regist_setting?url=' + ITMIDalert.getURL();
};
ITMIDalert.getURL = function(){
var a = location.pathname.replace(/\.html.+/,'html');
if(a.match(/^\/(makoto|style|bizmobile)\//)){
var b = 'http://bizmakoto.jp';
}else if(a.match(/^\/dc\//)){
var b = 'http://camera.itmedia.co.jp';
}else if(a.match(/^\/games\//)){
var b = 'http://gamez.itmedia.co.jp';
}else if(a.match(/^\/executive\//)){
var b = 'http://mag.executive.itmedia.co.jp';
}else if(a.match(/^\/ebook\//)){
var b = 'http://ebook.itmedia.co.jp';
}else if(a.match(/^\/mn\//)){
var b = 'http://monoist.atmarkit.co.jp';
}else if(a.match(/^\/ee\//)){
var b = 'http://eetimes.jp';
}else if(a.match(/^\/gg\//)){
var b = 'http://gadget.itmedia.co.jp';
}else if(a.match(/^\/nl\//)){
var b = 'http://nlab.itmedia.co.jp';
}else if(a.match(/^\/tt\//)){
var b = 'http://techtarget.itmedia.co.jp';
}else{
var b = 'http://www.itmedia.co.jp';
}
return b + a;
};
ITMIDalert.getCharset = function(){
var content_type;
content_type = ITMIDalert.getMeta('http-equiv','content-type');
var charset = content_type.split(';');
if( charset.length > 1 ){
charset = charset[1].split("=");
var encoding = charset[1].toLowerCase();
if(encoding.match(/shift/) == 'shift'){
return 'shiftjis';
}
if(encoding.match(/euc/) == 'euc'){
return 'euc-jp';
}
if(encoding.match(/utf/) == 'utf'){
return 'utf8';
}
}
return '';
};
ITMIDalert.getMeta = function(attr_name,key){
var elements = document.getElementsByTagName('meta');
for(var i = 0 ; i< elements.length;i++){
if(elements[i].getAttribute(attr_name) == key){
return elements[i].getAttribute('content');
}
}
return '';
};
/* WINDOW 幅&高さ取得 - 11/08/11
-----------------------------------------------------------------------*/
function getBrowserWidth(){
if(window.innerWidth){
return window.innerWidth;
}else if(document.documentElement && document.documentElement.clientWidth != 0){
return document.documentElement.clientWidth;
}else if(document.body){
return document.body.clientWidth;
}
return 0;
}
function getBrowserHeight(){
if(window.innerHeight){
return window.innerHeight;
}else if(document.documentElement && document.documentElement.clientHeight != 0){
return document.documentElement.clientHeight;
}else if(document.body){
return document.body.clientHeight;
}
return 0;
}
/* RETWEET
-----------------------------------------------------------------------*/
function retweet(data){
retweet.setDomain(); // ドメイン判定
retweet.setData(data); // 引数を変数に代入
retweet.setKey(); // ID と APIKEY を変数に代入
retweet.setApi(); // ID と APIKEY を APIURL に代入し変数に代入
retweet.setVariable(); // 変数セット フラグ
retweet.setHashtag(); // ハッシュタグありなし
retweet.setTitlecut(); // タイトルをカットするかしないか
retweet.thispageORindexes(); // location か index か判別
/* retweet.addScript();*/
setTimeout('retweet.addScript()',100); // JSON コール
};
retweet.setDomain = function(){ // ドメイン判定
var a = location.pathname;
if(a.match(/^\/(makoto|style|bizmobile)\//)){
var b = 'http://bizmakoto.jp';
}else if(a.match(/^\/dc\//)){
var b = 'http://camera.itmedia.co.jp';
}else if(a.match(/^\/games\//)){
var b = 'http://gamez.itmedia.co.jp';
}else if(a.match(/^\/executive\//)){
var b = 'http://mag.executive.itmedia.co.jp';
}else if(a.match(/^\/tt\//)){
var b = 'http://techtarget.itmedia.co.jp';
}else if(a.match(/^\/ebook\//)){
var b = 'http://ebook.itmedia.co.jp';
}else{
var b = 'http://www.itmedia.co.jp';
}
this.mydomain = b;
};
retweet.setData = function(data){ // 引数を変数に代入
this.data = data;
};
retweet.setKey = function(){ // ID と APIKEY を変数に代入
if(!this.data['id'] || !this.data['apikey']){
this.bitly_id = 'itmedia';
this.bitly_key = 'R_736fc703c85d8539ea61ad3758938118';
}else{
this.bitly_id = this.data['id'];
this.bitly_key = this.data['apikey'];
}
};
retweet.setApi = function(){ // ID と APIKEY を APIURL に代入し変数に代入
this.api = 'http://api.bit.ly/shorten' + '?version=2.0.1' + '&format=json' + '&callback=retweetCallback' + '&login=' + this.bitly_id + '&apiKey=' + this.bitly_key + '&longUrl=';
};
retweet.setVariable = function(){ // 変数セットフラグ
if(!this.data['variable']){
this.variable = false;
}else{
this.variable = true;
}
};
retweet.setHashtag = function(){ // hashtag セット
if(!this.data['hashtag']){
this.hashtag = '';
}else{
this.hashtag = this.data['hashtag'];
}
};
retweet.setTitlecut = function(){ // Title カット
if(!this.data['titlecut']){
this.titlecut = false;
}else{
this.titlecut = this.data['titlecut'];
}
};
retweet.thispageORindexes = function(){ // location か index か判別
if(!this.data['elem']){
retweet.thispage();
}else{
retweet.indexes();
}
};
retweet.addScript = function(){
document.getElementsByTagName('head')[0].appendChild(this.script);
};
retweet.thispage = function(){
if(!this.titlecut == false){
if(document.title.length < this.titlecut){
this.tit = document.title;
}else{
this.tit = document.title.slice(0,this.titlecut) + '...';
}
}else{
this.tit = document.title;
}
this.script = document.createElement('script');
this.script.setAttribute('type','text/javascript');
this.script.setAttribute('title','{"title":"' + this.tit + '","link":"' + this.mydomain + location.pathname + '","hashtag":"' + this.hashtag + '","variable":' + this.variable + '}');
this.script.setAttribute('src',this.api + encodeURIComponent(this.mydomain + location.pathname));
};
retweet.indexes = function(){
if(!this.data['blockclassname']){
this.blockclassname = 'index';
}else{
this.blockclassname = this.data['blockclassname'];
}
if(!this.data['titleclassname']){
this.titleclassname = 'txTitle';
}else{
this.titleclassname = this.data['titleclassname'];
}
if(!this.data['urlclassname']){
this.urlclassname = 'URL';
}else{
this.urlclassname = this.data['urlclassname'];
}
this.btn = this.data['elem'];
while(this.btn.className != this.blockclassname){
this.btn = this.btn.parentNode;
}
this.box = this.btn;
this.chl = this.box.childNodes;
for(var i = 0; i < this.chl.length; i++){
if(this.chl[i].className == this.titleclassname){
var a = this.chl[i].getElementsByTagName('a');
for(var j = 0; j < a.length; j++){
if(a[j].className == this.urlclassname){
this.lnk = a[j].getAttribute('href');
this.tit = a[j].innerHTML;
break;
}
}
}
}
if(this.lnk.match(/^http/)) this.mydomain = '';
this.script = document.createElement('script');
this.script.setAttribute('type','text/javascript');
this.script.setAttribute('title','{"title":"' + this.tit + '","link":"' + this.mydomain + this.lnk + '","hashtag":"' + this.hashtag + '","variable":' + this.variable + '}');
this.script.setAttribute('src',this.api + encodeURIComponent(this.mydomain + this.lnk));
};
/* bitly API
-----------------------------------------------------------------------*/
function retweetCallback(json){
var sel = '';
if(document.selection){
sel = document.selection.createRange().text;
}else if(window.selection){
sel = window.selection.createRange().text;
}else if(document.getSelection){
sel = document.getSelection();
}else if(window.getSelection){
sel = window.getSelection();
}
eval('var attr = ' + getScriptTitleTag(document.getElementsByTagName('head')[0]) + ';');
var tit = attr['title']; // タイトル
var lnk = attr['link']; // リンク
if(!attr['hashtag'] || attr['hashtag'] == ''){ // ハッシュタグ
var has = '';
}else{
var has = ' ' + attr['hashtag'];
}
if(attr['variable'] == true){
shorturl_bitly = json.results[lnk]['shortUrl'];
}else{
var f = 'http://twitter.com/intent/tweet?text=' + encodeURIComponent(tit + ' ' + json.results[lnk]['shortUrl'] + has);
if(navigator.userAgent.indexOf('Chrome') != -1 || navigator.userAgent.indexOf('Safari') != -1){
location.href = f;
}else{
window.open(f,'retweet');
}
}
/* document.removeChild(document.getElementsByTagName('head')[0].lastChild);*/
};
/* TWITTER WIDGET
-----------------------------------------------------------------------*/
function twimgWidget(hash){
if(typeof TWTR.Widget != 'function') return false;
if(!hash['件数'] || hash['件数'] == '' || hash['件数'] == undefined) hash['件数'] = 100;
if(!hash['表示間隔(ミリ秒)'] || hash['表示間隔(ミリ秒)'] == '' || hash['表示間隔(ミリ秒)'] == undefined) hash['表示間隔(ミリ秒)'] = 6000;
if(!hash['ウィジェット本体背景色'] || hash['ウィジェット本体背景色'] == '' || hash['ウィジェット本体背景色'] == undefined) hash['ウィジェット本体背景色'] = '8EC1DA';
if(!hash['ウィジェット本体文字色'] || hash['ウィジェット本体文字色'] == '' || hash['ウィジェット本体文字色'] == undefined) hash['ウィジェット本体文字色'] = 'FFF';
if(!hash['つぶやき背景色'] || hash['つぶやき背景色'] == '' || hash['つぶやき背景色'] == undefined) hash['つぶやき背景色'] = 'FFF';
if(!hash['つぶやき文字色'] || hash['つぶやき文字色'] == '' || hash['つぶやき文字色'] == undefined) hash['つぶやき文字色'] = '444';
if(!hash['つぶやきリンク色'] || hash['つぶやきリンク色'] == '' || hash['つぶやきリンク色'] == undefined) hash['つぶやきリンク色'] = '1985B5';
if(!hash['幅'] || hash['幅'] == '' || hash['幅'] == undefined) hash['幅'] = 290;
if(!hash['高さ'] || hash['高さ'] == '' || hash['高さ'] == undefined) hash['高さ'] = 300;
if(hash['回り込み'] == 'left'){
document.write('