
AjaxZip2 = function () {};
AjaxZip2.CACHE = [];
AjaxZip2.prev = '';
AjaxZip2.PREFMAP = [
    null,       '北海道',   '青森県',   '岩手県',   '宮城県',
    '秋田県',   '山形県',   '福島県',   '茨城県',   '栃木県',
    '群馬県',   '埼玉県',   '千葉県',   '東京都',   '神奈川県',
    '新潟県',   '富山県',   '石川県',   '福井県',   '山梨県',
    '長野県',   '岐阜県',   '静岡県',   '愛知県',   '三重県',
    '滋賀県',   '京都府',   '大阪府',   '兵庫県',   '奈良県',
    '和歌山県', '鳥取県',   '島根県',   '岡山県',   '広島県',
    '山口県',   '徳島県',   '香川県',   '愛媛県',   '高知県',
    '福岡県',   '佐賀県',   '長崎県',   '熊本県',   '大分県',
    '宮崎県',   '鹿児島県', '沖縄県'
];

AjaxZip2.zip2addr = function ( zip1, zip2 , formId) {
	var fm = document.getElementById(formId);
	
    var fzip1 = fm.elements[zip1].value;
    var fzip2 = fm.elements[zip2].value;
	
    if ( ! fzip1 ) return;
    if ( ! fzip2 ) return;
    // 郵便番号を数字のみ7桁取り出す
    var vzip = fzip1;
    if ( fzip2 ) vzip += fzip2;
    if ( ! vzip ) return;
    var nzip = '';
    for( var i=0; i<vzip.length; i++ ) {
        var chr = vzip.charCodeAt(i);
        if ( chr < 48 ) continue;
        if ( chr > 57 ) continue;
        nzip += vzip.charAt(i);
    }
    if ( nzip.length < 7 ) return;

    // JSON取得後のコールバック関数
    var func1 = function ( data ) {
        var array = data[nzip];
        // Opera バグ対策：0x00800000 を超える添字は +0xff000000 されてしまう
        var opera = (nzip-0+0xff000000)+"";
        if ( ! array && data[opera] ) array = data[opera];
        if ( ! array ) return;
        var pref_id = array[0];                 // 都道府県ID
        if ( ! pref_id ) return;
        var jpref = AjaxZip2.PREFMAP[pref_id];  // 都道府県名
        if ( ! jpref ) return;
        var jcity = array[1];
        if ( ! jcity ) jcity = '';              // 市区町村名
        var jarea = array[2];
        if ( ! jarea ) jarea = '';              // 町域名
        var jstrt = array[3];
        if ( ! jstrt ) jstrt = '';              // 番地

        // 都道府県名＋市区町村名の場合
        address = jpref + jcity + jarea + jstrt;
        fm.elements['pref'].value = jpref;
		fm.elements['address1'].value = jcity;
		fm.elements['address2'].value = jarea;

    };

    // 郵便番号上位3桁でキャッシュデータを確認
    var zip3 = nzip.substr(0,3);
    var data = AjaxZip2.CACHE[zip3];
    if ( data ) return func1( data );
	
    // JSONファイルを受信する
    var url = AjaxZip2.JSONDATA+'/zip-'+zip3+'.json';
	//var url = "http://solarpow-guide.info/data/zip-"+zip3+".json";

        // JSONファイル受信後のコールバック関数（jQuery用）
        var func3 = function (data) {
            if ( ! data ) return;
            AjaxZip2.CACHE[zip3] = data;
            func1( data );
        };
        jQuery.getJSON( url, func3 );
		
	/*
    var fzip1 = fm.elements[zip1].value;
    var fzip2 = fm.elements[zip2].value;
    if ( ! fzip1 ) return;
    if ( ! fzip2 ) return;
    // 郵便番号を数字のみ7桁取り出す
    var vzip = fzip1;
    if ( fzip2 ) vzip += fzip2;
    if ( ! vzip ) return;
    var nzip = '';
    for( var i=0; i<vzip.length; i++ ) {
        var chr = vzip.charCodeAt(i);
        if ( chr < 48 ) continue;
        if ( chr > 57 ) continue;
        nzip += vzip.charAt(i);
    }
    if ( nzip.length < 7 ) return;

    // JSON取得後のコールバック関数
    var func1 = function ( data ) {
        var array = data[nzip];
        // Opera バグ対策：0x00800000 を超える添字は +0xff000000 されてしまう
        var opera = (nzip-0+0xff000000)+"";
        if ( ! array && data[opera] ) array = data[opera];
        if ( ! array ) return;
        var pref_id = array[0];                 // 都道府県ID
        if ( ! pref_id ) return;
        var jpref = AjaxZip2.PREFMAP[pref_id];  // 都道府県名
        if ( ! jpref ) return;
        var jcity = array[1];
        if ( ! jcity ) jcity = '';              // 市区町村名
        var jarea = array[2];
        if ( ! jarea ) jarea = '';              // 町域名
        var jstrt = array[3];
        if ( ! jstrt ) jstrt = '';              // 番地

        // 都道府県名＋市区町村名の場合
        address = jpref + jcity + jarea + jstrt;
        fm.elements['pref'].value = jpref;
		fm.elements['address1'].value = jcity;
		fm.elements['address2'].value = jarea;

    };

    // 郵便番号上位3桁でキャッシュデータを確認
    var zip3 = nzip.substr(0,3);
    var data = AjaxZip2.CACHE[zip3];
    if ( data ) return func1( data );

    // JSONファイルを受信する
    var url = AjaxZip2.JSONDATA+'/zip-'+zip3+'.json';

        // JSONファイル受信後のコールバック関数（jQuery用）
        var func3 = function (data) {
            if ( ! data ) return;
            AjaxZip2.CACHE[zip3] = data;
            func1( data );
        };
        jQuery.getJSON( url, func3 );
	*/

};

// Safari 文字化け対応
// http://kawa.at.webry.info/200511/article_9.html
AjaxZip2.getResponseText = function ( req ) {
    var text = req.responseText;
    if ( navigator.appVersion.indexOf('KHTML') > -1 ) {
        var esc = escape( text );
        if ( esc.indexOf('%u') < 0 && esc.indexOf('%') > -1 ) {
            text = decodeURIComponent( esc );
        }
    }
    return text;
}

