function articleSearch(){}
articleSearch.prototype = {
	TAB : String.fromCharCode(9),
	LF : String.fromCharCode(10),
	presets : {},
	fm : new Object(),
	ua : $.browser,
	path : location.protocol+'//'+location.host,
	gnav : 'gnavi.html',
	searchPath : 'http://www.kashijimusyo.net',
	init: function(){
		if (location.protocol == 'https:'){
			AS.path += '/kashijimusyo.net';
			AS.gnav = 'gnavi_ssl.html';
		}
	},
	getData : function(url, success, error, data){
		var method = (data)? 'POST' : 'GET';
		$.ajax({
			type: method,
			url: AS.path+url,
			data: data,
			dataType: 'json',
			cache: false,
			success: function(json){
				var stat = json.shift();
				if (stat.code != 0){
					alert(stat.errMsg);
					return false;
				}
	  			success(json);
			},
			error: function(){
				alert('サーバとの通信が出来ませんでした。');
				if (error != undefined) error();
			}
		});
	},
	getInfo: function(d){
		AS.getData('/getInfo.php', function(json){
			if (json[0].update != undefined) $('span#article_lastUpdate').html(json[0].update);
			if (json[0].allCnt != undefined) $('span#article_num').html(json[0].allCnt+'件');
			if (json[0].updCnt != undefined) $('span#article_recent').html(json[0].updCnt+'件');
			if (json[0].favCnt != undefined) $('a#article_bookmark_count').html(json[0].favCnt+'件');
		}, null, d);
	},
	preset: function(k, v){
		if(k=='w') v=decodeURIComponent(v);
		this.presets[k] = v;
	},
	setPresets: function(){
		var AS = this;
		for(i in AS.presets){
			$("[name='"+i+"']", AS.fm).each(function(){
				AS.setVals($(this), AS.presets[i]);
			});
		}
		return false;
	},
	setVals: function(obj, val){
		if (val == undefined) return false;
		switch(obj.attr('type')){
			case 'radio':
			case 'checkbox':
				if (obj.attr('type') == 'radio'){
					var chk = 0;
					obj.each(function(){
						if (this.value == val) {
							chk++;
							return false;
						}
					});
					if (chk == 0) val = '';
				}
				var val = val.split(',');
			break;
			case 'hidden':
				return false;
			break;
		}
		obj.val(val);
	},
	getSel: function(jObj, m, k){
		if (jObj.val() == undefined) return false;
		var AS = this;
		if (k == undefined) k="";
		AS.getData('/kj.php?action=getMaster&master='+m+'&key='+k, function(json){
			jObj.each(function(){
				this.options.length = 1;
				var n = this.name;
				for(i in json){
					this.options[this.options.length] = new Option(json[i].name, json[i].id);
				}
				if (AS.presets[n] && !$(this).hasClass('line_side')){
					$(this).val(AS.presets[n]);
					$(this).change();
				}
			});
		});
	},
	send: function(p){
		var str = new Array();
		var str1 = new Array();
		var str2 = new Array();
		var str3 = new Array();
		str = AS.makeStrFromAry(p, 'aid[]', str);
		str1 = AS.makeStrFromAry(p, 'aid[]', str1);
		if (p['lid'] != undefined) {
			str.push('lid='+p['lid']);
			str1.push('lid='+p['lid']);
		}
		if (p['type'] == 'routemap'){
			str = AS.makeStrFromAry(p, 'sid[]', str);
			str1 = AS.makeStrFromAry(p, 'sid[]', str1);
		}else if (p['type'] == 'line'){
			if (p['ssid'] != undefined) {
				str.push('ssid='+p['ssid']);
				str1.push('ssid='+p['ssid']);
			}
			if (p['esid'] != undefined) {
				str.push('esid='+p['esid']);
				str1.push('esid='+p['esid']);
			}
		}else{
			if (p['sid'] != undefined) {
				str.push('sid='+p['sid']);
				str1.push('sid='+p['sid']);
			}
		}
		if (p['at'] == undefined) p['at'] = 't';
		str = AS.makeStrFromRange(p, 'a', str);
		str2 = AS.makeStrFromRange(p, 'a', str2);
		if (str === false) return false;
		if (p['pt'] == undefined) p['pt'] = 'u';
		str = AS.makeStrFromRange(p, 'p', str);
		str2 = AS.makeStrFromRange(p, 'p', str2);
		if (str === false) return false;
		if (p['cy'] != undefined && p['cy']) {
			str.push('cy='+p['cy']);
			str2.push('cy='+p['cy']);
		}
		if (p['ey'] != undefined && p['ey']) {
			str.push('ey='+p['ey']);
			str2.push('ey='+p['ey']);
		}
		if (p['wt'] != undefined) {
			str.push('wt='+p['wt']);
			str2.push('wt='+p['wt']);
		}
		str = AS.makeStrFromAry(p, 'fact[]', str);
		str2 = AS.makeStrFromAry(p, 'fact[]', str2);
		str = AS.makeStrFromAry(p, 'feat[]', str);
		str3 = AS.makeStrFromAry(p, 'feat[]', str3);
		str = AS.makeStrFromAry(p, 'mv[]', str);
		str3 = AS.makeStrFromAry(p, 'mv[]', str3);
		str = AS.makeStrFromAry(p, 'seismic[]', str);
		str3 = AS.makeStrFromAry(p, 'seismic[]', str3);
		if (p['w'] != undefined && p['w']!='キーワードを入力してください。') {
			var w = p['w'];
			str.push('w='+w);
			str3.push('w='+w);
		}
		str = str.join('&');
		if (str.length>250) {
			str1 = str1.join('&');
			str2 = str2.join('&');
			str3 = str3.join('&');
			var strArray = new Array();
			if (str1 != '') strArray.push(str1);
			if (str2 != '') strArray.push(str2);
			if (str3 != '') strArray.push(str3);
			str = strArray.join('/');
		}
		if (str == '') str = '-';
		/*
		if (str == ''){
			alert('検索項目を選択してください。');
			return false;
		}
		*/
		var url = AS.searchPath+'/search';
		var type = (p.type) ? p.type : 'area';
		var view = (p.view) ? p.view : 'list';
		if (type != 'area'){
			url += '/'+type;
		}
		url += '/'+view+'/'+str+'/1';
		location.href = url;
	},
	makeStrFromAry: function(p, n, str){
		var regex = /^--+/;   
		if (p[n] != undefined){
			for(var i=0;i<p[n].length;i++){
				var val=p[n][i];
				if(val.match(regex)) return false;
				str.push(n+'='+p[n][i]);
			}
		}
		return str;
	},
	makeStrFromRange: function(p, n, str){
		if (parseInt(p[n+'max_'+p[n+'t']], 10) < parseInt(p[n+'min_'+p[n+'t']], 10)){
			alert('最小値を最大値より大きくすることは出来ません。');
			return false;
		}
		if ((p[n+'min_'+p[n+'t']] != undefined && p[n+'min_'+p[n+'t']] != '')
			|| (p[n+'max_'+p[n+'t']] != undefined && p[n+'max_'+p[n+'t']] != '')){
			if (p[n+'min_'+p[n+'t']] != undefined && p[n+'min_'+p[n+'t']] != ''){
				str.push(n+'min='+p[n+'min_'+p[n+'t']]);
			}
			if (p[n+'max_'+p[n+'t']] != undefined && p[n+'max_'+p[n+'t']] != ''){
				str.push(n+'max='+p[n+'max_'+p[n+'t']]);
			}
			if (p[n+'t'] != undefined) str.push(n+'t='+p[n+'t']);
			if (p[n+'f_'+p[n+'t']] != undefined) str.push(n+'f='+p[n+'f_'+p[n+'t']]);
		}
		return str;
	},
	getVal: function(fm){
		var p = new Object();
		$('select', fm).each(function(){
			p = AS.pickVal(p, this);
		});
		$('input', fm).each(function(){
			p = AS.pickVal(p, this);
		});
		return p;
	},
	pickVal: function(p, o){
		switch($(o).attr('type')){
			case 'radio':
			case 'checkbox':
				if (!o.checked) return p;
			break;
		}
		var name = o.name;
		var val = $(o).val();
		if (name == 'aid[]' && val.match(/^d\d+/)){
			name = 'did[]';
			val = val.replace(/^d/, '');
		}
		if (!val) return p;
		if (name.lastIndexOf('[]') != -1){
			if (p[name] == undefined) p[name] = new Array();
			p[name].push(val);
		}else{
			p[name] = val;
		}
		return p;
	},
	addBookmark: function(ids, callback){
		AS.getData('/bookmark/bookmark.php', function(json){
			if (json[0].favCnt != undefined){	
				var bfavCnt=$('a#article_bookmark_count').html();
				$('a#article_bookmark_count').html(json[0].favCnt+'件');
				var afavCnt=$('a#article_bookmark_count').html();
				if (json[0].flg == 0) alert('お気に入りに追加しました');
				if (json[0].flg == 1) alert('お気に入りに登録されています');
			}
			if (callback != undefined) callback();
		}, undefined, {
			mode: 'add',
			'id[]': ids
		});
	}
}
var AS = new articleSearch();
AS.init();
$(document).ready(function(){
	// 現在のURL取得
	var url = location.href;
	// 「http://www」ではじまっていなければ、プロトコル部分にwwwに書き加え
	if ( !url.match(/^[^:]+:\/\/www/) && location.protocol != 'https:' && !url.match(/mother\.co\.jp/) ) {
		url = url.replace( /^[^:]+:\/\//, location.protocol+'//www.' );
		location.href = url;
		return false;
	}
	$('div#gnavi').load(AS.path+'/'+AS.gnav, function(){
		if (typeof window['menuID'] != 'undefined') {
			//var num = menuID.substr(-2, 2);
			var num = menuID.replace(/^[a-zA-Z]*([\d]+)$/, "$1");
			$('div#gnavi li#'+menuID+' a:first').html('<img src="/img/cmn_navi'+num+'_on.gif" height="45">');
		}
	});
	AS.getInfo();
	AS.fm = $('form.preset');
	AS.getSel($("select[name='lid']"), 'lid');
	$($("select[name='lid']")).change(function(){
		var g = '';
		var c = $(this).attr('class').split(' ');
		for(var i=0;i<c.length;i++){
			if (c[i].indexOf('line_') == 0){
				g = c[i];
				break;
			}
		}
		if (g == '') return false;
		AS.getSel($("select[name$='sid']."+g+", select[name$='ssid']."+g+", select[name$='esid']."+g), 'sid', $(this).val());
	});
	$("form.articleSearch").submit(function(){
		var p = AS.getVal(this);
		p.type = $("input[name='type']", this).val();
		p.view = $("input[name='view']", this).val();
		AS.send(p);
		return false;
	});
	$("a.article_bookmark").click(function(){
		bkWin = window.open(AS.searchPath+'/bookmark/index.html','popup','scrollbars=yes,resizable=yes,width=970,height=600');
		bkWin.focus();
		this.blur();
		return false;
	});
	$("a.add_bookmark").click(function(){
		var ids = this.href.replace(/^.*#/, '');
		AS.addBookmark([ids]);
		this.blur();
		return false;
	});
	$('form.search_form').submit(function(){
		var aid = $("select[name='aid']", this).val();
		var type = $("input[name='type']", this).val();
		
		var regex = /^--+/;
		if(!aid.match(regex)){
			if(type=='market'){
				location.href='/search/market.html#'+aid+',0';
			}else{
				location.href='/search/'+type+'/'+aid;
			}
		}
		return false;
	});
});

