﻿var T = {};
T.Document = window.document;
T.Browser = {};
T.BrowserEngineType = {
Unknown: 0,
Trident: 1,
Gecko: 2,
WebKit: 3,
Opera: 4
};
T.BrowserType = {
Unknown: 0,
MSIE: 1,
Firefox: 2,
Safari: 3
};
if (window.opera) {
T.Browser.EngineType = T.BrowserEngineType.Opera;
}
else if (navigator.userAgent.search(/MSIE[\s]\d[.]\d;/i) != -1) {
T.Browser.EngineType = T.BrowserEngineType.Trident;
}
else if (navigator.userAgent.search(/AppleWebKit/i) != -1) {
T.Browser.EngineType = T.BrowserEngineType.WebKit;
}
else if (navigator.userAgent.search(/Gecko/i) != -1) {
T.Browser.EngineType = T.BrowserEngineType.Gecko;
}
T.isTrident = T.Browser.EngineType == T.BrowserEngineType.Trident;
T.isWebKit = T.Browser.EngineType == T.BrowserEngineType.WebKit;
T.isGecko = T.Browser.EngineType == T.BrowserEngineType.Gecko;
T.isOpera = T.Browser.EngineType == T.BrowserEngineType.Opera;
T.Check = {};
T.Check.isString = function(object) {
return typeof (object) == 'string';
};
T.Check.isNull = function(object) {
return object === null;
};
T.Check.isUndefined = function(object) {
return typeof (object) == 'undefined';
};
T.Check.isFunction = function(object) {
return typeof (object) == 'function';
};
T.Check.isSameNodeName = function(element, name) {
return element ? (element.nodeName ? element.nodeName.toLowerCase() == name.toLowerCase() : false) : false;
};
T.String = {};
T.String.trim = function(string, includeWideSpace) {
var s = string.replace(/(^\s+)|(\s+$)/g, '');
return includeWideSpace ? s.replace(/(^[　]+)|([　]+$)/g, '') : s;
};
T.String.splitString = function(string, separator, isRemoveEmpty) {
var Result = new Array();
var arr = string.split(separator);
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (isRemoveEmpty) {
if (arr[i]) { Result[j] = arr[i]; }
j++;
}
else { Result[i] = arr[i]; }
}
return Result;
};
T.String.splitParameters = function(string, firstSeparator, secondSeparator) {
var Result = new Array();
var arr1 = string.split(firstSeparator);
for (var i = 0; i < arr1.length; i++) {
var arr2 = arr1[i].split(secondSeparator);
if (arr2[0]) {
var strValue = null;
if (arr2.length >= 2) {
strValue = arr2[1];
}
Result[arr2[0]] = strValue;
}
}
return Result;
};
T.String.htmlEncode = function(string) {
return string.replace(/&/gi, '&amp;').replace(/</gi, '&lt;').replace(/>/gi, '&gt;').replace(/"/gi, '&quot;').replace(/\s/gi, '&nbsp;');
};
T.String.htmlDecode = function(string) {
return string.replace(/&lt;/gi, '<').replace(/&gt;/gi, '>').replace(/&quot;/gi, '"').replace(/&nbsp;/gi, ' ').replace(/&amp;/gi, '&');
};
T.getScriptParameters = function(documentObject) {
var Result = {};
var s = null;
if (false) {
var f = function(arg) {
if (arg && arg.nodeName && (arg.nodeName.toLowerCase() == 'script')) { return arg; }
else { return arg.lastChild ? arguments.callee(arg.lastChild) : null; }
} (documentObject);
}
else {
var arr = documentObject.getElementsByTagName('script');
s = arr[arr.length - 1];
}
if (s && s.src) {
Result['srcPath'] = s.src;
var src = s.src ? s.src : '';
var reg = src.match(/[a-z]+=[^&]+/g);
if (reg) {
for (var i = 0; i < reg.length; i++) {
var t = reg[i];
var idx = t.indexOf('=');
Result[t.substring(0, idx)] = t.substring(idx + 1);
}
}
}
return Result;
};
T.Object = {};
T.Obj = T.Object;
T.Object._private = {
getElementBaseRecurs: function(element, match, layer, nowLayer) {
if (match(element)) { return element; }
if (layer <= nowLayer) { return null; }
if (element.childNodes) {
for (var i = 0; i < element.childNodes.length; i++) {
var c = T.Object._private.getElementBaseRecurs(element.childNodes[i], match, layer, nowLayer + 1);
if (!T.Check.isNull(c)) { return c; }
}
}
return null;
},
getElementBase: function(element, match, layer) {
if (T.Check.isNull(match) || T.Check.isUndefined(match)) { match = function() { return false; }; }
return T.Object._private.getElementBaseRecurs(element, match, layer, 0);
},
getElementsBaseRecurs: function(element, match, layer, nowLayer, result) {
if (match(element)) { result.push(element); }
if (layer <= nowLayer) { return; }
if (element.childNodes) {
for (var i = 0; i < element.childNodes.length; i++) {
T.Object._private.getElementsBaseRecurs(element.childNodes[i], match, layer, nowLayer + 1, result);
}
}
},
getElementsBase: function(element, match, layer) {
var result = new Array();
if (T.Check.isNull(match) || T.Check.isUndefined(match)) { match = function() { return false; }; }
T.Object._private.getElementsBaseRecurs(element, match, layer, 0, result);
return result;
},
getRegMatchClassName: function(name) {
return new RegExp('(?:^|\\s)' + name + '(?:$|\\s)');
}
};
T.Object.getDateTimeNumber = function() {
var Result = 0;
var dt = new Date();
var year = dt.getFullYear();
var month = dt.getMonth() + 1;
var date = dt.getDate();
var hour = dt.getHours();
var minute = dt.getMinutes();
var sec = dt.getSeconds();
var s = '' + year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date) +
(hour < 10 ? '0' + hour : hour) + (minute < 10 ? '0' + minute : minute) + (sec < 10 ? '0' + sec : sec);
Result = parseInt(s, 10);
return Result;
};
T.Object.addScript = function(src) {
var d = document;
var s = d.createElement('script');
s.setAttribute('type', 'text/javascript');
s.setAttribute('language', 'javascript');
s.setAttribute('src', src);
var h = d.getElementsByTagName('head');
if (h && (0 < h.length)) { h[0].appendChild(s); }
};
T.Object.getWindowSize = function() {
var Result = { Width: 0, Height: 0 };
if (window.innerWidth) { Result.Width = window.innerWidth; }
else if (document.documentElement && document.documentElement.clientWidth !== 0) { Result.Width = document.documentElement.clientWidth; }
else if (document.body) { Result.Width = document.body.clientWidth; }
if (window.innerHeight) { Result.Height = window.innerHeight; }
else if (document.documentElement && document.documentElement.clientHeight !== 0) { Result.Height = document.documentElement.clientHeight; }
else if (document.body) { Result.Height = document.body.clientHeight; }
return Result;
};
T.Object.getScreenSize = function() {
return { Width: screen.availWidth, Height: screen.availHeight };
};
T.Object.getScroll = function() {
var Result = { X: 0, Y: 0 };
if (document.body) {
Result.X = document.body.scrollLeft || document.documentElement.scrollLeft;
Result.Y = document.body.scrollTop || document.documentElement.scrollTop;
}
return Result;
};
T.Object.setScroll = function(x, y) {
if (document.body && !T.Check.isUndefined(document.body.scrollLeft)) {
document.body.scrollLeft = x;
document.body.scrollTop = y;
}
if (document.documentElement && !T.Check.isUndefined(document.documentElement.scrollLeft)) {
document.documentElement.scrollLeft = x;
document.documentElement.scrollTop = y;
}
};
T.Object.getImageNaturalSize = function(imageElement) {
var Result = { Width: 0, Height: 0 };
if (T.Check.isUndefined(imageElement)) { return Result; }
Result.Width = imageElement.width;
Result.Height = imageElement.height;
var r, w, h;
if (!T.Check.isUndefined(imageElement.naturalWidth)) {
Result.Width = imageElement.naturalWidth;
Result.Height = imageElement.naturalHeight;
}
else if (!T.Check.isUndefined(imageElement.runtimeStyle)) {
r = imageElement.runtimeStyle;
w = r.width;
h = r.height;
r.width = r.height = 'auto';
Result.Width = imageElement.width;
Result.Height = imageElement.height;
r.width = w;
r.height = h;
}
else if (T.isOpera) {
w = imageElement.width;
h = imageElement.height;
imageElement.removeAttribute('width');
imageElement.removeAttribute('height');
imageElement.style.width = 'auto';
imageElement.style.height = 'auto';
Result.Width = imageElement.width;
Result.Height = imageElement.height;
imageElement.width = w;
imageElement.height = h;
}
return Result;
};
T.Object.getXmlRequest = function() {
var Result;
if (window.XMLHttpRequest) {
try { Result = new XMLHttpRequest(); }
catch (e) { Result = false; }
}
else if (window.ActiveXObject) {
try { Result = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {
try { Result = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (ex) { Result = false; }
}
}
return Result;
};
T.Object.getParameters = function(isRepeatedCombine, combineString) {
if (T.Check.isUndefined(isRepeatedCombine)) { isRepeatedCombine = false; }
if (T.Check.isUndefined(combineString)) { combineString = ','; }
var Result = new Array();
var startIdx = window.location.href.indexOf('?');
if (startIdx == -1) { return Result; }
var params = T.String.splitString(window.location.href.substring(startIdx + 1), '&', true);
for (var i = 0; i < params.length; i++) {
if (params[i]) {
var idx = params[i].indexOf('=');
var a = '';
var v = '';
if (idx == -1) {
a = params[i];
v = '';
}
else {
a = params[i].substr(0, idx);
v = params[i].length == idx ? '' : params[i].substring(idx + 1);
}
if (T.Check.isUndefined(Result[a])) { Result[a] = v; }
else {
if (isRepeatedCombine) { Result[a] += (Result[a].length === 0 ? '' : combineString) + v; }
}
}
}
return Result;
};
T.Object.removeElement = function(element) {
if (element && element.parentNode) {
element.parentNode.removeChild(element);
}
};
T.Object.removeAllChildren = function(element) {
if (element) {
while (0 < element.childNodes.length) {
element.removeChild(element.childNodes[0]);
}
}
};
T.Object.getFrameWindow = function(frame) {
var Result = null;
if (T.Check.isString(frame)) { frame = document.getElementById(frame); }
if (frame) { Result = frame.contentWindow; }
return Result;
};
T.Object.getFrameDocument = function(frame) {
var Result = null;
if (T.Check.isString(frame)) { frame = document.getElementById(frame); }
if (frame) {
if (frame.contentDocument) { Result = frame.contentDocument; }
else { Result = frame.contentWindow.document; }
}
return Result;
};
T.Object.getParentByTagName = function(element, name, includeSelf) {
if (element) {
var p = includeSelf ? element : element.parentNode;
while (p) {
if (p && p.nodeName && T.Check.isSameNodeName(p, name)) { return p; }
p = p.parentNode;
}
}
return null;
};
T.Object.getParentByAttribute = function(element, attribute, includeSelf) {
if (element) {
var p = includeSelf ? element : element.parentNode;
while (p) {
if (p && p.getAttribute && !T.Check.isNull(p.getAttribute(attribute))) { return p; }
p = p.parentNode;
}
}
return null;
};
T.Object.getParentByAttributeValue = function(element, attribute, value, includeSelf) {
if (element) {
var p = includeSelf ? element : element.parentNode;
while (p) {
if (p && p.getAttribute && (p.getAttribute(attribute) == value)) { return p; }
p = p.parentNode;
}
}
return null;
};
T.Object.getParentByClassName = function(element, name, includeSelf) {
if (element) {
var p = includeSelf ? element : element.parentNode;
var reg = T.Object._private.getRegMatchClassName(name);
while (p) {
if (p && p.className && p.className.match(reg)) { return p; }
p = p.parentNode;
}
}
return null;
};
T.Object.getParentsToTagName = function(element, name, includeSelf) {
var Result = new Array();
var p = includeSelf ? element : element.parentNode;
while (p) {
Result.push(p);
if (p && p.nodeName && T.Check.isSameNodeName(p, name)) { break; }
p = p.parentNode;
}
return Result;
};
T.Object.getElementsByTagName = function(element, name, layer) {
var Result = new Array();
if (T.Check.isUndefined(layer)) { Result = element.getElementsByTagName(name); }
else {
var m = function(_e) { return T.Check.isSameNodeName(_e, name); };
Result = T.Object._private.getElementsBase(element, m, layer);
}
return Result;
};
T.Object.$$t = T.Object.getElementsByTagName;
T.Object.getElementsByName = function(element, name, layer) {
var Result = new Array();
var m = function(_e) { return _e.getAttribute && _e.getAttribute('name') && (_e.getAttribute('name').toLowerCase() == name.toLowerCase()); };
if (T.Check.isUndefined(layer)) { Result = T.Object._private.getElementsBase(element, m, 99); }
else { Result = T.Object._private.getElementsBase(element, m, layer); }
return Result;
};
T.Object.getElementsByAttribute = function(element, attribute, layer) {
var m = function(_e) { return _e.getAttribute && !T.Check.isNull(_e.getAttribute(attribute)); };
if (T.Check.isUndefined(layer)) { Result = T.Object._private.getElementsBase(element, m, 99); }
else { Result = T.Object._private.getElementsBase(element, m, layer); }
return Result;
};
T.Object.$$a = T.Object.getElementsByAttribute;
T.Object.getElementsByAttributeValue = function(element, attribute, value, layer) {
var m = function(_e) { return _e.getAttribute && !T.Check.isNull(_e.getAttribute(attribute)) && (_e.getAttribute(attribute) == value); };
if (T.Check.isUndefined(layer)) { Result = T.Object._private.getElementsBase(element, m, 99); }
else { Result = T.Object._private.getElementsBase(element, m, layer); }
return Result;
};
T.Object.$$av = T.Object.getElementsByAttributeValue;
T.Object.getElementsByClassName = function(element, name, layer) {
var reg = T.Object._private.getRegMatchClassName(name);
var m = function(_e) { return _e && _e.className && _e.className.match(reg); };
if (T.Check.isUndefined(layer)) { Result = T.Object._private.getElementsBase(element, m, 99); }
else { Result = T.Object._private.getElementsBase(element, m, layer); }
return Result;
};
T.Object.$$c = T.Object.getElementsByClassName;
T.Object.parseIntDef = function(string, radix, defaultValue) {
var Result = parseInt(string, radix);
if (isNaN(Result)) { Result = defaultValue; }
return Result;
};
T.Object.loadImage = function(url) {
var Result = document.createElement('img');
Result.src = url;
return Result;
};
T.Object.$ = function(id) { return T.Document.getElementById(id); };
if (T.Check.isUndefined(window.$)) { window.$ = T.Object.$; }
T.Event = {};
T.Evt = T.Event;
T.Event.addEvent = function(element, type, event) {
if (element) {
if (element.addEventListener) { element.addEventListener(type, event, false); }
else if (element.attachEvent) { element.attachEvent('on' + type, event); }
}
};
T.Event.add = T.Event.addEvent;
T.Event.removeEvent = function(element, type, event) {
if (element) {
if (element.removeEventListener) { element.removeEventListener(type, event, false); }
else if (element.detachEvent) { element.detachEvent('on' + type, event); }
}
};
T.Event.remove = T.Event.removeEvent;
T.Event.getEvent = function(windowObject) {
var win = window;
if (!T.Check.isUndefined(windowObject)) { win = windowObject; }
if (win.event) { return win.event; }
var caller = arguments.callee.caller;
while (caller) {
var ob = caller.arguments[0];
if (ob && ((ob.constructor == MouseEvent) || (ob.constructor == KeyboardEvent))) { return ob; }
caller = caller.caller;
}
return null;
};
T.Event.$e = T.Event.getEvent;
T.Event.getEventTarget = function(windowObject) {
var e = T.Evt.$e(windowObject);
var Result = null;
if (e) {
if (e.target) { Result = e.target; }
else if (e.srcElement) { Result = e.srcElement; }
if (T.isWebKit && Result && (Result.nodeType == 3)) { Result = Result.parentNode; }
}
return Result;
};
T.Event.$t = T.Event.getEventTarget;
T.Event.getMousePoint = function() {
var Result = { X: 0, Y: 0 };
var e = T.Evt.$e();
if (e) {
if (window.opera) {
Result.X = e.clientX;
Result.Y = e.clientY;
}
else if (window.document.all) {
Result.X = window.document.body.scrollLeft + e.clientX;
Result.Y = window.document.body.scrollTop + e.clientY;
}
else if (window.document.layers || window.document.getElementById) {
Result.X = e.pageX;
Result.Y = e.pageY;
}
}
return Result;
};
T.Event.getKeyCode = function() {
var e = T.Evt.$e();
if (T.isTrident || T.isOpera) { return e.keyCode; }
else if (T.isGecko) { return (e.keyCode) ? e.keyCode : e.charCode; }
else if (T.isWebKit) { return e.which; }
else if (e.keyCode) { return e.keyCode; }
else { return null; }
};
T.Event.getKeydownKey = function() {
var e = T.Event.getEvent();
if (e.type != 'keydown') { return null; }
var code = T.Event.getKeyCode();
if ((48 <= code) && (code <= 57)) {
return '' + (code - 48);
}
else if ((65 <= code) && (code <= 90)) {
return String.fromCharCode(code);
}
else {
if (code == 8) { return 'BS'; }
else if (code == 9) { return 'TAB'; }
else if (code == 13) { return 'ENTER'; }
else if (code == 32) { return 'SPACE'; }
else if (code == 45) { return 'INSERT'; }
else if (code == 36) { return 'HOME'; }
else if (code == 35) { return 'END'; }
else if (code == 33) { return 'PAGEUP'; }
else if (code == 34) { return 'PAGEDOWN'; }
else if (code == 46) { return 'DELETE'; }
else if (code == 37) { return 'LEFT'; }
else if (code == 38) { return 'UP'; }
else if (code == 39) { return 'RIGHT'; }
else if (code == 40) { return 'DOWN'; }
}
};
T.Event.sendRequest = function(url, method, data, isAsync, callback) {
var Result = T.Object.getXmlRequest();
Result.open(method, url, isAsync);
if (method.toLowerCase() == 'post') { Result.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); }
if (callback) {
Result.onreadystatechange = function() {
if (Result.readyState == 4) {
if (Result.status == 200) {
callback(Result);
}
else {
alert('通信に失敗しました。');
}
}
};
}
Result.send(data);
return Result;
};
T.Event.execScript = function(src) {
var req = T.Event.sendRequest(src, 'get', null, false, null);
eval(req.responseText);
};
T.Event.cancelEvent = function(windowObject) {
var e = T.Evt.$e(windowObject);
if (e) {
e.returnValue = false;
if (T.Check.isFunction(e.preventDefault)) { e.preventDefault(); }
}
};
T.Event.cancel = T.Event.cancelEvent;
T.Event.cancelBubble = function() {
var e = T.Evt.$e();
if (e) {
e.cancelBubble = true;
if (T.Check.isFunction(e.stopPropagation)) { e.stopPropagation(); }
}
};
T.Event.clickElement = function(element) {
if (element) {
if (T.Browser.EngineType == T.BrowserEngineType.Trident) { element.click(); }
else {
var e = (element.document ? element.document.createEvent("MouseEvents") : document.createEvent("MouseEvents"));
e.initEvent("click", true, true);
element.dispatchEvent(e);
}
}
};
T.Event.addEventKeydownEnter = function(element, event) {
if (element) {
var func = event;
T.Evt.add(element, 'keydown', function() {
var code = T.Event.getKeyCode();
if ((code == 13) && (func)) {
func();
}
});
}
};
T.Event.addEventMouseScroll = function(element, event) {
if (T.isGecko) {
T.Evt.add(element, 'DOMMouseScroll', event);
}
else {
T.Evt.add(element, 'mousewheel', event);
}
};
T.Event.removeEventMouseScroll = function(element, event) {
if (T.isGecko) {
T.Evt.remove(element, 'DOMMouseScroll', event);
}
else {
T.Evt.remove(element, 'mousewheel', event);
}
};
T.Event.getWheelDelta = function() {
var e = T.Evt.$e();
if (T.isGecko) {
return e.detail;
}
else {
return e.wheelDelta * -1;
}
return 0;
};
String.prototype.splitString = function(separator, isRemoveEmpty) {
return T.String.splitString(this, separator, isRemoveEmpty);
};
T.Object.getSelectText = function() {
    var Result = '';
    if (window.document) {
        if ((window.document.selection) && (window.document.selection.createRange)) { Result = window.document.selection.createRange().text; }
        else if (window.getSelection) { Result = window.getSelection(); }
        else if (window.document.getSelection) { Result = window.document.getSelection(); }
    }
    return Result;
};
T.Event.addEventContext = function(element, event, cancelEvent) {

    if (T.Check.isUndefined(cancelEvent)) { cancelEvent = true; }
    if (element) {
        var f = event;
        if (T.isOpera) {
            T.Evt.add(element, 'mousedown', function(e) {
                if (e.button == 2) {
                    if (cancelEvent) { T.Evt.cancelEvent(); }
                    if (f) { f(); }
                }
            });
        }
        else {
            T.Evt.add(element, 'contextmenu', function() {
                if (cancelEvent) { T.Evt.cancelEvent(); }
                if (f) { f(); }
            });
        }
    }
};
T.Object.getFlash = function(id) {
    if (document[id]) { return document[id]; }
    else { return document.getElementById(id); }
};

