//要prototype.js  ver1.4でのみ確認済み
function serialize(ele){

    var elements = Form.getElements($(ele));
    var queryComponents = new Array();

    for (var i = 0; i < elements.length; i++) {
      var queryComponent = serialize2(elements[i]);

      if (queryComponent)
        queryComponents.push(queryComponent);
    }

    return queryComponents.join('&');
}


function serialize2(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);

    if (parameter) {
      var key = parameter[0];
      if (key.length == 0) return;

      if (parameter[1].constructor != Array)
        parameter[1] = [parameter[1]];

      return parameter[1].map(function(value) {
		if(value.match(/[^0-9a-zA-Z]/)){
			return '_' + key + '=' + encode_euc(value);
		}else{
			return key + '=' + value;
		}
      }).join('&');
    }
}


//ハッシュからフォームにイン----------------------------------------
function inForm(fid,inData){
	var form_obj = document.getElementById(fid);
	var form_input = form_obj.getElementsByTagName("input");
	var form_textarea = form_obj.getElementsByTagName("textarea");
	var form_select = form_obj.getElementsByTagName("select");
	for (var i = 0; i < form_input.length; i++) {
		if(inData[form_input[i].getAttribute("id")]){
			if(form_input[i].getAttribute("type") == "text" || form_input[i].getAttribute("type") == "hidden"){
				form_input[i].value=inData[form_input[i].getAttribute("id")];
			}else if(form_input[i].getAttribute("type") == "checkbox"){
				if(inData[form_input[i].getAttribute("id")] == 1){
					form_input[i].checked=true;
				}else{
					form_input[i].checked=false;
				}
			}
		}else{//radioの場合
			if(form_input[i].getAttribute("type") == "radio"){
				if(form_input[i].getAttribute("id").match(/_/)){
					var tmp=new Array;
					tmp=form_input[i].getAttribute("id").split(/_/);
					if(inData[tmp[0]]){
						if(inData[tmp[0]] == tmp[1]){
							form_input[i].checked=true;
						}else{
							form_input[i].checked=false;
						}
					}
				}
			}
		}
	}
	for (var i = 0; i < form_select.length; i++) {
		if(inData[form_select[i].getAttribute("id")]){
			form_select[i].value=inData[form_select[i].getAttribute("id")];
		}
	}
	for (var i = 0; i < form_textarea.length; i++) {
		if(inData[form_textarea[i].getAttribute("id")]){
			form_textarea[i].value=inData[form_textarea[i].getAttribute("id")];
		}
	}
}



function ckDate(datestr) { 
    // 正規表現による書式チェック 
    if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){ 
        return false; 
    } 
    var vYear = datestr.substr(0, 4) - 0; 
    var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現 
    var vDay = datestr.substr(8, 2) - 0; 
    // 月,日の妥当性チェック 
    if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){ 
        var vDt = new Date(vYear, vMonth, vDay); 
        if(isNaN(vDt)){ 
            return false; 
        }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){ 
            return true; 
        }else{ 
            return false; 
        } 
    }else{ 
        return false; 
    } 
}

function encode_euc(str){
    str=base64encode(_to_euc(str));

	str=str.replace(/\//g,"@");
	str=str.replace(/\+/g,"-");
	str=str.replace(/=/g,"_");

	return str;
}
function decode_euc(str){
	str=str.replace(/\@/g,"/");
	str=str.replace(/\-/g,"+");
	str=str.replace(/_/g,"=");

	str=_from_euc(base64decode(str));

	return str;
}
function encode_utf(str){
    str=base64encode(utf16to8(str));

	str=str.replace(/\//g,"@");
	str=str.replace(/\+/g,"-");
	str=str.replace(/=/g,"_");

	return str;
}
function decode_utf(str){
	str=str.replace(/\@/g,"/");
	str=str.replace(/\-/g,"+");
	str=str.replace(/_/g,"=");

	str=utf8to16(base64decode(str));

	return str;
}



//クッキーにフォームの値を保存する
function saveValue(cid){
	var eles;
	var ary = new Array;
	var frm=document.getElementById(cid);

	for(var i=0;i<frm.elements.length;i++){
		//チェック系はチェックの有無を保存
		if(frm.elements[i].type =='checkbox' || frm.elements[i].type =='radio'){
			ary[i]  = frm.elements[i].checked;
		//テキストとテキストエリアとドロップダウンリストは値を保存
		}else if(frm.elements[i].type =='text' || frm.elements[i].type =='textarea' || frm.elements[i].type =='select-one' ){
			ary[i] = frm.elements[i].value;
		}else{
			ary[i] = '';
		}
	}
	setCookie(frm.name,JSON.stringify(ary));
}
//クッキーから値を取り出してfrmにセットする
function restoreValue(cid){
	var ary;
	var frm=document.getElementById(cid);

	if(getCookie(frm.name)){
		ary = JSON.parse(getCookie(frm.name));
	}else{
		return;
	}
	for(var i=0;i<frm.elements.length;i++){
		//チェック系はチェックの有無を保存
		if(frm.elements[i].type =='checkbox' || frm.elements[i].type =='radio'){
			frm.elements[i].checked = ary[i];
		//テキストとテキストエリアとドロップダウンリストは値を保存
		}else if(frm.elements[i].type =='text' || frm.elements[i].type =='textarea' || frm.elements[i].type =='select-one' ){
			frm.elements[i].value = ary[i];
		}else{
		//	ary[i] = '';
		}
	}
}

function setCookie(key,val){
	var tmp = key + "=" + escape(val) + ";";
	tmp += "expires=Fri, 31-Dec-2030 23:59:59;";
	document.cookie = tmp;
}

function getCookie(key){
	var tmp = document.cookie+";";
	var tmp1 = tmp.indexOf(key,0);
	if(tmp1 != -1){
		tmp = tmp.substring(tmp1,tmp.length);
		start = tmp.indexOf("=",0);
		end = tmp.indexOf(";",start);
		return(unescape(tmp.substring(start+1,end)));
	}
	return("");
}

function delCookie(key){
	var expiredate = new Date();
	expiredate.setYear(expiredate.getYear()-1);
	var tmp = key+"=;";
	tmp += "expires="+expiredate.toGMTString();
	document.cookie = tmp;
}



