/*



*/
function _eval_json(value) {
	return eval('(' + value + ')');
}

function _to_json_arg(value) {
	return '__JSON__' + value.toJSONString();
}

function _callback_stub(value) {
	_ReturnValue = value;
}

function _get_arguments(args) {
	var retargs = new Array();
	for (var i = 0; i < args.length; i++) {
		retargs[i] = args[i];
	}
	retargs[args.length] = _callback_stub;
	return retargs;
}

var _DataSource = new Array();
var _BindInfo = new Array();
var _RepeatTimes = new Array();
var _ReturnValue = null;

function _show_DataSource(formid, dataSource, postfix) {

	if (arguments.length < 3) {
		postfix = '';
	}

	var records, fname, id, tempval, fid, obj;

	fid = formid + postfix;
	records = _DataSource[dataSource].length;

	if (records == 0) {
		return;
	}

	for (var j = 0; j < _BindInfo[fid].length; j++) {

		fname = _BindInfo[fid][j]['fieldName'];
		id = _BindInfo[fid][j]['id'];
		type = _BindInfo[fid][j]['type'];

		obj = document.all[id];

		if (fname != '' && _BindInfo[fid][j]['dataSource'] == dataSource) {
			tempval = _DataSource[dataSource][0][fname];
			if (type == 'label') {
				obj.innerText = tempval;
			} else if (type == 'image') {
				obj.src = tempval;
			} else if (type == 'checkbox') {
				if (tempval == 1) {
					obj.checked = true;
				} else {
					obj.checked = false;
				}
			} else if (type == 'radio') {
				if (obj.value == tempval) {
					obj.checked = true;
				} else {
					obj.checked = false;
				}
			} else {
				obj.value = tempval;
			}
		}
	}
}

function _show_DataSourceR(formid, dataSource, offset, postfix) {

	if (arguments.length < 4) {
		postfix = '';
	}
	if (arguments.length < 3) {
		offset = 0;
	}

	var records, line, fname, id, tempval, fid, obj;

	fid = formid + postfix;
	records = _DataSource[dataSource].length;

	line = 0;

	for (var i = offset; i < records; i++, line++) {
		if (line >= _RepeatTimes[fid]) {
			break;
		}

		try {
			document.all['__i' + ('000' + line).slice(-3) + '__' + postfix].value = i;
		} catch (e) {}

		for (var j = 0; j < _BindInfo[fid].length; j++) {

			fname = _BindInfo[fid][j]['fieldName'];
			id = _BindInfo[fid][j]['id'];
			type = _BindInfo[fid][j]['type'];

			obj = document.all[id][line];

			if (obj == undefined) {
				obj = document.all[id];
			}

			if (fname != '' && _BindInfo[fid][j]['dataSource'] == dataSource) {
				tempval = _DataSource[dataSource][i][fname];
				if (type == 'label' || type == 'anchor') {
					obj.innerText = tempval;
				} else if (type == 'image') {
					obj.src = tempval;
				} else if (type == 'checkbox') {
					if (tempval == 1) {
						obj.checked = true;
					} else {
						obj.checked = false;
					}
				} else if (type == 'radio') {
					if (obj.value == tempval) {
						obj.checked = true;
					} else {
						obj.checked = false;
					}
				} else {
					obj.value = tempval;
				}
			}
			if (_BindInfo[fid][j]['dataSource'] == dataSource) {
				obj.style.visibility = 'visible';
			}
		}
	}

	for (; line < _RepeatTimes[fid]; line++) {

		try {
			document.all['__i' + ('000' + line).slice(-3) + '__' + postfix].value = -1;
		} catch (e) {}

		for (var j = 0; j < _BindInfo[fid].length; j++) {

			fname = _BindInfo[fid][j]['fieldName'];
			id = _BindInfo[fid][j]['id'];
			type = _BindInfo[fid][j]['type'];

			obj = document.all[id][line];

			if (obj == undefined) {
				obj = document.all[id];
			}

			if (fname != '' && _BindInfo[fid][j]['dataSource'] == dataSource) {
				if (type == 'label') {
					obj.innerText = "";
				} else if (type == 'image') {
					obj.src = "";
				} else if (type == 'checkbox' || type == 'radio') {
					obj.checked = false;
				} else {
					obj.value = "";
				}
				obj.style.visibility = 'hidden';
			}
			if (_BindInfo[fid][j]['dataSource'] == dataSource) {
				obj.style.visibility = 'hidden';
			}
		}
	}
}

function _show_page_DataSourceR(formid, dataSource, offset, postfix) {
	var offset = (page - 1) * _RepeatTimes[formid + postfix];
	_show_DataSourceR(formid, dataSource, offset, postfix)
}

function _save_page_field_DataSourceR(dataSource, fname, id, postfix)
{
	for (var line = 0; ; line++) {
		try {
			if (_rindex(line, postfix) == -1) {
				break;
			}
			_save_field_DataSource(dataSource, fname, id, line, postfix);
		} catch (e) {
			break;
		}
	}
}

function _save_all_field_DataSource(formid, dataSource, postfix) {

	if (arguments.length < 3) {
		postfix = '';
	}

	var records, fname, id, fid;

	fid = formid + postfix;
	records = _DataSource[dataSource].length;

	if (records == 0) {
		return;
	}

	for (var j = 0; j < _BindInfo[fid].length; j++) {

		fname = _BindInfo[fid][j]['fieldName'];
		id = _BindInfo[fid][j]['id'];
		type = _BindInfo[fid][j]['type'];

		_save_field_DataSource(dataSource, fname, id, -1, postfix);
	}
}

function _save_field_DataSource(dataSource, fname, id, line, postfix) {

	var obj;
	var rindex;

	if (line == -1) {
		obj = document.all[id];
		rindex = 0;
	} else {
		obj = document.all[id][line];
		rindex = _rindex(line, postfix);
	}

	var type = obj.type;

	if (type == 'checkbox') {
		if (obj.checked == true) {
			_DataSource[dataSource][rindex][fname] = 1;
		} else {
			_DataSource[dataSource][rindex][fname] = 0;
		}
	} else if (type == 'radio') {
		var elements = document.getElementsByName(obj.name);
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].checked == true) {
				_DataSource[dataSource][rindex][fname] = elements[i].value;
				break;
			}
		}
	} else if (type == undefined) {
		_DataSource[dataSource][rindex][fname] = obj.innerText;
	} else {
		_DataSource[dataSource][rindex][fname] = obj.value;
	}
}

function _set_field_data(id, line, tempval) {

	var obj;

	if (line == -1) {
		obj = document.all[id];
	} else {
		obj = document.all[id][line];
	}

	if (obj.tagName == 'IMG') {
		obj.src = tempval;
	} else if (obj.tagName == 'SELECT') {
		obj.value = tempval;
	} else {

		var type = obj.type;

		if (type == 'text' || type == 'hidden' || type == 'password') {
			obj.value = tempval;
		} else if (type == 'checkbox') {
			if (tempval == 1) {
				obj.checked = true;
			} else {
				obj.checked = false;
			}
		} else {
			obj.innerText = tempval;
		}
	}
}

function _enabled_div(divid, enabled) {

	var elements = document.all(divid).getElementsByTagName('input');

	for(var i = 0; i < elements.length; i++){
		elements[i].disabled = (! enabled);
	}
}

function _enabled_divs(divids, enabled) {
	for(var i = 0; i < divids.length; i++){
		_enabled_div(divids[i], enabled);
	}
}

function _rindex(line, postfix) {
	return document.all['__i' + ('000' + line).slice(-3) + '__' + postfix].value;
}

function _get_bindinfo_index(formid, id, postfix) {

	var fid = formid + postfix;
	var idp = id + postfix;

	for (var i = 0; i < _BindInfo[fid].length; i++) {
		if (_BindInfo[fid][i]['id'] == idp) {
			return i;
		}
	}

	return -1;
}

var _DownKeyCode;
var _UpKeyCode;
var _PressKeyCode;

function _key_down(id, index) {
	_DownKeyCode = event.keyCode;
}

function __key_down(id, index) {
	if (_DownKeyCode == 13) {
		event.keyCode = 9;
	}
}

function _key_press(id, index) {
	_PressKeyCode = event.keyCode;
}

function __key_press(id, index) {
}

function _key_up(id, index) {
	_UpKeyCode = event.keyCode;
}

function __key_up(id, index) {
}

function _set_focus(id, index) {
	try {
		var obj;
		switch (arguments.length) {
			case 1 :
				obj = document.all[id];
				break;
			case 2 :
				obj = document.all[id][index];
				break;
		}
		obj.focus();
		if (obj.type == 'text') {
			obj.select();
		}
	} catch (e) {}
}

function _set_visible(id, line, value) {

	var obj;

	if (line == -1) {
		obj = document.all[id];
	} else {
		obj = document.all[id][line];
	}

	if (value == true) {
		obj.style.visibility = 'visible';
	} else {
		obj.style.visibility = 'hidden';
	}
}

function _alert(s) {
	alert(s);
}

function _confirm(s) {
	return confirm(s);
}

function _is_number(id, index) {

	try {
		var obj = _get_object(id, index);
		return !(isNaN(obj.value.toString()));
	} catch (e) {
		return false;
	}
}

function _is_integer(id, index, from_val, to_val) {

	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if (! str.match(/^[-]?\d*$/)) {
			return false;
		}
		var val = parseInt(str);
		if (from_val != undefined && val < from_val) {
			return false;
		}
		if (to_val != undefined && to_val < val) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
}

function _is_date(id, index, from_val, to_val) { 

	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if (str.length == 0) {
			return true;
		}
		var res;
		var reg1 = /^(\d{2}|\d{4})\/(\d{1,2})\/(\d{1,2}$)/; // (YY)YY/(M)M/(D)D
		var reg2 = /^(\d{2}|\d{4})(\d{2})(\d{2}$)/; // (YY)YYMMDD
		if (! ((res = reg1.exec(str)) || (res = reg2.exec(str)))) {
			return false;
		}
		var yyyy = res[1] - 0;
		if (yyyy < 100) {
			yyyy += 2000;
		}
		var mm = res[2] - 1;
		var dd = res[3] - 0; 
		if (mm < 0 || 11 < mm || dd < 1 || 31 < dd) {
			return false;
		}
		var dt = new Date(yyyy, mm, dd); 
		if (isNaN(dt)) { 
			return false; 
		} else if(dt.getFullYear() != yyyy || dt.getMonth() != mm || dt.getDate() != dd) { 
			return false; 
		}
		var val = _lpad('' + yyyy, 4, '0') + "/" + _lpad('' + (mm + 1), 2, '0') + "/" + _lpad('' + dd, 2, '0');
		obj.value = val;
		if (from_val != undefined && val < from_val) {
			return false;
		}
		if (to_val != undefined && to_val < val) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
} 

function _is_hankaku(id, index, maxlen) {

	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if(str.match(/[^a-z0-9｡-ﾟ\.\/\[\]\(\)\{\}\|\^\$\-\+\*\\\"\'#$%&~@`:<>,!?_=;]+/i)){
			return false;
		}
		if (maxlen != undefined && str.length > maxlen) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
}

function _is_zenkaku(id, index, maxlen) {

	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if(str.match(/[ a-z0-9｡-ﾟ\.\/\[\]\(\)\{\}\|\^\$\-\+\*\\\"\'#$%&~@`:<>,!?_=;]+/i)){
			return false;
		}
		if (maxlen != undefined && str.length > maxlen) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
}

function _is_zip(id, index) {
	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if (str == '') {
			return true;
		}
		if (! str.match(/^\d{3}-\d{4}$/)) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
}

function _is_tel(id, index) {
	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if (str == '') {
			return true;
		}
		if (! str.match(/^[0-9\-]+$/)) {
			return false;
		}
		return true;
	} catch (e) {
		return false;
	}
}

function _is_blank(id, index) {
	_trim(id, index);
	try {
		var obj = _get_object(id, index);
		var str = obj.value.toString();
		if (str == '') {
			return true;
		}
		return false;
	} catch (e) {
		return false;
	}
}

function _trim(id, index) {
	try {
		var obj = _get_object(id, index);
		obj.value = obj.value.replace(/^[ ]+|[ ]+$/g, '');
	} catch (e) {}
}

function _trim_str(s) {
	return s.replace(/^[ ]+|[ ]+$/g, '');
}

function _lpad(str, len, ch) {
	return new Array(len - ('' + str).length + 1).join(ch) + str;
}

function _to_upper(id, index) {
	try {
		var obj = _get_object(id, index);
		obj.value = obj.value.toUpperCase();
	} catch (e) {}
}

function _get_object(id, index) {
	if (index == -1) {
		return document.all[id];
	} else {
		return document.all[id][index];
	}
}

function _1st_date(yyyy, mm) {
	var dt = new Date();
	if (yyyy == undefined) {
		yyyy = dt.getFullYear();
	}
	if (mm == undefined) {
		mm = dt.getMonth();
	} else {
		mm--;
	}
	return _lpad('' + yyyy, 4, '0') + "/" + _lpad('' + (mm + 1), 2, '0') + "/" + _lpad('1', 2, '0');
}

function _last_date(yyyy, mm) {
	var dt = new Date();
	if (yyyy == undefined) {
		yyyy = dt.getFullYear();
	}
	if (mm == undefined) {
		mm = dt.getMonth() + 1;
	} else {
		mm;
	}
	if (mm >= 12) {
		yyyy++;
		mm = 0;
	}
	dt = new Date(yyyy, mm, 1);
	var tm = dt.getTime() - (24 * 60 * 60 *1000);
	dt.setTime(tm);
	yyyy = dt.getFullYear();
	mm = dt.getMonth();
	var dd = dt.getDate();
	return _lpad('' + yyyy, 4, '0') + "/" + _lpad('' + (mm + 1), 2, '0') + "/" + _lpad(dd, 2, '0');
}

function _now_date() {
	var dt = new Date();
	var yyyy = dt.getFullYear();
	var mm = dt.getMonth();
	var dd = dt.getDate();
	return _lpad('' + yyyy, 4, '0') + "/" + _lpad('' + (mm + 1), 2, '0') + "/" + _lpad(dd, 2, '0');
}

//--------------------------------------------------------------------
//
// 初期化処理
//
// Selecters::array( [ElementName][.className] / #ID )
//
function _set_hover(Selecters){
	if(! navigator.userAgent.match(/MSIE/)) return;
	for(var i=0;i<Selecters.length;i++) {
		if(Selecters[i].match(/^#(.*)/)){
			var O = document.getElementById(RegExp.$1);
			if(! O)continue;
			O.overClass = 'Hover';
			O.onmouseover = function(){_handle_class('add',this)};
			O.onmouseout = function(){_handle_class('del',this)};
		} else {
			var TagClass = Selecters[i].split('.');
			if(TagClass[0] == '') TagClass[0] = '*';
			var TagList = document.getElementsByTagName(TagClass[0]);
			for(var j=0;j<TagList.length;j++) {
				if( TagClass[1] && (! _handle_class('match',TagList[j],TagClass[1]))) continue;
				var addName = (TagClass[1])?TagClass[1]+'Hover':'Hover';
				TagList[j].overClass = addName;
				TagList[j].onmouseover = function(){_handle_class('add',this)};
				TagList[j].onmouseout = function(){_handle_class('del',this)};
			}
		}
	}
}
//
// 要素のクラス操作
//
// Mode
//  match::オブジェクト(O)にクラス(str)は含まれているか？ return true/false
//  add::オブジェクト(O)のクラスに新しくクラス(str)を追加
//  del::オブジェクト(O)のクラスからクラス(str)を削除
//
function _handle_class(Mode,O,str){
	var ClassList = O.className.split(' ');
	if(Mode == 'match') {
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] == str) return true;
		}
		return false;
	} else if(Mode == 'add') {
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] == O.overClass) return O.className;
		}
		O.className += ' '+O.overClass;
		return O.className;
	} else if(Mode == 'del') {
		var newClassName = '';
		for(var i=0;i<ClassList.length;i++){
			if(ClassList[i] != O.overClass)
				newClassName += ' '+ClassList[i];
		}
		O.className = newClassName.replace(/^ /,'');
		return O.className;
	}
}

function _get_cookie(key, tmp1, tmp2, xx1, xx2, xx3) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key) {
            return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        }
        xx1 = xx2 + 1;
    }
    return("");
}

function _set_cookie(key, val, tmp) {
    tmp = key + "=" + escape(val) + "; ";
    // tmp += "path=" + location.pathname + "; ";
    tmp += "expires=Tue, 31-Dec-2030 23:59:59; ";
    document.cookie = tmp;
}

function _clear_cookie(key) {
    document.cookie = key + "=" + "xx; expires=Tue, 1-Jan-1980 00:00:00;";
}

