var currWin = null;
// tab菜单切换
var menus = $("menu").getElementsByTagName("li");
var forms = $("searchBox").getElementsByTagName("form");
var currForm = 0;
if (document.cookie.indexOf("last_mode") > -1) {
	currForm = parseInt(document.cookie.substr(document.cookie
			.indexOf("last_mode") + 10, 1));
}
showForm(currForm);
$("menu").onclick = function(e) {
	if (currWin && currWin.visible) {
		currWin.close();
	}
	e = e || window.event;
	var tag = e.srcElement || e.target;
	if (tag.tagName.toLowerCase() === "li") {
		for ( var i = menus.length; i--;) {
			if (menus[i] === tag) {
				showForm(i);
			} else {
				menus[i].className = "";
				forms[i].style.display = "none";
			}
		}
	}
}
function showForm(i) {
	menus[i].className = "curr-menu";
	forms[i].style.display = "block";
	// 将焦点设在第一个input[type='text']上
	var inputs = forms[i].getElementsByTagName("input");
	for ( var j = 0; j < inputs.length; j++) {
		// !inputs[j].getAttribute("ignore")只是针对form[2];
		if (inputs[j].type === "text" && !inputs[j].getAttribute("ignore")) {
			inputs[j].focus();
			break;
		}
	}
	currForm = i;
}
// 路线查询模式切换
var lineModes = $("lineMode").getElementsByTagName("a");
var lineOptions = $("lineOption").getElementsByTagName("input");
$("lineMode").onclick = function(e) {
	e = e || window.event;
	var tag = e.srcElement || e.target;
	if (tag.tagName.toLowerCase() === "a") {
		for(var i=0;i<lineModes.length;i++){
			lineModes[i].className = "";
		}
		tag.className = "curr-mode";
		var mode = tag.getAttribute("mode");
		if(mode == "busLine"){
			$("lineMap").style.visibility = "visible";
			$("lineOption").style.visibility = "visible";
			lineOptions[0].checked = true;
			$("lineTitle").innerHTML = "路线名称：";
		}else{
			$("lineMap").style.visibility = "hidden";
			$("lineOption").style.visibility = "hidden";
			lineOptions[2].checked = true;
			$("lineTitle").innerHTML = "车次名称：";
		}
	}
}
window.onload = function() {
	for ( var i = 0; i < forms.length; i++) {
		forms[i].onsubmit = function() {
			return checkInput(this);
		}
		var inputs = forms[i].getElementsByTagName("input");
		for ( var j = 0; j < inputs.length; j++) {
			var text = inputs[j];
			var msg = text.getAttribute("message");
			text.onfocus = function() {
				this.select()
			};
			// 如果有message属性，并且value是空串时，初始化value
			// if (text.type === "text" && msg && text.value.length == 0) {
			// text.value = msg;
			// }
		}
	}
	// 生成收藏列表
	if (favList) {
		getFavSite(null, favList);
	}
	// 事件绑定
	document.body.onclick = function() {
		if (currWin && currWin.visible) {
			currWin.close();
		}
	}
	$("chCity").onclick = function(event) {
		var newWin = getCityForm(function(cityName) {
			$("city").innerHTML = $("c1f1").value = $("c2f1").value = $("c1f2").value = $("map").innerHTML = $("m").value = cityName;
		});
		changeWin(newWin, event, this);
		return false;
	}
	$("chMap").onclick = function(event) {
		var newWin = getCityForm(function(cityName) {
			$("map").innerHTML = $("m").value = $("city").innerHTML = $("c1f1").value = $("c2f1").value = $("c1f2").value = cityName;
		});
		changeWin(newWin, event, this);
		return false;
	}
	$("chC1").onclick = function(event) {
		var newWin = getCityForm(function(cityName) {
			$("c1f2").value = $("map").innerHTML = $("m").value = $("city").innerHTML = $("c1f1").value = $("c2f1").value = cityName;
		});
		changeWin(newWin, event, this);
	}
	$("chC2").onclick = function(event) {
		var newWin = getCityForm(function(cityName) {
			$("c2f2").value = cityName;
		});
		changeWin(newWin, event, this);
	}
	$("c1f2").onkeyup = $("c2f2").onkeyup = function(event) {
		event = event || window.event;
		if (13 == event.keyCode) {
			return;
		}
		var val = this.value;
		if (jtrim(val).length <= 0 || val == this.defaultValue) {
			return;
		}
		this.defaultValue = val;
		var newWin = getMatchArea(this);
		changeWin(newWin, event, this);
	}
	if ($("fav1") && $("fav2") && $("fav3") && $("fav4")) {
		$("fav1").onclick = function(event) {
			var newWin = getFavSite(function(site) {
				$("s").value = site.split("-")[1];
			});
			changeWin(newWin, event, this);
			newWin.filter($("city").innerHTML);
		}
		$("fav2").onclick = function(event) {
			var newWin = getFavSite(function(site) {				
				$("d").value = site.split("-")[1];
			});
			changeWin(newWin, event, this);
			newWin.filter($("city").innerHTML);
		}
		$("fav3").onclick = function(event) {
			var newWin = getFavSite(function(site) {
				var tmp = site.split("-");
				$("c1f2").value = tmp[0];
				$("sf2").value = tmp[1];
			});
			changeWin(newWin, event, this);
		}
		$("fav4").onclick = function(event) {
			var newWin = getFavSite(function(site) {
				var tmp = site.split("-");
				$("c2f2").value = tmp[0];
				$("df2").value = tmp[1];
			});
			changeWin(newWin, event, this);
		}
	}
}
// 切换div
function changeWin(newWin, event, ref) {
	event = event || window.event;
	if (currWin && currWin.visible) {
		currWin.close();
	}
	currWin = newWin;
	currWin.show(ref);
	if (document.all) {
		event.cancelBubble = true;
	} else {
		event.stopPropagation();
	}
}
// 检查提交表单
function checkInput(form) {
	var inputs = form.getElementsByTagName("input");
	for ( var i = 0, l = inputs.length; i < l; i++) {
		var text = inputs[i];
		if (text.type === "text") {
			var msg = text.getAttribute("message");
			var val = jtrim(text.value);
			if (!text.getAttribute("ignore") && (val.length == 0 || msg == val)) {
				if (msg) {
					alert(msg);
				}
				text.focus();
				return false;
			} else {
				text.value = val == msg ? "" : val;
			}
		}
	}
	// 写cookie保存用户最后操作的查询模式
//	var expires = new Date();
//	expires.setTime(expires.getTime() + 30 * 24 * 3600 * 1000);
//	document.cookie = "last_mode=" + currForm + ";expires="
//			+ expires.toGMTString() + ";path=/";
	document.cookie = "last_mode=" + currForm + ";path=/";
	return true;
}

// 城市列表
var _cityForm = null;
var html = [];

function getCityForm(callback, title) {
	if (!_cityForm) {
		_cityForm = new CityForm();
	}
	_cityForm.callback = callback;
	$("title_CityForm").innerHTML = title ? title : "请选择城市";
	return _cityForm;
}
function CityForm() {
	this.init();
}
CityForm.prototype = {
	init : function() {
		this.element = document.createElement("div");
		this.element.style.cssText = "width:300px;border:1px solid #999;background:#fff;padding:5px 8px 0px 8px;display:none;";
		html = [];
		html
				.push('<div style="width:100%;overflow:hidden;margin-bottom:5px;">');
		html
				.push('<span id="title_CityForm" style="float:left;color:gray;"></span>');
		html
				.push('<img src="/images/common/exit-1.gif" style="float:right;" onmouseout="showim(this,\'/images/common/exit-1.gif\')" onmouseover="showim(this,\'/images/common/exit-2.gif\')" />');
		html.push('</div>');
		html.push(this.getHotCity());
		this.element.innerHTML = html.join('');
		document.body.appendChild(this.element);
		var _this = this;
		$("cityTable_CityForm").onclick = function(event) {
			event = event || window.event;
			_this.doClick(event);
		};
	},
	show : function(ref) {
		var xy = GetControlPos(ref);
		ShowDiv(this.element, xy.x - 50, xy.y + 20);
		this.visible = true;
	},
	close : function() {
		this.element.style.display = "none";
		this.visible = false;
	},
	doClick : function(e) {
		var tag = e.srcElement || e.target;
		if (tag.tagName.toLowerCase() === "a") {
			this.callback(tag.innerHTML, e);
		}
	},
	getHotCity : function() {
		var cityArr = [];
		var cityHtml = [];
		cityArr[0] = [ "热门", "北京", "广州", "上海", "深圳", "香港" ];
		cityArr[1] = [ "A-G", "北京", "长沙", "潮州", "成都", "重庆", "大连", "东莞", "佛山",
				"广州" ];
		cityArr[2] = [ "H-N", "杭州", "河源", "惠州", "济南", "江门", "揭阳", "茂名", "梅州",
				"南京" ];
		cityArr[3] = [ "O-T", "青岛", "清远", "汕头", "汕尾", "上海", "韶关", "深圳", "苏州",
				"天津" ];
		cityArr[4] = [ "U-Z", "武汉", "香港", "阳江", "云浮", "湛江", "肇庆", "郑州", "中山",
				"珠海" ];
		cityHtml.push('<dl id="cityTable_CityForm">');
		for ( var i = 0; i < cityArr.length; i++) {
			for ( var j = 0; j < cityArr[i].length; j++) {
				if (0 == j) {
					cityHtml.push('<dt>' + cityArr[i][j] + '</dt><dd>');
				} else {
					cityHtml
							.push('<a href="javascript:;">' + cityArr[i][j] + '</a>');
				}
				if (cityArr[i].length - 1 == j) {
					cityHtml.push('</dd>');
				}
			}
		}
		cityHtml.push('</dl>');
		return cityHtml.join('');
	}
}
// end城市列表

// 城市匹配
var _matchArea = null;

function getMatchArea(ref) {
	if (!_matchArea) {
		_matchArea = new MatchArea(ref);
	}
	var area = jtrim(ref.value);
	if (_matchArea.currArea != area) {
		_matchArea.send(area);
	}
	_matchArea.ref = ref;
	return _matchArea;
}
function MatchArea(ref) {
	this.ref = ref;
	this.currArea = "";
	this.currIndex = -1;
	this.init(jtrim(ref.value));
}
MatchArea.prototype = {
	init : function(area) {
		var _this = this;
		this.element = document.createElement("ul");
		this.element.id = "citylist_MatchArea";
		this.element.onmouseover = function(event) {
			_this.mouseMove(event);
		};
		this.element.onclick = function(event) {
			_this.doClick(event);
		};
		this.element.style.display = "none";
		document.body.appendChild(this.element);
		this.send(area);
	},
	send : function(area) {
		var _this = this;
		this.currArea = area;
		this.element.innerHTML = "";
		this.currIndex = -1;
		new HttpRequest("/traffic/matcharea_aj.jspx?words=" + EscapeURI(area),
				function(response) {
					_this.insertItem(response)
				});
	},
	insertItem : function(response) {
		var list = new OmniObject(response.responseText).list;
		this.cityList = list;
		if (list && list.length > 0) {
			html = [];
			html
					.push('<li class="first" style="line-height:10px;height:10px;background:url(\'/images/home/keyboard.gif\') right center no-repeat;}"></li>');
			for ( var i = 0; i < list.length; i++) {
				html.push('<li id="city' + i + '_MatchArea">' + list[i]
						+ '</li>');
			}
			this.element.innerHTML = html.join("");
		}
	},
	show : function(ref) {
		var xy = GetControlPos(ref);
		ShowDiv(this.element, xy.x - 2, xy.y + 23);
		this.visible = true;
		var _this = this;
		this.ref.onkeydown = function(event) {
			_this.keyMove(event)
		};
	},
	close : function() {
		this.element.style.display = "none";
		this.visible = false;
		this.ref.onkeydown = null;
	},
	doClick : function(event) {
		event = event || window.event;
		var tag = event.srcElement || event.target;
		if (tag.tagName.toLowerCase() === "li" && tag.className !== "first") {
			this.ref.value = tag.innerHTML;
		}
	},
	focus : function(tag) {
		tag.className = "focus";
		if (this.currIndex >= 0) {
			$("city" + this.currIndex + "_MatchArea").className = "";
		}
		this.currIndex = parseInt(tag.id.substr(4, tag.id.indexOf("_") - 4));
	},
	mouseMove : function(event) {
		event = event || window.event;
		var tag = event.srcElement || event.target;
		if ("li" === tag.tagName.toLowerCase() && "first" !== tag.className) {
			this.focus(tag);
		}
	},
	keyMove : function(event) {
		event = event || window.event;
		if (9 == event.keyCode) {// Tab
			this.close();
			return;
		}
		if (13 == event.keyCode) {// 回车
			if (this.currIndex >= 0) {
				this.ref.value = $("city" + this.currIndex + "_MatchArea").innerHTML;
			}
			if (document.all) {// ie
				window.event.returnValue = false;
				event.cancelBubble = true;
			} else {// w3c
				event.preventDefault();
				event.stopPropagation();
			}
			this.close();
			return false;
		}
		var i = this.currIndex;
		if (38 == event.keyCode) {// 键盘上
			i = i > 0 ? i - 1 : this.cityList.length - 1;
		} else if (40 == event.keyCode) {// 键盘下
			i = i < (this.cityList.length - 1) ? i + 1 : 0;
		}
		if (i != this.currIndex) {
			this.focus($("city" + i + "_MatchArea"));
		}
	}
}
// end城市匹配

// 收藏地点列表
var favSite = null;

function getFavSite(callback, list) {
	if (!favSite) {
		favSite = new FavSite(list);
	}
	favSite.callback = callback;
	return favSite;
}
function FavSite(list) {
	this.init(list);
}
FavSite.prototype = {
	init : function(list) {
		this.element = document.createElement("div");
		this.element.id = "siteList_FavSite";
		html = [];
		html[0] = '<span id="none_FavSite">您还没有收藏的地点。</span>';
		for ( var i = 0; i < list.length; i++) {
			html[i] = '<a href="javascript:;">' + list[i] + '</a>';
		}
		this.element.innerHTML = html.join('');
		document.body.appendChild(this.element);
		this.sites = this.element.getElementsByTagName("a");
		var _this = this;
		this.element.onclick = function(event) {
			_this.doclick(event)
		};
	},
	filter : function(limit) {
		var empty = true;
		for ( var i = 0; i < this.sites.length; i++) {
			var cityName = this.sites[i].innerHTML.substr(0,
					this.sites[i].innerHTML.indexOf("-")).replace("市", "");
			if (limit.indexOf(cityName) === -1) {
				this.sites[i].style.display = "none";
			} else {
				empty = false;
			}
		}
		if (empty && !$("none_FavSite")) {
			this.element.innerHTML += '<span id="msg_FavSite">您还没有收藏“' + limit + '”的地点</span>';
		}
	},
	show : function(ref) {
		var xy = GetControlPos(ref);
		ShowDiv(this.element, xy.x - 200, xy.y + 22);
		this.visible = true;
	},
	close : function() {
		this.element.style.display = "none";
		this.visible = false;
		if ($("msg_FavSite")) {
			this.element.removeChild($("msg_FavSite"));
		}
		for ( var i = 0; i < this.sites.length; i++) {
			this.sites[i].style.display = "block";
		}
	},
	doclick : function(event) {
		event = event || window.event;
		var tag = event.srcElement || event.target;
		if (tag.tagName.toLowerCase() === "a") {
			this.callback(tag.innerHTML);
		}
	}
}
// end收藏地点列表

