//////////////////////////////////////////////////////////////////////
// 説明
//////////////////////////////////////////////////////////////////////
/*
utility.js - JavaScriptユーティリティ関数

DESCRIPTION

ユーティリティ関数群

VERSIONS

    Version 1.00 (2007/04/06) 最初のバージョン
    Version 1.01 (2008/12/17) zipchkre2（ハイフン無し郵便番号）を追加
		z2h_numで数字以外の文字を削除する機能追加
		z2h_asciiを追加
		MM_findObjを追加
    Version 1.02 (2009/04/08) linksubmitを追加

AUTHOR

Amano (amano@ohah.net)
*/
//////////////////////////////////////////////////////////////////////
function PadtoString( i, col, pad ) 
{
	var s = ""
	if( i == 0 )
	{
		for( var j = 0; j < col - 1;j++)
		{
			s = s + pad
		}
		s = s + i
	}
	else
	{
		for( var j = 0; j < col - (Math.log(i)/Math.log(10)) - 1;j++)
		{
			s = s + pad
		}
		s = s + i
	}
	return s
}
function convCurr( num ) 
{
	var s = "";
	var base = 10;
	for( var i = 0; num >= 1;i++)
	{
		if( i != 0 && i%3 == 0)
		{
			s = String(num%base).substr(0,1) + "," + s;
		}
		else
		{
			s = String(num%base).substr(0,1) + s;
		}
		num /= 10;
	}
	if( s == "" )
		s = "0";
	return s
}
function ParseQuery( url, qname )
{
	queryString = url.split("?");
	if( queryString[1] == null )
	{
		return null;
	}
	else
	{
		queries = queryString[1].split("&");
		for(var i = 0 ;queries[i] != null;i++ )
		{
			query = queries[i].split("=");
			if( query[0] == qname || query[0] == qname.toLowerCase())
			{
				return query[1];
			}
		}
		return null;
	}
}

function GetRadioValue( obj )
{
	if(obj.length == null)
	{
		return(obj.value);
	}
	else
	{
		for( i=0;i < obj.length;i++)
		{
			if( obj[i].checked )
			{
				return(obj[i].value);
			}
		}
	}
	return("");
}

function GetSelectionValue( obj )
{
	if(obj.length == null)
	{
		return(obj.value);
	}
	else
	{
		for( i=0;i < obj.length;i++)
		{
			if( obj[i].selected )
			{
				return(obj[i].value);
			}
		}
	}
	return("");
}

// Check name with 2 byte space
//var namechkre = new RegExp("^\\S+　\\S+$");
var namechkre = new RegExp("^\\S+[　 ]\\S+$");

// Check ZIP
var zipchkre = new RegExp("^\\d\\d\\d-\\d\\d\\d\\d$");
var zipchkre2 = new RegExp("^\\d{7}$");

// Check TEL
var telchkre = new RegExp("(\\d{2,5})-(\\d{1,4})");
var telchkre2 = new RegExp("(\\d{2,5})-(\\d{1,4})-(\\d{4,5})");

// Check email address
var mailchkre = new RegExp("^\\S+@\\S+\\.\\S+$");

// Check EUC codes + 2 byte space ＋「−」＋「ー」+ 1 byte space
function is_kana(c) { return ((c >= 12449 && c <= 12534) || c == 12288 || c == 12540 || c == 65293 || c == 32); }
function katakanachk(src)
{
    for (var i = 0; i < src.length; i++) {
        var c = src.charCodeAt(i);
        if (! is_kana(c)) 
		{ 
			return false;
        }
    }
	return true;
//	return( /\S+　\S+/.test(src) );
}

// Check number (allow only hankaku numeric)
function isNum(str) {
    var code, count;
    for (var i=0; i < str.length; i++) 
	{
        code = str.charCodeAt(i);
        if (code < 48 || code > 57) 
		{
			return(false);
		}
	}
	return(true);
}
// Check number (allow hankaku numeric + EUC zenkaku numeric)
function isNumeric(str) {
    var code, count;
    for (var i=0; i < str.length; i++) 
	{
        code = str.charCodeAt(i);
        if ((code < 48 || code > 57) && ( code < 65296 || code > 65305)) 
		{
			return(false);
		}
	}
	return(true);
}
// Convert EUC zenkaku numeric to hankaku numeric
function z2h_num(str) {
    var code, count, res;
	res = "";
    for (var i=0; i < str.length; i++) 
	{
        code = str.charCodeAt(i);
        if (code >= 65296 && code <= 65305)	// EUC zenkaku numeric 0-9
		{
			code -= 65248;	// convert to hankaku numeric
		}
		if (code >= 48 && code <= 57)
		{
			res += String.fromCharCode(code);
		}
	}
	return(res);
}
function z2h_ascii(src, exc) {
  var str = new String;
  var len = src.length;
  for (var i = 0; i < len; i++) {
    var c = src.charCodeAt(i);
    if (exc.indexOf(src.charAt(i)) > -1) {
      str += src.charAt(i); /* 除外 */
    } else if (c >= 65281 && c <= 65374 && c != 65340) {
      str += String.fromCharCode(c - 65248);
    } else if (c == 8217) {
      str += String.fromCharCode(39);
    } else if (c == 8221) {
      str += String.fromCharCode(34);
    } else if (c == 12288) {
      str += String.fromCharCode(32);
    } else if (c == 65507) {
      str += String.fromCharCode(126);
    } else if (c == 65509) {
      str += String.fromCharCode(92);
    } else if (c == 12540 || c == 8213 || c == 8208 || c == 8722 ) {	// ハイフン
      str += String.fromCharCode(45);
    } else {
      str += src.charAt(i);
    } 
  }
  return str;
}
function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function linksubmit(name) {form = MM_findObj(name);form.submit();return(false);}
function resetform(name) {form = MM_findObj(name);form.reset();return(false);}

// prepare non-SSL and SSL URLs
var current_href = location.href;
var sslport = "";
pos = current_href.lastIndexOf("/");
current_path = current_href.substring(0, pos+1);
if( current_path.indexOf("https") != -1 )
{
	re = new RegExp("https:\/\/" + location.hostname, "gi")
	base_href = current_path.replace( re, "http://" + location.hostname);
	securebase_href = current_path;
}
else
{
	re = new RegExp("http:\/\/" + location.hostname, "gi")
	base_href = current_path;
	securebase_href = current_path.replace( re, "https://" + location.hostname + sslport);
}
base_domain = "http://" + location.hostname;
secure_domain = "https://" + location.hostname + sslport;

