var QG = {};

QG.subText = function(text, length, substitute) {
	var ss = '';
	var trimed = $.trim(text);
	if ('' !== substitute) {
		ss = substitute ? substitute : "&#8230;";
	}
	var len = 2 * length;
	var count = 0, c;
	if (trimed) {
		for (var i = 0; i < trimed.length; i++) {
			c = trimed.charCodeAt(i);
			if (c >= 0x007e) {
				count++;
			}
			count++;
			if (count > len) {
				return trimed.substring(0, i) + ss;
			}
		}
		return trimed;
	}
};


QG.login = function() {
	var loginDiv = $("<div></div>").addClass("qgtop");
	var leftLogin = $("<div></div>").addClass("qgtopz").addClass("acol1");
	var rightLogin = $('<div class="qgtopr"><ul class="acol2"><li class="gxticon"><a href="http://www.qiaogu.com/o/show-my-office-certificates.action" target="_blank">顾信通</a></li><li class="qfb"><a target="_blank" href=" http://www.qiaogu.com/u/show-account-index.action">巧付宝</a></li><li class="myqg"><a target="_blank" href="http://www.qiaogu.com/u/my-qiaogu.action">我的巧顾</a></li><li class="help"><a target="_blank" href="http://www.qiaogu.com/help/index.html">帮助中心</a></li></ul><div class="clear"></div></div><div class="clear"></div>');
	var centralize = function() {
		var windowWidth = $(window).width();
		var elementWidth = loginDiv.width();
		var windowLeft = $(window).scrollLeft();
		
	    var elementLeft = windowLeft + (elementWidth > windowWidth ? 0 : (windowWidth - elementWidth)/2);
	    loginDiv.css({'left': elementLeft});

	};
	
	$.getJSON("/a/ajax-verify-session.action", function(data) {
		if (data.sessionObject && null != data.sessionObject && data.sessionObject.userName) {
			leftLogin.append(data.sessionObject.userName + ' 欢迎访问巧顾网！<a target="_parent" href="http://www.qiaogu.com/u/my-qiaogu.action">[个人中心]</a><a target="_parent" href="http://www.qiaogu.com/a/logout.action">[退出]</a>');
		}
		else {
			leftLogin.append('欢迎访问巧顾网！<a target="_blank" href="http://www.qiaogu.com/a/pre-user-name-login.action">[登录]</a><a target="_blank" href="http://www.qiaogu.com/a/pre-register.action">[注册]</a>');
		}
		loginDiv.append(leftLogin).append(rightLogin);
		loginDiv.hide();
		$("body").prepend(loginDiv);
		centralize();
		loginDiv.slideDown();

		$(window).resize(centralize);

	});
};


QG.searchEffect =	function(type) {
	var searchBtn = $("#searchBtn");
	var searchText = $("#searchText");
	var searchService = $("#searchService");
	var searchOffice = $("#searchOffice");
	var searchForm = $("#searchForm");
	var onClass = "col4";
	var offClass = "nosearch col3";
	if (1 != searchBtn.length || 1 != searchText.length || 1 != searchService.length || 1 != searchOffice.length || 1 != searchForm.length) {
		alert("search error. cannot initialize search");
		return;
	}
	
	searchBtn.click(function(event) {
		if (searchText.val() && '请输入搜索关键词' != searchText.val()) {
				searchForm.submit();
		}
		event.preventDefault();
	});
	
	searchService.click(function() {
		searchService.removeClass(offClass);
		searchService.addClass(onClass);
		searchOffice.removeClass(onClass);
		searchOffice.addClass(offClass);
		searchForm.attr("action", "http://www.qiaogu.com/a/search-services.action");
	});
	
	searchOffice.click(function() {
		searchOffice.removeClass(offClass);
		searchOffice.addClass(onClass);
		searchService.removeClass(onClass);
		searchService.addClass(offClass);
		searchForm.attr("action", "http://www.qiaogu.com/a/search-offices.action");
	});
	
	searchText.focus(function() {
		if ( this.value && '请输入搜索关键词' == this.value ) {
			this.value = '';
		}
		else {
			$(this).select();
		}
	});
	
	searchText.blur(function() {
		if (!(this.value && '请输入搜索关键词' != this.value)) {
			this.value = '请输入搜索关键词';
		}
	});
	
	searchText.keypress(function(event) {
		if (event.keyCode == 13) {
                searchBtn.click();
        }
	});
	
	if (type && 'office' == type) {
		searchOffice.click();
	}

};


QG.serviceSearch =	function(form) {
	var searchBtn = form.find("label");
	var searchText = form.find("input:text");
	form.attr("action", "http://www.qiaogu.com/a/search-services.action");
	if (1 != searchBtn.length || 1 != searchText.length || 1 != form.length) {
		alert("search error. cannot initialize search");
		return;
	}
	
	searchBtn.click(function(event) {
		if (searchText.val() && '请输入搜索关键词' != searchText.val()) {
				form.submit();
		}
		event.preventDefault();
	});
		
	searchText.focus(function() {
		if ( this.value && '请输入搜索关键词' == this.value ) {
			this.value = '';
		}
		else {
			$(this).select();
		}
	});
	
	searchText.blur(function() {
		if (!(this.value && '请输入搜索关键词' != this.value)) {
			this.value = '请输入搜索关键词';
		}
	});
	
	searchText.keypress(function(event) {
		if (event.keyCode == 13) {
                searchBtn.click();
        }
	});

};

QG.searchInOfficePage =	function(type) {
	var searchForm = $("#searchForm");
	var searchBtn = searchForm.find("#searchBtn");
	var searchText = searchForm.find("#searchText");
	var searchService = searchForm.find("#searchService");
	var searchOffice = searchForm.find("#searchOffice");
	var select = searchForm.find("div[title='请选择']");
	var selectArea = searchForm.find("ul");
	var timer;

	searchBtn.click(function(event) {
		if (searchText.val() && '请输入搜索关键词' != searchText.val()) {
				searchForm.submit();
		}
		event.preventDefault();
	});
	
	select.click(function() {
		timer = setTimeout(function() {selectArea.hide();}, 1000);
		selectArea.css("display", "inline");
	});
	
	searchService.mouseover(function() {
		clearTimeout(timer);		
	});
	searchService.mouseout(function() {
		timer = setTimeout(function() {selectArea.hide();}, 1000);
	});
	
	searchOffice.mouseover(function() {
		clearTimeout(timer);		
	});
	searchOffice.mouseout(function() {
		timer = setTimeout(function() {selectArea.hide();}, 1000);
	});

	searchService.click(function() {
		select.find("input").val("找服务");
		selectArea.hide();
		searchForm.attr("action", "http://www.qiaogu.com/a/search-services.action");
	});
	
	searchOffice.click(function() {
		select.find("input").val("找办公室");
		selectArea.hide();
		clearTimeout(timer);
		searchForm.attr("action", "http://www.qiaogu.com/a/search-offices.action");
	});
	
	searchText.focus(function() {
		if ( this.value && '请输入搜索关键词' == this.value ) {
			this.value = '';
		}
		else {
			$(this).select();
		}
	});
	
	searchText.blur(function() {
		if (!(this.value && '请输入搜索关键词' != this.value)) {
			this.value = '请输入搜索关键词';
		}
	});
	
	searchText.keypress(function(event) {
		if (event.keyCode == 13) {
                searchBtn.click();
        }
	});
	
	if (type && 'service' == type) {
		searchService.click();
	}

};



QG.fetchNewestServices = function(serviceCategoryIds, number, f) {
	var d = {};
	if (!serviceCategoryIds || !number) {
		alert("fetch newest services error!!!");
		return;
	}
	d["serviceCategoryIds"] = serviceCategoryIds;
	d["number"] = number;
	$.getJSON("/a/ajax-fetch-newest-services.action", d, function(data) {
		f(data.newestServices);
	});
};

QG.fetchNewestOffices = function(serviceCategoryIds, number, f) {
	var d = {};
	if (!serviceCategoryIds || !number) {
		alert("fetch newest offices error!!!");
		return;
	}
	d["serviceCategoryIds"] = serviceCategoryIds;
	d["number"] = number;
	$.getJSON("/a/ajax-fetch-newest-offices.action", d, function(data) {
		f(data.newestOffices);
	});
};

QG.genServLi = function(s, tNumber) {
	var li = $('<li></li>');
	var n = $('<a/>').
					attr({'href': 'http://' + s.url , 
							'title': s.name}).
					append(QG.subText(s.name, tNumber));
	var p = $('<span/>').text(s.price + "元/" + s.unit);
	return li.append(n).append(p);
};

QG.genServServLi = function(os, tNumber) {
	var li = $('<li></li>');
	var a = $('<a/>').
					attr({'href': 'http://' + os.url , 
							'title': os.name}).
					append(QG.subText(os.name, tNumber));
	var b = $('<b></b>');
	a.appendTo(b);
	var s = $('<span/>');
	var u = $('<u></u>');
	var i = $('<i/>').text(os.price);
	u.text("元/" + os.unit);
	u.prepend(i);
	s.append(u);
	return li.append(b).append(s);
};

QG.genServNoPriceLi = function(s, tNumber) {
	var li = $('<li></li>');
	var n = $('<a/>').
					attr({'href': 'http://' + s.url , 
							'title': s.name}).
					append(QG.subText(s.name, tNumber));
	return li.append(n);
};

QG.genOffLi = function(o, tNumber) {
	var li = $('<li></li>');
	var n = $('<a/>').
					attr({'href': 'http://' + o.url , 
							'title': o.name}).
					append(QG.subText(o.name, tNumber));
	return li.append(n);
};


QG.genLoadServParams = function(divId, categoryId, number, tNumber, rec, withPrice, f) {
	return {
		"divId": divId,
		"categoryId": categoryId,
		"number": number,
		"tNumber": tNumber,
		"rec": rec.clone(),
		"withPrice": withPrice ? withPrice : false,
		"func": f
	};
};

QG.genLoadOffParams = function(divId, categoryId, number, tNumber, rec) {
	return {
		"divId": divId,
		"categoryId": categoryId,
		"number": number,
		"tNumber": tNumber,
		"rec": rec.clone()
	};
};

QG.loadNewestServices = function(loadServParamses, index) {
	var loadServParams = loadServParamses[index];
	if (loadServParams) {
		QG.fetchNewestServices(loadServParams.categoryId, loadServParams.number, function(ss) {
			var rec = loadServParams.rec;
			if (ss && 0 != ss.length) {
				for (i = 0; i < ss.length; i ++) {
					// to be modified
					rec.append(QG.genServServLi(ss[i], loadServParams.tNumber));
				}
				$("#" + loadServParams.divId).append(rec);
				if (loadServParams.func) {
					loadServParams.func();
				}
			}
			QG.loadNewestServices(loadServParamses, index + 1);
		});
	}
};

QG.loadNewestOffices = function(loadOffParamses, index) {
	var loadOffParams = loadOffParamses[index];
	if (loadOffParams) {
		QG.fetchNewestOffices(loadOffParams.categoryId, loadOffParams.number, function(os) {
			var rec = loadOffParams.rec;
			if (os && 0 != os.length) {
				for (i = 0; i < os.length; i ++) {
					rec.append(QG.genOffLi(os[i], loadOffParams.tNumber));
				}
				$("#" + loadOffParams.divId).append(rec);
			}
			QG.loadNewestOffices(loadOffParamses, index + 1);
		});
	}
};


QG.loadAds = function() {
	var params = "";
	$('.AD').each(function(index, entry){
		params += "&names=" + entry.id;
	}); 
	if (params.length > 0) {
		var url = "/a/ajax-load-ads.action";
		url += "?p" + params; 
		$.get(url, null, function(data) {
			if (!data || !data['ads']) {
				return;
			}
			var ads = data['ads'];
			for (var name in ads) {
				if (null != ads[name]) {
					$('#' + name).html(ads[name]).ready(function() {
						if ($('#' + name + ' .focus')) {
							QG.slider($('#' + name + ' .focus'));	
						}
					});
					
				}
			}
		});
	}
};

QG.switchTabs = function(tabs, divs, className, onIndex, event) {
	var eventTrigger = event || 'mouseover';
	if (!tabs || !divs || tabs.length !== divs.length) {
		alert("输入参数错误！");
	}
	tabs.bind(eventTrigger, function() {
		var index = jQuery.inArray(this, tabs);
		tabs.removeClass(className);
		$(this).addClass(className);
		divs.hide();
		$(divs.get(index)).show();
	});
	
	if ((onIndex || 0 == onIndex) && onIndex < tabs.length) {
		tabs.removeClass(className);
		tabs.eq(onIndex).addClass(className);
		divs.hide();
		divs.eq(onIndex).show();			
	}
};

QG.slider = function(focus) {
	var lis = focus.find('ul li');
	var hasLis = 0 < lis.size();
	var images = focus.find("div[title='image']");
	var captions = focus.find("h2[title='caption']");
	var hasCaptions = 0 < captions.size();
	var curIndex, nextIndex, size, timer;
	var nextIdx = function(ci) {
		return (ci + 1) % size;
	};
	var slide = function(beginIndex, endIndex) {
		var ci = (typeof beginIndex === 'number') ? beginIndex : curIndex;
		var ni = (typeof endIndex === 'number') ? endIndex : nextIdx(ci);
		$(images.get(ci)).fadeOut('fast', function() {
			var ci = images.index(this);
			$(images.get(ni)).fadeIn('fast');
		});
		if (hasCaptions) {
			$(captions.get(ci)).hide();
			$(captions.get(ni)).show();
		}
		if (hasLis) {
			$(lis.get(ci)).removeClass('onpic');
			$(lis.get(ni)).addClass('onpic');
		}
		curIndex = ni;
	};
	size = images.size();
	curIndex = 0;
	timer = setInterval(function() {slide()}, 5000);
	
	if (hasLis) {
		lis.click(function() {
			var endIndex = lis.index(this);
			clearInterval(timer);
			if (!$(this).hasClass('onpic')) {
				lis.removeClass('onpic');
				$(this).addClass('onpic');
				slide(curIndex, endIndex);
			}
			curIndex = endIndex;
			timer = setInterval(function() {slide()}, 5000);
		});
	}
};

QG.validationCode = function(params) {
	var src = "http://www.qiaogu.com/a/show-validation-image.action";
	var image = params['image'];
	var a = params['a'];
	var input = params['input'];
	
	image.attr("src", src);
	
	var refresh = function(event) {
		event.preventDefault();
		var newSrc = src + "?ri=" + Math.random();
		image.attr("src", newSrc);
		input.val('');
		input.focus();
	};
	
	a.click(refresh);
	image.click(refresh);
};

QG.stringLength = function(s) {
	if (!s) {
		return 0;
	}
	return s.replace(/[^\x00-\xff]/g, 'aa').length;
};

QG.select = function(params) {
	var select = params.select;
	var list = params.list;
	var listKey = params.listKey;
	var listValue = params.listValue;
	var headKey = params.headKey;
	var headValue = params.headValue;
	if (!select || !list || !listKey || !listValue) {
		alert("select缺少参数");
		return;
	}
	select.empty();
	if (headKey !== undefined && headValue !== undefined) {
		select.append($("<option></option>").val(headKey).text(headValue));
	}
	for ( var i = 0; i < list.length; i++) {
		select.append($("<option></option>").val(list[i][listKey]).text(list[i][listValue]));
	}
};

QG.optionTransferSelect = function(params) {
	var unSelected = params.unSelected;
	var selected = params.selected;
	var add = params.add;
	var remove = params.remove;

	if (!unSelected || !selected || !add || !remove) {
		alert("optionTransferSelect缺少参数！");
		return;
	}
	
	add.unbind("click");
	remove.unbind("click");
	add.click(function() {
		var selects = unSelected.find("option:selected");
		var selectedOptions = [];
		selects.removeAttr("selected");
		selected.find("option").each(function(i){
			selectedOptions[i] = $(this).val();
		});
		selects.each(function() {
			if (-1 == $.inArray($(this).val(), selectedOptions)) {
				$(this).clone().appendTo(selected);
			}			
		});
	});
	remove.click(function() {
		selected.find("option:selected").remove();
	});

	return function(spec) {
		var list = spec.list;
		var listKey = spec.listKey;
		var listValue = spec.listValue;
		if (!list || !listKey || !listValue) {
			alert("optionTransferSelect数据，缺少参数！");
			return;
		}
		unSelected.empty();
		selected.empty();
		for ( var i = 0; i < list.length; i++) {
			unSelected.append($("<option></option>").val(list[i][listKey]).text(list[i][listValue]));
		}		
	};
};

QG.birthdaySelect = function(params) {
	var yearSelect = params.yearSelect;
	var monthSelect = params.monthSelect;
	var daySelect = params.daySelect;
	var minYear = params.minYear || 1940;
	var maxYear = params.maxYear || 2010;
	var head = params.head || "请选择";
	if (!yearSelect || !monthSelect || ! daySelect) {
		alert("birthdaySelect缺少参数");
		return;
	}
	
	var fillSelect = function(select, min, max) {
		select.append($("<option></option>").val(0).text(head));
		for ( var i = min; i <= max; i++) {
			select.append($("<option></option>").val(i).text(i));
		}
	};
	
	yearSelect.empty();
	monthSelect.empty();
	daySelect.empty();
	
	fillSelect(yearSelect, minYear, maxYear);
	
	yearSelect.change(function() {
		monthSelect.empty();
		daySelect.empty();
		if ($(this).val()) {
			fillSelect(monthSelect, 1, 12);
		}
	});
	
	monthSelect.change(function() {
		daySelect.empty();
		if ($(this).val()) {
			fillSelect(daySelect, 1, 32 - new Date(yearSelect.val() - 1, monthSelect.val() - 1, 32).getDate());
		}
	});
};


QG.dateSelect = function(params) {
	var currentDate = new Date();
	var yearSelect = params.yearSelect;
	var monthSelect = params.monthSelect;
	var minYear = params.minYear || 1940;
	var maxYear = params.maxYear || currentDate.getFullYear();
	var dYear = params.dYear;
	var dMonth = params.dMonth;
	var head = params.head || "请选择";
	if (!yearSelect || !monthSelect) {
		alert("dateSelect缺少参数");
		return;
	}
	
	var fillSelect = function(select, min, max, dValue) {
		select.append($("<option></option>").val(0).text(head));
		for ( var i = min; i <= max; i++) {
			if (dValue && i == dValue) {
				select.append($("<option selected='selected'></option>").val(i).text(i));
			} else {
				select.append($("<option></option>").val(i).text(i));
			}
		}
	}
	
	yearSelect.empty();
	monthSelect.empty();
	
	fillSelect(yearSelect, minYear, maxYear, dYear);
	
	yearSelect.change(function() {
		monthSelect.empty();
		var year = $(this).val();
		if ("0" != year) {
			if (year == currentDate.getFullYear()) {
				fillSelect(monthSelect, 1, currentDate.getMonth() + 1, dMonth);
			}
			else {
				fillSelect(monthSelect, 1, 12, dMonth);
			}
		}
	});

};

QG.doubleDateSelects = function(params) {
	var currentDate = new Date();
	var beginYearSelect = params.beginYearSelect;
	var beginMonthSelect = params.beginMonthSelect;
	var endYearSelect = params.endYearSelect;
	var endMonthSelect = params.endMonthSelect;
	var minYear = params.minYear || 1940;
	var maxYear = params.maxYear || currentDate.getFullYear();
	var head = params.head || "请选择";
	if (!beginYearSelect || !beginMonthSelect || !endYearSelect || !endMonthSelect) {
		alert("doubleDateSelect缺少参数");
		return;
	}
	
	var fillSelect = function(select, min, max, defaultValue, headValue) {
		var hv = headValue || head;
		select.append($("<option></option>").val(0).text(hv));
		for ( var i = min; i <= max; i++) {
			select.append($("<option></option>").val(i).text(i));
			if (defaultValue && i == defaultValue) {
				select.find("option:last").attr("selected", "selected");
			}
		}
	}
	
	beginYearSelect.empty();
	beginMonthSelect.empty();
	endYearSelect.empty();
	endMonthSelect.empty();
	
	fillSelect(beginYearSelect, minYear, maxYear);
	
	beginYearSelect.change(function() {
		var beginMonth = beginMonthSelect.val();
		var endYear = endYearSelect.val();
		var endMonth = endMonthSelect.val();
		var beginYear = $(this).val();
		var beginMaxMonth = 12;
		var endMaxMonth = 12;
		var endMinMonth = 1;
		if (beginYear == currentDate.getFullYear()) {
			beginMaxMonth = currentDate.getMonth() + 1;
		}
		if (endYear && "0" != endYear && beginYear >= endYear) {
			endYear = beginYear;
			if (beginMonth > endMonth) {
				endMonth = beginMonth;
				endMinMonth = endMonth;
			}
		}
		if (endYear == currentDate.getFullYear()) {
			endMaxMonth = currentDate.getMonth() + 1;
		}
		beginMonthSelect.empty();
		endYearSelect.empty();
		endMonthSelect.empty();
		if ("0" != beginYear) {
			fillSelect(beginMonthSelect, 1, beginMaxMonth, beginMonth);
			fillSelect(endYearSelect, beginYear, maxYear, endYear, "至今");
			if (endYear && "0" != endYear) {
				fillSelect(endMonthSelect, endMinMonth, endMaxMonth, endMonth);
			}				
		}
	});
	
	beginMonthSelect.change(function() {
		var beginYear = beginYearSelect.val();
		var beginMonth = $(this).val();
		var endYear = endYearSelect.val();
		var endMonth = endMonthSelect.val();
		var endMaxMonth = 12;
		if (endYear == currentDate.getFullYear()) {
			endMaxMonth = currentDate.getMonth() + 1;
		}
		if (beginYear == endYear) {
			endMonthSelect.empty();
			fillSelect(endMonthSelect, beginMonth, endMaxMonth, endMonth);
		}
	});

	endYearSelect.change(function() {
		var beginYear = beginYearSelect.val();
		var beginMonth = beginMonthSelect.val();
		var endYear = $(this).val();
		var endMonth = endMonthSelect.val();
		var endMinMonth = 1;
		var endMaxMonth = 12;
		if (endYear == currentDate.getFullYear()) {
			endMaxMonth = currentDate.getMonth() + 1;
		}
		if (beginYear == endYear) {
			endMinMonth = beginMonth;
		}
		endMonthSelect.empty();
		if ("0" != endYear) {
			fillSelect(endMonthSelect, endMinMonth, endMaxMonth, endMonth);
		}
	});
};

QG.selectSkin = function(skinBase, f) {
	var originalBase = skinBase;

	$("#skins").find("a[name='type']").click(function() {
		var lookAndFeelType = $(this).attr("href");
		$("#skins").find("li").removeClass("onskin");
		$(this).parentsUntil("ul").filter("li").addClass("onskin");
		QG_AJAX.selectLookAndFeel({
			originalBase: originalBase,
			complete: function(data) {
				if (f) {
					f(data.skinBase);
				}
			}
		}).select(lookAndFeelType);
		return false;
	});
};


QG.beginnerGuides = function() {
	$("a[name='showGuide'], a[name='openGuide']").click(function() {
		$(this).next("div.prompt").css("display", "inline");
		return false;
	});
	
	$("a[name='closeGuide']").click(function() {
		$(this).parents("div.prompt").first().hide();
		return false;
	});
	
	$("a[name='clearGuide']").click(function() {
		$(this).parents("div.prompt").first().hide();
		$.get("/o/ajax-delete-beginner-guide.action", {'guide' : $(this).attr("href")});
		return false;
	});
	
	$("a[name='showGuide']").click();
};


QG.wordCounter = function(textarea) {
	textarea.keyup(function() {
		$(this).nextAll("b").find("u").text(Math.round(QG.stringLength($(this).val()) / 2));
	});
	textarea.keyup();
};


QG.keWordCounter = function(id) {
	var textarea = $("#" + id);
//	//可视化模式下输入文字时
	KE.event.input(KE.g[id].iframeDoc, function(){
		textarea.parent().next().find("b u").text(QG.stringLength(KE.util.getData(id)));
	});

//	//代码模式下输入文字时
	KE.event.input(KE.g[id].newTextarea, function(){
		textarea.parent().next().find("b u").text(QG.stringLength(KE.util.getData(id)));
	});

	textarea.parent().next().find("b u").text(QG.stringLength(KE.util.getData(id)));
};




QG.prelogin = function(callbacks){
	var mask = $("<div></div>").
	attr("id","mask").
	css("position","absolute").
	css("z-index","100").
	css("top", "0pt").
	css("left", "0pt").
	css("opacity", "0.5").
	css("background-color", "rgb(255, 255, 255)").
	width($(document).width()).
	height($(document).height());	
	$("body").append(mask);
	
	var div=$("<div style='z-index:101;background-color:#FFFFFF;margin:10px auto 0;position:absolute;'></div>");
	div.hide();
	$('body').append(div);
	
	div.load('/a/pre-ajax-login.action',function(){
		
		$("a[name='close']").click(function(event) {
			div.remove();
			mask.remove();
			return false;
		});
		
		
		 
		QG_AJAX.util.center(div);
		div.show();
		
		
		var successCB =  typeof( callbacks['successCB'] ) == 'function' ?callbacks['successCB']:  function() {};
		var wrongCB = typeof( callbacks['wrongCB'] ) == 'function' ?callbacks['wrongCB']:  function() {};
		var vcWrongCB = typeof( callbacks['vcWrongCB'] ) == 'function' ?callbacks['vcWrongCB']:  function() {};
		
	
		QG.validationCode({image:$("#validationImage"),
			a:$("#refresh"),
			input:$("input[name='validationCode']")});
		
		
		
		var qgForm = new qiaogu.form.Form(div.find("#ajaxLoginForm")[0], $.extend({}, qiaogu.form.Form.defaultOptions));
		qiaogu.form.Form.formsOnPage.push(qgForm);
		qiaogu.form.Form.forms['ajaxLoginForm'] = qgForm;
		qgForm.init();
		
		qiaogu.form.Form.custom({
			'*': {
				'[name=userName]': {
					errorMsg: '账号名称不能为空'
				},
				'[name=password]': {
					errorMsg: '密码不能为空'
				},
				'[name=validationCode]': {
					errorMsg: '验证码不能为空'
				}
			}
		});

	$('#popup_login').live('click', function() {
		if (!qiaogu.form.Form.forms['ajaxLoginForm'].validate()) {
			return;
		}

		$('iframe').remove();
		$('#hideForm').remove();
		var form = $('#ajaxLoginForm')[0];
		ajaxLoginSubmit(form.action, $(form).serializeArray());
		 
	});

	var iframe;
	var ajaxLoginSubmit = function(action, data) {
		iframe = $('<iframe name="hideIframe" id="hideIframe"/>').hide();
		iframe.load(function() {
			var s = location.hash;
			if (s == '#0') {
				location.hash = 'Middle';
				successCB();
				return ;
			} else if (s == '#1') {
				vcWrongCB();
			} else if (s == '#2') {
				wrongCB();
			}
			location.hash = 'FPMap';

		});
		$('body').append(iframe);	
		var form = $('<form method="post" id="hideForm" enctype="multipart/form-data" target="hideIframe" action="https://www.qiaogu.com/s/ajax-login.action"></form>').hide();
		$('body').append(form);	

		$(data).each(function() {
				var v = this.value;
				if (this.name == 'redirectUrl') {
					v = location.href;
					v = v.replace(/#.*$/g, '');
				}
				var el = $('<input type="text" name="' + this.name + '" value="' + v + '"></input>');
				form.append(el);
		});		
		form[0].submit();
	};

		
	});
	
	
}





