function clearFormIfDefault(target) {
	if (target.value == target.defaultValue) {
		target.value = '';
	}
}

function restoreFormIfNull(target) {
	target.value = target.value.replace(/^\s+/, '').replace(/\s+$/, '');
	if (target.value == '') {
		target.value = target.defaultValue;
	}
}



function openHelp(filename){
	window.open(filename, 'help', 'width=500,height=600,menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=no');
}


function openPrivacyPolicy(filename){
	window.open(filename, 'privacy_policy', 'width=600,height=600,menubar=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=no');
}

var EmailValidLoose = {
		/*
		// perlのEmail::Valid::Looseの正規表現を使用
		*/
        ___reg: new RegExp('^-?(?:[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff])|"[^\\\\\\x80-\\xff\\n\\015"]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015"]*)*")(?:(?:[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff])|"[^\\\\\\x80-\\xff\\n\\015"]*(?:\\\\[^\\x80-\\xff][^\\\\\\x80-\\xff\\n\\015"]*)*")|\\.)*@(?:[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\])(?:\\.(?:[^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff]+(?![^(\\040)<>@,;:".\\\\\\[\\]\\000-\\037\\x80-\\xff])|\\[(?:[^\\\\\\x80-\\xff\\n\\015\\[\\]]|\\\\[^\\x80-\\xff])*\\]))*$'),
        address: function(addr){
                return (addr.match(this.___reg)) ? true : false;
        }
};




var URLValid = {
        ___reg: new RegExp("\\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?"),
        url: function(url){
                return (url.match(this.___reg)) ? true : false;
        }
};


String.prototype.is_zenkaku = function (type){
        var r = 0;
        var st = 12353;
        var en = 12435;
        var op1 = 12445;
        var op2 = 12446;
        if(type == 'katakana'){
                var n = 96;
                st = st + n;
                en = en + n;
                op1 = op1 + n;
                op2 = op2 + n;
        }
        var len = this.length;
        for(var i=0;i<len;i++){
                var c = str.charCodeAt(i);
                if(st <= c && c <= en || c == op1 || c == op2 ){ r++; }
        }
        return (r == len) ? true : false;
};

//  validation セットになっているもの(emailなど) と 組合せて使えるものがあるので、どうするか、考えておくべし
function _validate(elem){
        var validate_type = elem.getAttribute('validation').split(',');
        var __validate = {
                email:function(v){return EmailValidLoose.address(v.z2h())},
                url:function(v){URLValid.url(v.z2h())},
                phone: function(v){return (v.z2h().match(/[\d\-\+]+/) ? true : false)},
                zip: function(v){return v.z2h().match(/^\d{3}(?:\-\d{4})?$/) ? true : false},
                alpha: function(v){return (v.z2h().match(/\W/) ? false : true)},
                hira: function(v){return v.is_zenkaku('hiragana')},
                kata: function(v){return v.h2z().is_zenkaku('katakana')},
                dot: function(v){},
                hyphen: function(v){},
                under: function(v){}
        };

        for(var i=0;i<validate_type.length;i++){
                //if(elem.value )
        }
}


function validate(){
        var form_f = document.getElementById('form');
        var form = form_f.getElementsByTagName('form')[0];
        var elems = form.getElementsByTagName('input');
        form.onsubmit = function(){
                var r = 0;
                for(var i=0,len=elems.length;i<len;i++){
                        _validate(elems[i]) && r++;
                }
                return (r == elems.length) ? true : false;
        }
}

window.onload = function(){
//        validate();
}








function openZipcodeSearch(f,i,target){
	var zip1,zip2;
	var zip1=f.elements[String(i)+"_1"].value;
	var zip2=f.elements[String(i)+"_2"].value;
	var w=window.open(location.href+"?ac=zipcode_search&target="+target+"&zipcode="+String(zip1)+String(zip2)+"&sessID="+f.elements["sessID"].value,"zipcode_search",
	'width=630,height=380,menubar=no,toolbar=no,location=yes,directories=no,status=no,scrollbars=yes,resizable=yes');
	w.focus();
}


function openZipcodeSearchAjax(self,target_name){
	var zip1,zip2;
	var inputs=self.parentNode.getElementsByTagName("input");
	var zip1=$F(inputs[0]);
	var zip2=$F(inputs[1]);

	var container=$("zipcode_address"+self.name);
	var div=container.getElementsByTagName("span")[0];

	var myAjax = new Ajax.Updater(
		div,
		location.href,
		{
			method: 'get',
			parameters: "ac=zipcode_search&ajax=1&target="+target_name+"&zipcode="+String(zip1)+String(zip2)+"&sessID="+document.forms[0].elements["sessID"].value,
			onComplete: function(tr){
			     if(location.href.match(/form2/)){
                                     div.style.border = '1px outset gray'
			             div.style.opacity =  1;
			             $A(document.getElementsByTagName('td')).each(function(txta){
			                     txta.style.zIndex -= 1;
                                     });
			             Element.show(container);
// 			             			             new Effect.Appear(container,{duration: 0.5});

			     }else{
				Element.show(container);
			     }
			}
		}
	)
}




function closeZipcodeSearchAjax(event){
	var s=Event.element(event);
	while(!s.getAttribute("id")){
		s=s.parentNode;
	}
	Element.hide(s);
}


function setZipcodeAddress(f,target){
	if(opener){
		var address;
		if(f.elements.index.length){
			for(var i=0;i<f.elements.index.length;i++){
				if(f.elements.index[i].checked){
					address=f.elements.index[i].value;
					break;
				}
			}
		}else{
			address=f.elements.index.value;
		}
		var tf;
		for(var i=0;i<opener.document.forms[0].elements.length;i++){
			if(opener.document.forms[0].elements[i].name == target){
				tf=opener.document.forms[0].elements[i];
				break;
			}
		}
		tf.focus();
		if(String(tf.value).length >0){
			if(!opener.confirm("すでに入力されている値を削除して検索された住所に置き換えます。よろしいですか？")){
				window.close();
				return;
			}
		}
		tf.value=address;
		window.close();
	}
}

function setZipcodeAddressValue(event,address,target_name){
	var f=document.forms[0];
	var tf;
	for(var i=0;i<f.elements.length;i++){
		if(f.elements[i].name == target_name){
			tf=f.elements[i];
			break;
		}
	}
	tf.value=address;
	closeZipcodeSearchAjax(event);
	tf.focus();
}


