|
// **********************************************************
// EUC-JP で記述しています
//
// 1) function 内で this を使用するとそれはオブジェクト
// 2) オブジェクトのインスタンスは、new で作成
// 3) this.名称 で、名称はプロパティにもメソッドにもなる
//
// ↓実装記述
// <SCRIPT
// charset="euc-jp"
// language="javascript"
// type="text/javascript"
// src="lightboxtool.js">
// </SCRIPT>
//
// **********************************************************
// ---------------------------------------------------------
// zzz,zzz,zz9 format
// ---------------------------------------------------------
String.prototype.formatNumber =
function (prefix) {
var num = this.valueOf();
prefix = prefix || '';
num += '';
var splitStr = num.split('.');
var splitLeft = splitStr[0];
var splitRight = splitStr.length > 1 ? '.' + splitStr[1] : '';
var regx = /(\d+)(\d{3})/;
while (regx.test(splitLeft)) {
splitLeft = splitLeft.replace(regx, '$1' + ',' + '$2');
}
return prefix + splitLeft + splitRight;
}
String.prototype.unformatNumber =
function () {
var num = this.valueOf();
return num.replace(/([^0-9\.\-])/g, '');
}
// ---------------------------------------------------------
// only 0-9.- : true
// ---------------------------------------------------------
String.prototype.isNumber =
function () {
var num = this.valueOf();
var ret = num.replace(/([0-9\.\-])/g, '');
if ( ret != '' ) {
return false;
}
return true;
}
// ---------------------------------------------------------
// only strGroup like ("red,green,blue") : true
// ---------------------------------------------------------
String.prototype.isGroup =
function ( strGroup ) {
var str = this.valueOf();
var ar = strGroup.split( "," );
var i;
for ( i = 0; i < ar.length; i++ ) {
if ( ar[i] == str ) {
return true;
}
}
return false;
}
// ---------------------------------------------------------
// only charGroup like ("0123456789") : true
// ---------------------------------------------------------
String.prototype.isOnly =
function ( strGroup ) {
var str = this.valueOf();
for ( i = 0; i < str.length; i++ ) {
if ( strGroup.indexOf( str.substr( i, 1 ) ) == -1 ) {
return false;
}
}
return true;
}
// ---------------------------------------------------------
// string round with point
// ---------------------------------------------------------
String.prototype.round =
function ( nPoint ) {
if ( arguments.length == 0 ) {
nPoint = 0;
}
var num = parseFloat(this.valueOf());
var nOffset = Math.pow(10,nPoint);
var ret = Math.round( num * nOffset ) / nOffset;
return ret;
}
// ---------------------------------------------------------
// cut like round
// ---------------------------------------------------------
String.prototype.cut =
function ( nPoint ) {
if ( arguments.length == 0 ) {
nPoint = 0;
}
var num = parseFloat(this.valueOf());
var nOffset = Math.pow(10,nPoint);
var ret = 0;
if ( num >= 0 ) {
ret = Math.floor( num * nOffset ) / nOffset;
}
else {
ret = Math.ceil( num * nOffset ) / nOffset;
}
return ret;
}
// ---------------------------------------------------------
// up like round
// ---------------------------------------------------------
String.prototype.up =
function ( nPoint ) {
if ( arguments.length == 0 ) {
nPoint = 0;
}
var num = parseFloat(this.valueOf());
var nOffset = Math.pow(10,nPoint);
var ret = 0;
if ( num >= 0 ) {
ret = Math.ceil( num * nOffset ) / nOffset;
}
else {
ret = Math.floor( num * nOffset ) / nOffset;
}
return ret;
}
// ---------------------------------------------------------
// trim
// ---------------------------------------------------------
String.prototype.trim =
function ( ) {
var str = "";
var regL = /^[ \s]+/;
var regR = /[ \s]+$/;
var len = arguments.length;
// 内部メソッドとして使用する場合( 引数有 )
// String オブジェクト登録用( 引数なし )
str = this.valueOf();
str = str.replace(regL,"");
str = str.replace(regR,"");
return str;
}
// ---------------------------------------------------------
// 日付チェック
// ---------------------------------------------------------
String.prototype.isDate =
function ( ) {
var str = this.valueOf();
if ( str == "" ) {
return true;
}
if ( !str.match(/^\d{4}\/[\d]+\/[\d]+$/) ) {
return false;
}
var parts = str.split( "/" );
var nYear = Number(parts[0]);
var nMonth = Number(parts[1]) - 1;
var nDay = Number(parts[2]);
// 月,日の妥当性チェック
if ( 0 <= nMonth && nMonth <= 11 && 1 <= nDay && nDay <= 31 ) {
var dt = new Date(nYear, nMonth, nDay);
if( isNaN(dt) ) {
return false;
}
else if(
dt.getFullYear() == nYear &&
dt.getMonth() == nMonth &&
dt.getDate() == nDay ) {
return true;
}
else{
return false;
}
}
else{
return false;
}
}
function lightboxtool( ) {
this.version = "20080305";
// *************************************************
// バージョン文字列を返す
//
// ↓実行例( 同じ結果 )
// alert( obj.getVersion() )
// alert( obj["getVersion"]() );
// alert( obj.version );
// alert( obj["version"] );
// *************************************************
this.getVersion = function( ) {
return this.version;
}
// *************************************************
// String オブジェクトにメソッド追加
//
// ↓内部 trim メソッドの登録方法
// obj = new lightboxtool();
// obj.registStringMethod( "trim", obj.trim );
// *************************************************
this.registStringMethod = function( funcString, func ) {
String.prototype[funcString] = func;
}
// *************************************************
// 文字列のトリム
// *************************************************
this.trim = function( ) {
var str = "";
var regL = /^[ \s]+/;
var regR = /[ \s]+$/;
var len = arguments.length;
// 内部メソッドとして使用する場合( 引数有 )
if ( len == 1 ) {
str = arguments[0];
}
// String オブジェクト登録用( 引数なし )
else {
str = this.valueOf();
}
str = str.replace(regL,"");
str = str.replace(regR,"");
return str;
}
// *************************************************
// プロパティ名の一覧を配列として返す
//
// ↓使用例
// a = obj.prop();
// for( key in a ) {
// alert( a[key] );
// }
// *************************************************
this.prop = function( ) {
var arr = new Array();
var key;
var idx = 0;
for (key in this) {
arr[idx] = key;
idx++;
}
return arr;
}
// *************************************************
// 指定したオブジェクトの下に新しい IFRAME を作成
// *************************************************
this.openFrame = function( id, name, border, scrolling ) {
this.name = name;
// *************************************************
// コンストラクタ処理
// if = new obj.openFrame( "area", "selfid", true, true );
// *************************************************
this.div = document.createElement("div");
var obj = id
if (typeof obj == 'string') {
obj = window.document.getElementById(id);
}
if ( obj.parentNode ) {
obj.parentNode.insertBefore(this.div, obj);
obj.parentNode.insertBefore(obj,this.div);
}
else {
obj.parentElement.insertBefore(this.div, obj);
obj.parentElement.insertBefore(obj,this.div);
}
var str = "<IFRAME";
str += " name='" + name + "'";
str += " id='" + name + "'";
if ( border ) {
str += " frameborder='1'";
}
else {
str += " frameborder='0'";
}
if ( scrolling ) {
str += " scrolling='yes'";
}
else {
str += " scrolling='no'";
}
str += "></IFRAME>";
this.div.innerHTML = str;
this.iframe = window.document.getElementById(name);
this.iframe.setAttribute("name", name);
this.iframe.setAttribute("id", name);
this.iframe.style.position = "relative";
this.iframe.style.width = "200px";
this.iframe.style.height = "200px";
this.win = this.iframe.contentWindow;
this.doc = this.iframe.contentWindow.document;
this.style = this.iframe.style;
// *************************************************
// 絶対位置指定
// *************************************************
this.absolute = function( ) {
this.iframe.style.position = "absolute";
}
// *************************************************
// 相対位置指定
// *************************************************
this.relative = function( ) {
this.iframe.style.position = "relative";
}
// *************************************************
// 位置指定
// *************************************************
this.location = function( x, y ) {
this.iframe.style.left = x + "px";
this.iframe.style.top = y + "px";
}
// *************************************************
// src 属性のセット
// *************************************************
this.url = function( url ) {
this.iframe.src = url;
}
// *************************************************
// document.write
// *************************************************
this.write = function( str ) {
this.doc.write(str);
}
// *************************************************
// 非表示からの復帰
// *************************************************
this.open = function( ) {
this.iframe.style.display = '';
this.iframe.style.visibility = 'visible';
}
// *************************************************
// 場所を占有しない非表示
// *************************************************
this.hide = function( ) {
this.iframe.style.display = 'none';
}
// *************************************************
// 場所を占有する非表示
// *************************************************
this.close = function( ) {
this.iframe.style.visibility = 'hidden';
}
// *************************************************
// 再作成
// *************************************************
this.reset = function( ) {
if ( this.div ) {
this.div.parentNode.removeChild( this.div );
}
else {
this.div.parentElement.removeChild( this.div );
}
this.div = document.createElement("div");
var obj = id
if (typeof obj == 'string') {
obj = window.document.getElementById(id);
}
if ( obj.parentNode ) {
obj.parentNode.insertBefore(this.div, obj);
obj.parentNode.insertBefore(obj,this.div);
}
else {
obj.parentElement.insertBefore(this.div, obj);
obj.parentElement.insertBefore(obj,this.div);
}
var str = "<IFRAME";
str += " name='" + name + "'";
str += " id='" + name + "'";
if ( border ) {
str += " frameborder='1'";
}
else {
str += " frameborder='0'";
}
if ( scrolling ) {
str += " scrolling='yes'";
}
else {
str += " scrolling='no'";
}
str += "></IFRAME>";
this.div.innerHTML = str;
this.iframe = window.document.getElementById(name);
this.iframe.setAttribute("name", name);
this.iframe.setAttribute("id", name);
this.iframe.style.position = "relative";
this.iframe.style.width = "200px";
this.iframe.style.height = "200px";
this.win = this.iframe.contentWindow;
this.doc = this.iframe.contentWindow.document;
this.style = this.iframe.style;
}
}
}
| |