/**************

常用JS库V0.8BETA
更新时间：2009年8月1日
更新者：Aeolus

注意一，JS的所有函数是区别大小写的，所以，不起作用的话请检查大小写
注意二，如果你的页面不是GB2312的编码，请把这个文件也转存为相应的编码


***************

用CSS实现文章过长省略加省略号
style="overflow:hidden; text-overflow:ellipsis;"

**************/


/**************
添加事件响应函数的函数
1.可以用来代替window.onload等方法，因为window.onload单页面只能用一次，此函数代替不会冲突
2.可以给页面中的任何对象绑定事件，比如给一个DIV添加双击事件
用法：addEventSimple(对象,'事件',要执行的函数注无括号 )
例:
<script>
addEventSimple(window,'load',sayhi)  // 等同于window.onload=sayhi();
</script>
**************/
function addEventSimple(obj,evt,fn){
	if(obj.addEventListener){
		obj.addEventListener(evt,fn,false);
	}else if(obj.attachEvent){
		obj.attachEvent('on'+evt,fn);
	}
}

/**************
函数 ：触发某个对象的onclick事件。（兼容IE和FF）
用法: 
<input type="button" value="aaa" id="a" onclick=" alert('seekart') " />
<input type="button" value="触发ID为a的onclick事件" onclick=" HanderToClick('a') " />
**************/
function HanderToClick(objid){
	var obj=document.getElementById(objid);
	if(document.all){
		obj.fireEvent("onclick");
	}else{
	  	var e=document.createEvent('MouseEvent');
	  	e.initEvent('click',false,false);
	  	obj.dispatchEvent(e);
	}
}

/**************
*去除空格
*用法：
// Trim() , Ltrim() , RTrim() 
**************/
String.prototype.Trim = function(){     
	return this.replace(/(^\s*)|(\s*$)/g, "");     
}     
String.prototype.LTrim = function(){     
	return this.replace(/(^\s*)/g, "");     
}     
String.prototype.RTrim = function(){     
	return this.replace(/(\s*$)/g, "");     
} 

/**************
*判断用户名是否符合要求
*用法：
<input type="button" value="test" onclick="alert(UserNameCheck(document.getElementById('a').value))" />
**************/
function UserNameCheck(string){
	if((string.length<4)||(string.length>20)){return false;}
	var re;
	re=new RegExp("^[a-z|A-Z|0-9][a-z|A-Z|0-9|-]+$");
	return re.test(string);
}
/**************
*判断电子邮箱是否符合规范
*用法：
<input type="button" value="test" onclick="alert(EmailCheck(document.getElementById('a').value))" />
**************/
function EmailCheck(string){
	var re;
	re=new RegExp("^[\\w-_\\.]+@([a-z|0-9|-]+\\.)+[a-z]{2,5}$");
	return re.test(string.toLowerCase());
}

/**************
*只允许输入数字和小数点。
*用法：
<input type=text  onkeyup="ClearNoNum(this)"/>
**************/
function ClearNoNum2(obj){
	obj.value = obj.value.replace(/[^\d]/g,"");
}


function ClearNoNum(obj){
	obj.value = obj.value.replace(/[^\d.]/g,"");
	obj.value = obj.value.replace(/^\./g,"");
	obj.value = obj.value.replace(/\.{2,}/g,".");
	obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
}
/**************
*只能输入数字和英文。
*用法:
<input onkeyup="InputEnNum(this)" onbeforepaste="InputEnNum_before()" />
**************/
function InputEnNum(obj){
	obj.value=obj.value.replace(/[\W]/g,'');
}
function InputEnNum_before(){
	clipboardData.setData('text',clipboardData.getData('text').replace(/[\W]/g,''));
}

/**************
*回车提交。
*用法:
<input type=text onkeydown="KeySubmit()">   
**************/
function KeySubmit(){
    if(event.keyCode==13){
	   form.submit();
   }
}
/**************
*实现Ctrl+Enter 提交的效果.(兼容IE和FF)
*在做这个效果时，发现一个问题，
*当表单中如果只有一个文本框时，
*回车会默认提交。(没有提交按钮也一样。)
*用法:
<form action="#"  name="a">
	<input type="text" onkeydown="QuickPost(event,document.a)" />   
</form>
**************/
function QuickPost(event,form){
    var event=event||window.event;
	if((event.ctrlKey && event.keyCode == 13)||(event.altKey && event.keyCode == 83)){
		//	event.srcElement.form.submit();
		form.submit();
	}
}
/**************
*文本框得到与失去焦点 操作。
*这个方法经常在文本框搜索的时候出现。
*文本里显示 “ 搜索 ”，然后当用户鼠标点击此文本，
*文本框内容清空。如果用户没填写内容，那么文本的值又复原。如果填写了，就不再改变。
*用法:
<input type="" value="关键字搜索" name="a" onfocus="ClearTxt('a','关键字搜索')" onblur="FillTxt('a','关键字搜索')"/>
**************/
function ClearTxt(id,txt) {
  if (document.getElementById(id).value == txt)
    document.getElementById(id).value="" ;
  return ;
}
function FillTxt(id,txt) {
  if ( document.getElementById(id).value == "" )
    document.getElementById(id).value=txt;
  return ;
}

/***************
* 子窗口刷新父窗口.(写在子窗口里)
**************/
function OpenerReload(){
	window.opener.location.reload();
}

/**************
收藏到书签.(兼容IE和FF)。
用法:
<input type="button" value="收藏" onclick="AddBookmark('seekart(前端开发)','http://www.seekart.cn')"/> 
**************/
function AddBookmark(title,url){
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	} else if( document.all ) {
		window.external.AddFavorite( url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}

/***************
获取域名.
**************/
function GetDomainName(){
  var s,siteUrl;
  s=document.location+"";
  return s.substring(7,s.indexOf('/',7));
}

/**************
用js获取当取地址栏的一个Object。

里面有三个方法：
1、request.QueryString("参数")//获取指定参数，返回字符串;
2、request.QueryStrings();//获取全部参数，并返回数组;
3、request.setQuery("参数","参数的值");//如果当前地址栏有此参数，那么将更新此参数，否则返回一个新的地址栏参数字符串。
例如：
当前地址栏参数字符串为：?name=a&site=never_online

alert(request.setQuery("name","blueDestiny"))

如果地址栏参数中有"name"，那么返回?name=blueDestiny&site=never_online

setQuery方法有自动追加参数的功能。如：
当前地址栏参数字符串为：?site=never_online
alert(request.setQuery("name","blueDestiny"))
则返回?site=never_online&name=blueDestiny

同理，如果地址栏没有参数，也会自动追加参数
alert(request.setQuery("name","blueDestiny"))
返回?name=blueDestiny

// author: never-online
// web: never-online.net

**************/
var request = {
	QueryString : function(val) {
		var uri = window.location.search;
		var re = new RegExp("" +val+ "\=([^\&\?]*)", "ig");
		return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
	},
	QueryStrings : function() {
		var uri = window.location.search;
		var re = /\w*\=([^\&\?]*)/ig;
		var retval=[];
		while ((arr = re.exec(uri)) != null)
		retval.push(arr[0]);
		return retval;
	},
	setQuery : function(val1, val2) {
		var a = this.QueryStrings();
		var retval = "";
		var seted = false;
		var re = new RegExp("^" +val1+ "\=([^\&\?]*)$", "ig");
		for(var i=0; i<a.length; i++) {
			if (re.test(a[i])) {
				seted = true;
				a[i] = val1 +"="+ val2;
			}
		}
		retval = a.join("&");
		return "?" +retval+ (seted ? "" : (retval ? "&" : "") +val1+ "=" +val2);
	}
}

/***************
*等比缩放图片大小
*宽高可以不指定，在JS中默认200*200(可改)
*用法：
<img onLoad="ResizeImg(this,'120','200')"
**************/
function ResizeImg(Img,width,height)
{
    var image=new Image(); 
    image.src=Img.src; 

	if(!width)width=200; //width=200;//预先设置的所期望的宽的值
	if(!height)height=200; //height=170;//预先设置的所期望的高的值
    if(image.width>width||image.height>height) 
    {
        w=image.width/width;
        h=image.height/height;
        if(w>h){
            Img.width=width;
            Img.height=image.height/w;
        }else{
            Img.height=height;
            Img.width=image.width/h;
        }
    }
}
/**************
*整个DIV图片自动缩小方法。
*用法：

<div id="d">
	<img src="p1.gif" />
	<img src="p2.gif" />
</div>

<script>
addEventSimple(window,'load',onloadResizeImg);
function onloadResizeImg(){
	ResizeImgByID('d',50,50);
}
</script>
**************/
function ResizeImgByID(contentId,maxWidth,maxHeight){
	var imgs=document.getElementById(contentId).getElementsByTagName("img");
	for(var i=0;i<imgs.length;i++){
		ResizeImg(imgs[i],maxWidth,maxHeight);
	}
}


/******************************************************
* JavaScript实现内容从右往左滚动效果
用法：
<div id="leftScroll>
	滚动内容内容
</div>
addEventSimple(window,'load',gogo)
function gogo(){
	MqObj(leftScroll,"150","200","10",'top')
}
******************************************************/
function MqObj(obj,width,height,speed,direct){
	obj.contWidth=obj.offsetWidth;// offsetWidth
	obj.stopscroll=false;
	obj.nowscroll=0;
	with(obj){
		scrollLeft=0;//
		innerHTML+=innerHTML;
		style.width=width;
		style.height=height;
		style.overflowX="hidden";//
		style.overflowY="visible";//
		noWrap=true;
		onmouseover=function(){stopscroll=true};
		onmouseout=function(){stopscroll=false};
	}
	eval("setInterval('doScroll("+obj.id+")',"+speed+")");
}
function doScroll(obj){
	if(obj.stopscroll==true) return;
	if(obj.nowscroll<obj.contWidth){ // 
	obj.scrollLeft=obj.nowscroll++;//scrollLeft
	}else{
	obj.scrollLeft=0;//scrollLeft
	obj.nowscroll=0;
	}
}
function addEventSimple(obj,evt,fn){
	if(obj.addEventListener){
		obj.addEventListener(evt,fn,false);
	}else if(obj.attachEvent){
		obj.attachEvent('on'+evt,fn);
	}
}
/******************************************************
* JavaScript实现内容从下往上连续滚动效果
用法：
<div id="scrollText">
	滚动内容内容
</div>

<script>addEventSimple(window,'load',initScrolling);</script>
******************************************************/

//addEventSimple(window,'load',initScrolling);  这条在要滚动的页面调用
var scrollingBox; //保存想要滚动的容器
var scrollingInterval;
var reachedBottom=false; //用于记录是否“滚到头”过一次
var bottom; //记录第一次滚到头时候的scrollTop
function initScrolling(){ //初始化滚动效果
	scrollingBox = document.getElementById("scrollText");//滚动容器的名称就是DIV的ID
	scrollingBox.style.height = "60px";//滚动的高度,样式设置，与滚动基本无关，应该用CSS设置。
	scrollingBox.style.overflow = "hidden";// 这条也应该用CSS设置，用CSS设置更好，不会有初始时破版的现象
	scrollingInterval = setInterval("scrolling()",50); //滚动
	scrollingBox.onmouseover = over; //鼠标划过停止滚动效果
	scrollingBox.onmouseout = out;  //鼠标划出回复滚动效果
}
//滚动效果
function scrolling(){
	var origin = scrollingBox.scrollTop++; //开始滚动,origin是原来scrollTop
	if(origin == scrollingBox.scrollTop){ //如果到头了
		if(!reachedBottom){ //如果是第一次到头
			scrollingBox.innerHTML+=scrollingBox.innerHTML;
			reachedBottom=true;
			bottom=origin;
		}else{
			scrollingBox.scrollTop=bottom; //已经到头过，只需回复头接尾的效果
		}
	}
}
function over(){
	clearInterval(scrollingInterval);
}
function out(){
	scrollingInterval = setInterval("scrolling()",50);
}
/**************
购物车用的JS
JS记COOKIE购物车，注意和SHOWCAT.asp文件配合使用
用法:
<a href="javascript:AddCat()"
**************/
function Addcat(catid,number){
	if(number<=0) DeleteCookie("mycat"+catid);
	else SetCookie("mycat"+catid,catid+","+number);
	var cat=window.open("showcat.asp","cat","toolbar=no,menubar=no,location=no,status=no,scrollbars=yes,width=650,height=450"); 
}
function Deletecat(catid){
　　DeleteCookie("mycat"+catid);
　　var cat=window.open("showcat.asp","cat","toolbar=no,menubar=no,location=no,status=no,scrollbars=yes,width=650,height=450"); 
}
function SetCookie (name, value){
	var argc = SetCookie.arguments.length;
	var argv = SetCookie.arguments;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + value +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain)) +((secure == true) ? "; secure" : "");
}
function DeleteCookie (name){
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

function Clearcookie(){ //清除COOKIE
	var temp=document.cookie.split(";");
	var loop3;
	var ts;
	for (loop3=0;loop3<temp.length;loop3++){
		ts=temp[loop3].split("=")[0];
		if (ts.indexOf('mycat')!=-1){
			DeleteCookie(ts); //如果ts含“mycat”则执行清除
		}
	}
}

function getCookieVal (offset) { //取得项名称为offset的cookie值
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) { //取得名称为name的cookie值
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
			if (i == 0) break;
	}
	return null;
}



/*  当前站JS */
var k=0
function showtop(){
	if(k==0){
		$("#toper div").hide();
		$("#toper1").show();
		$("#toper").slideDown('normal');
		k=1;
	}else if(k!=1){
		k=1;
		$("#toper").slideUp('normal',function(){
				$("#toper div").hide();
				$("#toper1").show();
				$("#toper").slideDown('normal');
		 }); 
	}else{
		$("#toper").slideUp('normal');
		k=0
	}
}
function showtop2(){	
	if(k==0){
		$("#toper div").hide();
		$("#toper2").show();
		$("#toper").slideDown('normal');
		k=2;
	}else if(k!=2){
		k=2;
		$("#toper").slideUp('normal',function(){
				$("#toper div").hide();
				$("#toper2").show();
				$("#toper").slideDown('normal');
		 }); 	
	}else{
		$("#toper").slideUp('normal');
		k=0
	}
}
function showtop3(){
	if(k==0){
		$("#toper div").hide();
		$("#toper3").show();
		$("#toper").slideDown('normal');
		k=3;
	}else if(k!=3){
		k=3;
		$("#toper").slideUp('normal',function(){
				$("#toper div").hide();
				$("#toper3").show();
				$("#toper").slideDown('normal');
		 }); 	
	}else{
		$("#toper").slideUp('normal');
		k=0
	}
}
