﻿function addFavorite() {
   try {
       window.external.addFavorite(location.href, document.title);
   }
   catch (e) {
       try {
           window.sidebar.addPanel(location.href, document.title, "");
       }
       catch (e) {
           alert("加入收藏失败，请使用Ctrl+D进行添加");
       }
   }
}

String.format = function() {
    if( arguments.length == 0 ) {
        return null;
	}
    var str = arguments[0]; 
    for(var i=1;i<arguments.length;i++) {
        var re = new RegExp('\\{' + (i-1) + '\\}','gm');
        str = str.replace(re, arguments[i]);
    }
    return str;
}

/*
 对Date的扩展，将 Date 转化为指定格式的String 
 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符 
 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
 eg: 
 (new Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
 (new Date()).format("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04 
 (new Date()).format("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04 
 (new Date()).format("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04 
 (new Date()).format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 
 */ 
Date.prototype.format = function(fmt) {  
    var o = {  
		"M+" : this.getMonth()+1, //月份  
		"d+" : this.getDate(), //日  
		"h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时  
		"H+" : this.getHours(), //小时  
		"m+" : this.getMinutes(), //分  
		"s+" : this.getSeconds(), //秒  
		"q+" : Math.floor((this.getMonth()+3)/3), //季度  
		"S" : this.getMilliseconds() //毫秒  
    };  
    var week = {  
		"0" : "\u65e5",
		"1" : "\u4e00",
		"2" : "\u4e8c",
		"3" : "\u4e09",
		"4" : "\u56db",
		"5" : "\u4e94",
		"6" : "\u516d"
    };
    if(/(y+)/.test(fmt)){  
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));  
    }  
    if(/(E+)/.test(fmt)){  
        fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]);  
    }  
    for(var k in o){  
        if(new RegExp("("+ k +")").test(fmt)){  
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));  
        }  
    }  
    return fmt;  
}

function Helper() {}
Helper.dateByJson = function(jsonDate) {
	var m = jsonDate.split(/\D/).join("");
	var d = new Date();
	d.setTime(m);
	return d;
}

Helper.dateByDays = function(dateText, days) {
	days = parseInt(days);
	days = isNaN(days) ? 0 : --days;
	var v = dateText.split(" ")[0].replace(/-/g, "/");
	var d = new Date(Date.parse(v));
	d.setDate(d.getDate() + days);
	return d;
}

Helper.verify = function(str, type) {
	type = isNaN(type) ? 0 : type;
	var rule = null;
	switch (type) {
		case 0:		// 4～20位长度，由英文字母(不区分大小写)或数字组成
			rule = /^[\da-z]{4,20}$/i;
			break;
		case 1:		// 2～20位长度，除开 <，> 以外的任意字符(不区分大小写)
			rule = /^[^<>]{2,20}$/i;
			break;
		case 2:		// 6～20位长度，除开 <，>，任意空白 以外的任意字符(区分大小写)
			rule = /^[^<>\s]{6,20}$/;
			break;
		case 3:		// 1～200位长度，除开 <，> 以外的任意字符(不区分大小写)
			rule = /^[^<>]{1,200}$/i;
			break;
	}
	return (str.length > 0 && rule != null) ? rule.test(str) : false;
}

Helper.allowName = function(name, type) {
	type = isNaN(type) ? 0 : type;
    var reg = type == 0 ? /^[\da-z][\da-z_]{3,19}$/i : /^[^<>]{2,20}$/i;
    return reg.test(name);
}

Helper.allowPassword = function(password) {
    var reg = /^[^<>\s]{6,20}$/;
    return reg.test(password);
}

Helper.getLoginMember = function(role) {
	role = isNaN(role) ? 2 : role;
	var memberId = "";
	$.ajax({url:"/Member/GetLoginMember", type:"POST", data:"role="+role, cache:false, async:false, success:function(d) {
		memberId = d;
	}});
	return memberId;
}

Helper.initZone = function(localEl, zoneEl, localText, zoneText, area) {
	var l = $("#"+localEl);
	l.empty();
	area = isNaN(area) ? 0 : area;
	if (localText != undefined && localText.length > 0) {l.addOption(localText, "%");}
	$.each(Helper.getZone(area), function(i,n){l.addOption(n);});
	Helper.setZone(zoneEl, l.getSelectedText(), zoneText, area);
}

// 通过区域及所在地获得地带名称
// area：0:所有区域，-9:出境区域，9:国内区域，-7:非洲，-6:南美洲，-5:北美洲，-4:大洋洲，-3:欧洲，-2:亚洲，-1:港澳台，1:华中，2:华东，3:华南，4:华北，5:西南，6:西北，7:东北
// local：所在地名称，Empty:所有所在地
Helper.getZone = function(area, local) {
	local = local == undefined ? "" : local;
	var items = {};
	$.ajax({url:"/Helper/GetZone", dataType:"json", data:String.format("area={0}&local={1}", area, encodeURIComponent(local)), async:false, success:function(d) {
		items = d;
	}});
	return items;
}

Helper.setZone = function(zoneEl, localText, zoneText) {
	var z = $("#"+zoneEl);
	z.empty();
	if (zoneText != undefined && zoneText.length > 0) {z.addOption(zoneText, "%");}
	$.each(Helper.getZone(0, localText), function(i,n) {z.addOption(n);});
}

// 通过主题类型获得指定会员主题列表
// type：1:线路，2:签证，3:门票，4:航空票务，5:酒店，6:景区，7:车辆，9:新闻，13:门票分类
// memberId：会员ID，Empty:系统
Helper.getTheme = function(memberId, type) {
	memberId = memberId == undefined ? "" : memberId;
	type = isNaN(type) ? 1 : type;
	var items = {};
	$.ajax({url:"/Helper/GetTheme", dataType:"json", data:String.format("type={0}&memberId={1}", type, memberId), async:false, success:function(d) {
		items = d;
	}});
	return items;
}

// 通过类型设置主题
// type：0:所有主题，1:线路，2:签证，3:门票，4:航空票务，5:酒店，6:景区，7:车辆，9:新闻，13:门票分类
Helper.setTheme = function(themeEl, themeText, memberId, type) {
	var t = $("#"+themeEl);
	t.empty();
	if (themeText != undefined && themeText.length > 0) {t.addOption(themeText, "%");}
	$.each(Helper.getTheme(memberId, type), function(i,n) {t.addOption(n.Name, n.ID);});
}

Helper.setFlash = function(memberId, width, height, el) {
	var pic_width=width; //图片宽度
	var pic_height=height; //图片高度
	var button_pos=4; //按扭位置 1左 2右 3上 4下
	var stop_time=6000; //图片停留时间(1000为1秒钟)
	var show_text=0; //是否显示文字标签 1显示 0不显示
	var txtcolor="000000"; //文字色
	var bgcolor="DDDDDD"; //背景色
	var imag=new Array();
	var link=new Array();
	var text=new Array();

	$.ajax({url:"/WebSite/GetPhoto", dataType:"json", data:"type=0&show=false&mid="+memberId, async:false, success:function(d){
		for (var i=1,k=0; k<d.length; ++i,++k) {
			imag[i] = "/up/photo/"+d[k].Name;
			link[i] = d[k].Url;
			text[i] = d[k].Title;
		}
	}});
	//可编辑内容结束
	var swf_height=show_text==1?pic_height+20:pic_height;
	var pics="", links="", texts="";
	for(var i=1; i<imag.length; i++){
		pics=pics+("|"+imag[i]);
		links=links+("|"+link[i]);
		texts=texts+("|"+text[i]);
	}
	pics=pics.substring(1);
	links=links.substring(1);
	texts=texts.substring(1);
	var fl = String.format('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cabversion=6,0,0,0" width="{0}" height="{1}">', pic_width, swf_height);
		fl += '<param name="movie" value="/Content/img/pic.swf" />';
		fl += '<param name="quality" value="high" />';
		fl += '<param name="wmode" value="Opaque" />';
		fl += '<param name="scale" value="noScale" />';
		fl += String.format('<param name="FlashVars" value="pics={0}&links={1}&texts={2}&pic_width={3}&pic_height={4}&show_text={5}&txtcolor={6}&bgcolor={7}&button_pos={8}&stop_time={9}"/>',pics, links, texts, pic_width, pic_height, show_text, txtcolor, bgcolor, button_pos, stop_time);
		fl += String.format('<embed src="/Content/img/pic.swf" wmode="Opaque" FlashVars="pics={0}&links={1}&texts={2}&pic_width={3}&pic_height={4}&show_text={5}&txtcolor={6}&bgcolor={7}&button_pos={8}&stop_time={9}" quality="high" width="{3}" height="{10}" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"/>', pics, links, texts, pic_width, pic_height, show_text, txtcolor, bgcolor, button_pos, stop_time, swf_height);
		fl += '</object>';
		
	if (el == undefined || el.length == 0) {
		return fl;
	}
	$("#"+el).html(fl);
}

Helper.paged = function(pageIndex, pageSize, itemCount, parent) {
	pageIndex = parseInt(pageIndex);
	pageSize = parseInt(pageSize);
	itemCount = parseInt(itemCount);
	pageIndex = isNaN(pageIndex) ? 0 : pageIndex;
	pageSize = isNaN(pageSize) ? 0 : pageSize;
	itemCount = isNaN(itemCount) ? 0 : itemCount;
	pageIndex = pageIndex < 1 ? 1 : pageIndex;
	pageSize = pageSize < 1 ? 1 : pageSize;
	
	var pageCount = 0;
	var beginPage = 0;
	var endPage = 0;
	var prevPage = 0;
	var nextPage = 0;	

	pageCount = itemCount / pageSize;
	pageCount = itemCount % pageSize == 0 ? pageCount : pageCount + 1;
	pageCount = pageCount < 1 ? 1 : parseInt(pageCount);
	
	prevPage = pageIndex - 1;
	nextPage = pageIndex + 1;
	beginPage = pageIndex + 5 > pageCount ? pageCount - 9 : pageIndex - 4;
	endPage = pageIndex < 5 ? 10 : pageIndex + 5;
	beginPage = beginPage < 1 ? 1 : beginPage;
	endPage = endPage > pageCount ? pageCount : endPage;
	
	var page = '<ul class="page">';
	if (pageIndex > 1) {
		page += String.format('<li><img src="/Content/img/prev2.gif" alt="首页" title="首页" class="btn" onclick="{0}.paged(1)"/></li><li><img src="/Content/img/prev1.gif" alt="上一页" title="上一页" class="btn" onclick="{0}.paged({1})"/></li>', parent, prevPage);
	}	
	else {
		page += '<li><img src="/Content/img/prev2.gif" alt="首页" title="首页"/></li><li><img src="/Content/img/prev1.gif" alt="上一页" title="上一页"/></li>';
	}
	
	for (var i = beginPage; i <= endPage; ++i) {
		if (pageIndex == i) {
			page += String.format('<li><strong>[{0}]</strong></li>', i);
		}
		else {
			page += String.format('<li class="btn" onclick="{0}.paged({1})">{1}</li>', parent, i);
		}
	}
	
	if (pageIndex == pageCount) {
		page += '<li><img src="/Content/img/next1.gif" alt="下一页" title="下一页"/></li><li><img src="/Content/img/next2.gif" alt="末页" title="末页"/></li>';
	}
	else {
		page += String.format('<li><img src="/Content/img/next1.gif" alt="下一页" title="下一页" class="btn" onclick="{0}.paged({1})"/></li><li><img src="/Content/img/next2.gif" alt="末页" title="末页" class="btn" onclick="{0}.paged({2})"/></li>', parent, nextPage, pageCount);
	}
	page += String.format('<li></li><li>项目总数：{0}</li><li>共{1}页</li></ul>', itemCount, pageCount);
	return page;
}

function Tips() {}
Tips.fail = "很抱歉，您提交的操作没有完成，发生超时错误，与远程服务器连接中断，请刷新后重试，或稍后再试！";