﻿/**
 * Created by IntelliJ IDEA.
 * User: Jerry.Chen
 * Date: 2010-6-9
 * Time: 15:48:31
 * To change this template use File | Settings | File Templates.
 * settings = { usePost : true,
 * before:function() {},
 * after: function() {},
 * default: null,
 * parameters : { parameter1 : 'value1', parameter2 : 'value2'}
 * }
 *
 *   if usePost is true, then the form will use POST to pass the parameters to the target, otherwise will use GET
 *   "before" function is called before the ajax request and "after" function is called after the ajax request.
 *   If defaultValue is not null then the specified option will be selected.
 *   You can specify additional parameters to be sent to the the server in settings.parameters.
 */
;(function($) {
	$.fn.chained_select = function(target, url, settings) {
		return this.each(function() {
			$(this).change(function() {
				settings = jQuery.extend({
					after : null,
					before : null,
					usePost : false,
					defaultValue : null,
					selected_index: null,
					parameters : {'_id' : $(this).attr('id'), '_name' : $(this).attr('name')}
				}, settings);

				settings.parameters._value = $(this).val();
				settings.selected_index = this.selectedIndex;

				if (settings.before != null) {
					settings.before(target);
				}
				var ajaxCallback = function(data, textStatus) {
					$(target).html("");//clear old options
					if (typeof(data) == "string") {
						data = eval(data);//get json array
					}
					for (var i = 0; i < data.length; i++)//iterate over all options
					{
						if (settings.selected_index == i) {
							for (var key in data[i][1])//get key => value
							{
								$(target).get(0).add(new Option(data[i][1][key], [key]), document.all ? i : null);
							}
						}
					}
					if (settings.defaultValue != null) {
						$(target).val(settings.defaultValue);//select default value
					} else {
						$("option:first", target).attr("selected", "selected");//select first option
					}

					if (settings.after != null) {
						settings.after(target);
					}

					$(target).change();//call next chain
				};

				if (typeof(url) != "string") {
					ajaxCallback(url, 200);
				} else {
					if (settings.usePost) {
						$.post(url, settings.parameters, ajaxCallback);
					} else {
						$.get(url, settings.parameters, ajaxCallback);
					}
				}
			});
		});
	};
})(jQuery);

/*
 * Simple State/Province Select plugin for jQuery
 *
 * Example:
 * $(function(){
 * 	$('#provinces_66').chain_to_selects('#city_66', {defaultProvinceValue:"广东省", defaultValue: "深圳市"});
 * });
 *
 */
;(function($) {
    /*
    Provices sample JSON
    var my_options = [["text", {"value":"text","value":"text","value":"text"}]];
    */
    /*
    var chained_json = [
    ["湖北省",{"1":"武汉市","2":"黄石市","3":"十堰市"}],
    ["广东省",{"广州市":"广州市","2":"深圳市","3":"珠海市"}],
    ["湖南省",{"1":"长沙市","2":"株洲市","3":"湘潭市"}]
    ];
    */
var chained_json = [
["请选择",{"请选择":"请选择"}],	["北京市",{"北京市区":"北京市区"}],	["天津市",{"天津市区":"天津市区"}],	["上海市",{"上海市区":"上海市区"}],	["重庆市",{"重庆市区":"重庆市区"}],	["河北省",{"石家庄市":"石家庄市","唐山市":"唐山市","秦皇岛市":"秦皇岛市","邯郸市":"邯郸市","邢台市":"邢台市","保定市":"保定市","张家口市":"张家口市","承德市":"承德市","沧州市":"沧州市","廊坊市":"廊坊市","衡水市":"衡水市"}],	["山西省",{"太原市":"太原市","大同市":"大同市","阳泉市":"阳泉市","长治市":"长治市","晋城市":"晋城市","朔州市":"朔州市","晋中市":"晋中市","运城市":"运城市","忻州市":"忻州市","临汾市":"临汾市","吕梁市":"吕梁市"}],	["台湾省",{"台北市":"台北市","高雄市":"高雄市","基隆市":"基隆市","台中市":"台中市","台南市":"台南市","新竹市":"新竹市","嘉义市":"嘉义市","台北县":"台北县","宜兰县":"宜兰县","桃园县":"桃园县","新竹县":"新竹县","苗栗县":"苗栗县","台中县":"台中县","彰化县":"彰化县","南投县":"南投县","云林县":"云林县","嘉义县":"嘉义县","台南县":"台南县","高雄县":"高雄县","屏东县":"屏东县","澎湖县":"澎湖县","台东县":"台东县","花莲县":"花莲县"}],	["辽宁省",{"沈阳市":"沈阳市","大连市":"大连市","鞍山市":"鞍山市","抚顺市":"抚顺市","本溪市":"本溪市","丹东市":"丹东市","锦州市":"锦州市","营口市":"营口市","阜新市":"阜新市","辽阳市":"辽阳市","盘锦市":"盘锦市","铁岭市":"铁岭市","朝阳市":"朝阳市","葫芦岛市":"葫芦岛市"}],	["吉林省",{"长春市":"长春市","吉林市":"吉林市","四平市":"四平市","辽源市":"辽源市","通化市":"通化市","白山市":"白山市","松原市":"松原市","白城市":"白城市","延边朝鲜族自治州":"延边朝鲜族自治州"}],	["黑龙江省",{"哈尔滨市":"哈尔滨市","齐齐哈尔市":"齐齐哈尔市","鹤岗市":"鹤岗市","双鸭山市":"双鸭山市","鸡西市":"鸡西市","大庆市":"大庆市","伊春市":"伊春市","牡丹江市":"牡丹江市","佳木斯市":"佳木斯市","七台河市":"七台河市","黑河市":"黑河市","绥化市":"绥化市","大兴安岭地区":"大兴安岭地区"}],	["江苏省",{"南京市":"南京市","无锡市":"无锡市","徐州市":"徐州市","常州市":"常州市","苏州市":"苏州市","南通市":"南通市","连云港市":"连云港市","淮安市":"淮安市","盐城市":"盐城市","扬州市":"扬州市","镇江市":"镇江市","泰州市":"泰州市","宿迁市":"宿迁市"}],	["浙江省",{"杭州市":"杭州市","宁波市":"宁波市","温州市":"温州市","嘉兴市":"嘉兴市","湖州市":"湖州市","绍兴市":"绍兴市","金华市":"金华市","衢州市":"衢州市","舟山市":"舟山市","台州市":"台州市","丽水市":"丽水市"}],	["安徽省",{"合肥市":"合肥市","芜湖市":"芜湖市","蚌埠市":"蚌埠市","淮南市":"淮南市","马鞍山市":"马鞍山市","淮北市":"淮北市","铜陵市":"铜陵市","安庆市":"安庆市","黄山市":"黄山市","滁州市":"滁州市","阜阳市":"阜阳市","宿州市":"宿州市","巢湖市":"巢湖市","六安市":"六安市","亳州市":"亳州市","池州市":"池州市","宣城市":"宣城市"}],	["福建省",{"福州市":"福州市","厦门市":"厦门市","莆田市":"莆田市","三明市":"三明市","泉州市":"泉州市","漳州市":"漳州市","南平市":"南平市","龙岩市":"龙岩市","宁德市":"宁德市"}],	["江西省",{"南昌市":"南昌市","景德镇市":"景德镇市","萍乡市":"萍乡市","九江市":"九江市","新余市":"新余市","鹰潭市":"鹰潭市","赣州市":"赣州市","吉安市":"吉安市","宜春市":"宜春市","抚州市":"抚州市","上饶市":"上饶市"}],	["山东省",{"济南市":"济南市","青岛市":"青岛市","淄博市":"淄博市","枣庄市":"枣庄市","东营市":"东营市","烟台市":"烟台市","潍坊市":"潍坊市","济宁市":"济宁市","泰安市":"泰安市","威海市":"威海市","日照市":"日照市","莱芜市":"莱芜市","临沂市":"临沂市","德州市":"德州市","聊城市":"聊城市","滨州市":"滨州市","菏泽市":"菏泽市"}],	["河南省",{"郑州市":"郑州市","开封市":"开封市","洛阳市":"洛阳市","平顶山市":"平顶山市","安阳市":"安阳市","鹤壁市":"鹤壁市","新乡市":"新乡市","焦作市":"焦作市","濮阳市":"濮阳市","许昌市":"许昌市","漯河市":"漯河市","三门峡市":"三门峡市","南阳市":"南阳市","商丘市":"商丘市","信阳市":"信阳市","周口市":"周口市","驻马店市":"驻马店市","济源市":"济源市"}],	["湖北省",{"武汉市":"武汉市","黄石市":"黄石市","十堰市":"十堰市","荆州市":"荆州市","宜昌市":"宜昌市","襄樊市":"襄樊市","鄂州市":"鄂州市","荆门市":"荆门市","孝感市":"孝感市","黄冈市":"黄冈市","咸宁市":"咸宁市","随州市":"随州市","仙桃市":"仙桃市","天门市":"天门市","潜江市":"潜江市","神农架林区":"神农架林区"}],	["湖南省",{"长沙市":"长沙市","株洲市":"株洲市","湘潭市":"湘潭市","衡阳市":"衡阳市","邵阳市":"邵阳市","岳阳市":"岳阳市","常德市":"常德市","张家界市":"张家界市","益阳市":"益阳市","郴州市":"郴州市","永州市":"永州市","怀化市":"怀化市","娄底市":"娄底市"}],	["广东省",{"广州市":"广州市","深圳市":"深圳市","珠海市":"珠海市","汕头市":"汕头市","韶关市":"韶关市","佛山市":"佛山市","江门市":"江门市","湛江市":"湛江市","茂名市":"茂名市","肇庆市":"肇庆市","惠州市":"惠州市","梅州市":"梅州市","汕尾市":"汕尾市","河源市":"河源市","阳江市":"阳江市","清远市":"清远市","东莞市":"东莞市","中山市":"中山市","潮州市":"潮州市","揭阳市":"揭阳市","云浮市":"云浮市"}],	["甘肃省",{"兰州市":"兰州市","金昌市":"金昌市","白银市":"白银市","天水市":"天水市","嘉峪关市":"嘉峪关市","武威市":"武威市","张掖市":"张掖市","平凉市":"平凉市","酒泉市":"酒泉市","庆阳市":"庆阳市","定西市":"定西市","陇南市":"陇南市","临夏回族自治州":"临夏回族自治州","甘南藏族自治州":"甘南藏族自治州"}],	["四川省",{"成都市":"成都市","自贡市":"自贡市","攀枝花市":"攀枝花市","泸州市":"泸州市","德阳市":"德阳市","绵阳市":"绵阳市","广元市":"广元市","遂宁市":"遂宁市","内江市":"内江市","乐山市":"乐山市","南充市":"南充市","眉山市":"眉山市","宜宾市":"宜宾市","广安市":"广安市","达州市":"达州市","雅安市":"雅安市","巴中市":"巴中市","资阳市":"资阳市","甘孜藏族自治州":"甘孜藏族自治州","凉山彝族自治州":"凉山彝族自治州"}],	["贵州省",{"贵阳市":"贵阳市","六盘水市":"六盘水市","遵义市":"遵义市","安顺市":"安顺市","铜仁地区":"铜仁地区","毕节地区":"毕节地区"}],	["海南省",{"海口市":"海口市","三亚市":"三亚市","五指山市":"五指山市","琼海市":"琼海市","儋州市":"儋州市","文昌市":"文昌市","万宁市":"万宁市","东方市":"东方市","澄迈县":"澄迈县","定安县":"定安县","屯昌县":"屯昌县","临高县":"临高县","白沙黎族自治县":"白沙黎族自治县","昌江黎族自治县":"昌江黎族自治县","乐东黎族自治县":"乐东黎族自治县","陵水黎族自治县":"陵水黎族自治县"}],	["云南省",{"昆明市":"昆明市","曲靖市":"曲靖市","玉溪市":"玉溪市","保山市":"保山市","昭通市":"昭通市","丽江市":"丽江市","思茅市":"思茅市","临沧市":"临沧市","楚雄彝族自治州":"楚雄彝族自治州","大理白族自治州":"大理白族自治州","怒江傈傈族自治州":"怒江傈傈族自治州","迪庆藏族自治州":"迪庆藏族自治州"}],	["青海省",{"西宁市":"西宁市","海东地区":"海东地区","海北藏族自治州":"海北藏族自治州","黄南藏族自治州":"黄南藏族自治州","海南藏族自治州":"海南藏族自治州","果洛藏族自治州":"果洛藏族自治州","玉树藏族自治州":"玉树藏族自治州"}],	["陕西省",{"西安市":"西安市","铜川市":"铜川市","宝鸡市":"宝鸡市","咸阳市":"咸阳市","渭南市":"渭南市","延安市":"延安市","汉中市":"汉中市","榆林市":"榆林市","安康市":"安康市","商洛市":"商洛市"}],	["广西",{"南宁市":"南宁市","柳州市":"柳州市","梧州市":"梧州市","北海市":"北海市","防城港市":"防城港市","钦州市":"钦州市","贵港市":"贵港市","玉林市":"玉林市","百色市":"百色市","贺州市":"贺州市","河池市":"河池市","来宾市":"来宾市","崇左市":"崇左市","桂林市":"桂林市"}],	["西藏",{"拉萨市":"拉萨市","那曲地区":"那曲地区","昌都地区":"昌都地区","山南地区":"山南地区","日喀则地区":"日喀则地区","阿里地区":"阿里地区","林芝地区":"林芝地区"}],	["宁夏",{"银川市":"银川市","石嘴山市":"石嘴山市","吴忠市":"吴忠市","固原市":"固原市","中卫市":"中卫市"}],	["新疆维吾尔",{"乌鲁木齐市":"乌鲁木齐市","克拉玛依市":"克拉玛依市","石河子市　":"石河子市　","阿拉尔市":"阿拉尔市","图木舒克市":"图木舒克市","五家渠市":"五家渠市","吐鲁番市":"吐鲁番市","阿克苏市":"阿克苏市","喀什市":"喀什市","哈密市":"哈密市","和田市":"和田市","阿图什市":"阿图什市","库尔勒市":"库尔勒市","昌吉市":"昌吉市","阜康市":"阜康市","米泉市":"米泉市","博乐市":"博乐市","伊宁市":"伊宁市","奎屯市":"奎屯市","塔城市":"塔城市","乌苏市":"乌苏市","阿勒泰市":"阿勒泰市"}],	["内蒙古",{"呼和浩特市":"呼和浩特市","包头市":"包头市","乌海市":"乌海市","赤峰市":"赤峰市","通辽市":"通辽市","鄂尔多斯市":"鄂尔多斯市","呼伦贝尔市":"呼伦贝尔市","巴彦淖尔市":"巴彦淖尔市","乌兰察布市":"乌兰察布市","锡林郭勒盟":"锡林郭勒盟","兴安盟":"兴安盟","阿拉善盟":"阿拉善盟"}],	["澳门",{"澳门特别行政区":"澳门特别行政区"}],	["香港",{"香港特别行政区":"香港特别行政区"}],	["其他",{"其他":"其他"}]];
    $.fn.extend({
        chain_to_selects: function(state_select_id, settings) {
            if (!chained_json) {
                return false;
            }
            settings = jQuery.extend({
                after: null,
                before: null,
                usePost: false,
                defaultProvinceValue: null,
                defaultValue: null,
                selected_index: 0,
                parameters: { '_id': $(this).attr('id'), '_name': $(this).attr('name') }
            }, settings);
            $(this).html("");
            for (var i = 0; i < chained_json.length; i++) {
                //$(this).get(0).add(new Option(chained_json[i][0], [i]), document.all ? i : null);			}
                $(this).get(0).add(new Option(chained_json[i][0], chained_json[i][0]), document.all ? i : null);
            }
            if (settings.defaultProvinceValue != null) {
                $(this).val(settings.defaultProvinceValue);
            } else {
                $("option:first", this).attr("selected", "selected");
            }
            $(state_select_id).html("");
            var city_num = -1;
            for (var j = 0; j < chained_json.length; j++) {
                for (var key in chained_json[j][1]) {
                    if (chained_json[j][1][key] == settings.defaultValue) {
                        city_num = j;
                        break;
                    }
                }
                if (city_num > -1) {
                    for (var key2 in chained_json[city_num][1]) {
                        $(state_select_id).get(0).add(new Option(chained_json[city_num][1][key2], [key2]), document.all ? city_num : null);
                    }
                    break;
                }
            }
            if (settings.defaultValue != null) {
                $(state_select_id).val(settings.defaultValue);
            } else {
                $("option:first", this).attr("selected", "selected");
            }
            $(this).chained_select(state_select_id, chained_json, settings);
        }
    });
})(jQuery);
