﻿// ********************************************
// IE6 background-image flicker fix
// ********************************************
try{
    document.execCommand("BackgroundImageCache", false, true);
}
catch(err){}

// ********************************************
// $
// ********************************************
function $() {
    var elements = new Array();

    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);

        if (arguments.length == 1)
            return element;

        elements.push(element);
    }

    return elements;
};

// ********************************************
// Object extend
// ********************************************
Object.extend = function(dest, source, replace) {
	for(var prop in source) {
		if(replace == false && dest[prop] != null) { continue; }
		dest[prop] = source[prop];
	}
	return dest;
};

Object.fromJSON = function(JSON){
    if(JSON==null || JSON=='') return null;
    eval('var o='+JSON);
    return o;
};

// ********************************************
// Function extend
// ********************************************
Function.prototype.bind=function(o) {
	if(!Function.__objs) {
		Function.__objs = [];
		Function.__funcs = [];
	}
	var objId = o.__oid;
	if(!objId) {
		Function.__objs[objId = o.__oid = Function.__objs.length] = o;
	}

	var me = this;
	var funcId = me.__fid;
	if(!funcId) {
		Function.__funcs[funcId = me.__fid = Function.__funcs.length] = me;
	}

	if(!o.__closures) {
		o.__closures = [];
	}

	var closure = o.__closures[funcId];
	if(closure) {
		return closure;
	}

	o = null;
	me = null;

	return Function.__objs[objId].__closures[funcId] = function() {
		return Function.__funcs[funcId].apply(Function.__objs[objId], arguments);
	};
};

// ********************************************
// Array extend
// ********************************************
Array.prototype.contains=function(v){
    for(var i=0;i<this.length;i++){
        if(this[i]==v)return true;
    }
    return false;
};
Array.prototype.insertBefore=function(v,index){
    for(var i=this.length;i>index;i--){
        this[i]=this[i-1];
    }
    this[index]=v;
};
Array.prototype.remove = function(v) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == v) {
            this.splice(i, 1);
            return;
        }
    }
};

// ********************************************
// String extend
// ********************************************
String.format=function(s) {
	for(var i=1; i<arguments.length; i++) {
		s = s.replace('{' + (i -1) + '}', arguments[i]);
	}
	return s;
};

Object.extend(String.prototype, {
	trimLeft: function() {
		return this.replace(/^\s*/,'');
	},
	trimRight: function() {
		return this.replace(/\s*$/,'');
	},
	trim: function() {
		return this.trimRight().trimLeft();
	},
	endsWith: function(s) {
		if(this.length == 0 || this.length < s.length) { return false; }
		return (this.substr(this.length - s.length) == s);
	},
	startsWith: function(s) {
		if(this.length == 0 || this.length < s.length) { return false; }
		return (this.substr(0, s.length) == s);
	}
}, false);
	
// ********************************************
// Brws
// ********************************************
var Brws={
	getW:function(){
		return document.documentElement.clientWidth || document.body.clientWidth;
	},

	getH:function(){
		return document.documentElement.clientHeight || document.body.clientHeight;
	},
	
	isIE:navigator.userAgent.toLowerCase().indexOf('msie')!=-1 && navigator.userAgent.toLowerCase().indexOf('opera') == -1,
	
	isIE6:navigator.userAgent.toLowerCase().indexOf('msie 6')!=-1 && navigator.userAgent.toLowerCase().indexOf('opera') == -1,
	
	isIE7:navigator.userAgent.toLowerCase().indexOf('msie 7')!=-1 && navigator.userAgent.toLowerCase().indexOf('opera') == -1,
	
	isFF:navigator.userAgent.toLowerCase().indexOf('firefox')!=-1
};

// ********************************************
// Evt
// ********************************************
var Evt={
    cancel_all:function(evt){
        evt.cancelBubble=true;
        if(evt.preventDefault)evt.preventDefault();
        return false;
    },
    
    cancel_bubble:function(evt){
        evt.cancelBubble=true;
    },
    
    cancel_default:function(evt){
        if(evt.preventDefault)evt.preventDefault();
        return false;
    },
    
    addEvent:function(o, evType, f, capture) {
		if(o == null) { return false; }
		if(o.addEventListener) {
			o.addEventListener(evType, f, capture);
			return true;
		} else if (o.attachEvent) {
			var r = o.attachEvent('on' + evType, f);
			return r;
		} else {
			try{ o['on' + evType] = f; }catch(e){}
		}
	},
	
	removeEvent:function(o, evType, f, capture) {
		if(o == null) { return false; }
		if(o.removeEventListener) {
			o.removeEventListener(evType, f, capture);
			return true;
		} else if (o.detachEvent) {
			o.detachEvent('on' + evType, f);
		} else {
			try{ o['on' + evType] = function(){}; }catch(e){}
		}
	}
};

// ********************************************
// Cookies
// ********************************************
var Cookies={
    getCookieVal:function(offset){
        var endstr = document.cookie.indexOf (';', offset);
        if (endstr == -1)endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
    },
    
    setCookie:function(name,value,expires,path,domain,secure){
        var expdate = new Date();
        if(expires!=null)expdate.setTime(expdate.getTime() + expires * 1000);
        var cookiev=name + '=' + escape (value);
        if(expires!=null)cookiev+='; expires='+ expdate.toGMTString();
        if(path!=null)cookiev+='; path=' + path;
        if(domain!=null)cookiev+='; domain=' + domain;
        if(secure)cookiev+='; secure';
        document.cookie=cookiev;
    },
    
    delCookie:function(name){
        var exp = new Date();
        exp.setTime (exp.getTime() - 1);
        var cval = this.getCookie (name);
        document.cookie = name + '=' + cval + '; expires='+ exp.toGMTString();
    },
    
    getCookie:function(name){
        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 this.getCookieVal(j);
            i = document.cookie.indexOf(' ', i) + 1;
            if (i == 0) break;
        }
        return null;
    }
};

// ********************************************
// Dom
// ********************************************
var Dom={
    makeDragable:function(ctrlobj,ondragstart,ondrag,ondragend,onclick){
        
        ctrlobj._m_d_dragstart=ondragstart;
        ctrlobj._m_d_drag=ondrag;
        ctrlobj._m_d_dragend=ondragend;
        ctrlobj._m_d_click=onclick;
        
        ctrlobj._m_d_doc_mousemove=function(evt){
            var mvx=evt.clientX-this.mdx$;
            var mvy=evt.clientY-this.mdy$;
            if(this.dragstarted){
                //ondrag event
                if(this._m_d_drag)this._m_d_drag(this,{mvx:mvx,mvy:mvy});
            }
            else if(Math.abs(mvx)>2 || Math.abs(mvy)>2){
                //ondragstart event
                if(this._m_d_dragstart)this._m_d_dragstart(this,{});
                this.dragstarted=true;
            }
            return Evt.cancel_all(evt);
        };
        
        ctrlobj._m_d_doc_mouseup=function(evt){
            Evt.removeEvent(document.body,'mousemove',this._m_d_doc_mousemove.bind(this),false);
            Evt.removeEvent(document.body,'mouseup',this._m_d_doc_mouseup.bind(this),false);
            if(this.releaseCapture)this.releaseCapture();
            if(this.dragstarted){
                //ondragend event
                if(this._m_d_dragend)this._m_d_dragend(this,{});
            }
            else{
                var src=evt.srcElement || evt.target;
                //onclick event
                if(this._m_d_click)this._m_d_click(src,{x:evt.clientX,y:evt.clientY});
            }
            return Evt.cancel_all(evt);
        };
        
        ctrlobj._m_d_mousedown=function(evt){
            if(Brws.isIE && evt.button==1 || Brws.isFF && evt.button==0){
                this.mdx$=evt.clientX;
                this.mdy$=evt.clientY;
                this.dragstarted=false;
                Evt.addEvent(document.body,'mousemove',this._m_d_doc_mousemove.bind(this),false);
                Evt.addEvent(document.body,'mouseup',this._m_d_doc_mouseup.bind(this),false);
                if(this.setCapture)this.setCapture();
                return Evt.cancel_all(evt);
            }
        };
        
        Evt.addEvent(ctrlobj,'mousedown',ctrlobj._m_d_mousedown.bind(ctrlobj),false);
    }
};

// ********************************************
// Ajax
// ********************************************
var Ajax = {
    xmlhttps: [],
    getxmlhttp: function() {
        for (var i = 0; i < this.xmlhttps.length; i++) {
            if (this.xmlhttps[i]._p == false) return this.xmlhttps[i];
        }
        var o;
        if (window.XMLHttpRequest) {
            o = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            o = new ActiveXObject('Microsoft.XMLHTTP');
        }
        if (o != null) {
            var xmlhttp = { _o: o, _p: false };
            this.xmlhttps.push(xmlhttp);
            return xmlhttp;
        }
        return null;
    },
    getData: function(url, oncomplete, onerror) {
        var xmlhttp = this.getxmlhttp();
        if (xmlhttp == null) return;
        xmlhttp._oncomplete = oncomplete;
        xmlhttp._onerror = onerror;
        xmlhttp._o.open("GET", url, true);
        xmlhttp._o.onreadystatechange = function() {
            if (this._o.readyState == 4) {
                if (this._o.status == 200) {
                    if (this._oncomplete) this._oncomplete(this._o.responseText);
                }
                else {
                    if (this._onerror) this._onerror(this._o.status);
                }
                this._p = false;
            }
        } .bind(xmlhttp);
        xmlhttp._p = true;
        xmlhttp._o.send(null);
    },
    postData: function(url, data, oncomplete, onerror) {
        var xmlhttp = this.getxmlhttp();
        if (xmlhttp == null) return;
        xmlhttp._oncomplete = oncomplete;
        xmlhttp._onerror = onerror;
        xmlhttp._o.open("POST", url, true);
        xmlhttp._o.onreadystatechange = function() {
            if (this._o.readyState == 4) {
                if (this._o.status == 200) {
                    if (this._oncomplete) this._oncomplete(this._o.responseText);
                }
                else {
                    if (this._onerror) this._onerror(this._o.status);
                }
                this._p = false;
            }
        } .bind(xmlhttp);
        xmlhttp._p = true;
        xmlhttp._o.send(data);
    }
};

// ********************************************
// iframe
// ********************************************
function fitIframe(windowo, height) {
    var ifs = document.getElementsByTagName('iframe');
    for (var i = 0; i < ifs.length; i++) {
        if (ifs[i].contentWindow == windowo) {
            ifs[i].style.height = height + 'px';
        }
    }
}

//搜索输入框定义函数
function makeSearchInput(obj, initv, onEnterPress) {
    obj._initv = initv;
    obj._on_enter_press = onEnterPress;
    obj.onfocus = function() {
        if (this.value == this._initv) {
            this.value = '';
        }
        else {
            this.select();
        }
        this.style.color = '#000000';
    };
    obj.onblur = function() {
        if (this.value == '') {
            this.value = this._initv;
            this.style.color = '#999999';
        }
    };
    obj.onkeypress = function(evt) {
        if (evt == null) evt = window.event;
        if (evt.keyCode == 13 && this._on_enter_press && this.value != '') {
            this._on_enter_press();
            return false;
        }
    };
    obj.getValue = function() {
        if (this.value == this._initv) return '';
        return this.value;
    };
    obj.value = initv;
    obj.style.color = '#999999';
};

//下拉事件定义函数 (按钮,外框,显示的面板)
function show_dropdown(b, mp, p) {
    if (b == null || mp == null) return false;
    $(b).onmouseover = function() {
        $(p).style.display = 'block';
        var This = this;
        This.style.backgroundPosition = 'left bottom';
        $(mp).onmouseout = function(evt) {
            this._coll_tm = setTimeout(function() {
                $(p).style.display = 'none';
                This.style.backgroundPosition = 'left top';
            }, 200);
        };
        $(mp).onmouseover = function(evt) {
            clearTimeout(this._coll_tm);
        };
    };
}

//********************************************************
//循环滚动特效
//功能:实现从下往上,从上往下,从左往右,从右往左循环滚动
//参数:elementID元素ID(字符型),滚动类型(4种),速度,滚动的内容
//author:Ayu
//2008-12-19
//********************************************************
function Marquee(elementID, type,delay,delay_h,speed, scrollContent) {
    //没有元素,返回false
    if (!document.getElementById) return false;
    if (!document.getElementById(elementID)) return false;
    //默认速度
    speed = speed == null ? 30 : speed;
    delay = delay == null ? null : delay;
    delay_h = delay_h == null ? 80 : delay_h;
    //bottom_to_top 默认从下往上滚动
    type = type == null ? 'bottom_to_top' : type;
    //滚动类型
    var types = ['bottom_to_top', 'top_to_bottom', 'left_to_right', 'right_to_left'];
    var elem = document.getElementById(elementID);
    //elem.innerHTML='';
    scrollContent = scrollContent == null ? elem.innerHTML : scrollContent;
    //scrollContent==null?elem.innerHTML='':'';
    var e1 = document.createElement('DIV');
    var e2 = document.createElement('DIV');
    var go = true;
    if (type == types[0]) {
        elem.appendChild(e1);
        elem.appendChild(e2);
        e1.innerHTML = scrollContent;
        e2.innerHTML = go ? e1.innerHTML : '';
        go = e1.offsetHeight < parseInt(elem.style.height) ? false : true;
        e2.style.display = go ? 'block' : 'none';
    } else if (type == types[1]) {
        elem.appendChild(e1);
        elem.appendChild(e2);
        elem.scrollTop = elem.scrollHeight;
        e1.innerHTML = scrollContent;
        e2.innerHTML = go ? e1.innerHTML : '';
        go = e1.offsetHeight < parseInt(elem.style.height) ? false : true;
        e2.style.display = go ? 'block' : 'none';
    } else if (type == types[2] || type == types[3]) {
        elem.innerHTML = '<table border="0" cellpadding="0" cellspacing="0"><tr><td id="______d1"></td><td id="______d2"></td></tr></table>';
        var d1 = document.getElementById('______d1');
        var d2 = document.getElementById('______d2');
        e1 = d1.appendChild(e1);
        e2 = d2.appendChild(e2);
        e1.innerHTML = scrollContent;
        e2.innerHTML = e1.innerHTML;
        go = parseInt(e1.offsetWidth) < parseInt(elem.style.width) ? false : true;
        e2.style.display = go ? 'block' : 'none';
        elem.scrollLeft = elem.scrollWidth;
    }

    var j = parseInt(delay_h);
    var _j = 0;
    function _Marquee() {
        if (type == types[0]) {
            if (delay != null) {
                if (j > 0) { j--; } else { _setTimeOut(delay); _j = delay_h;}
                e2.offsetTop - elem.scrollTop <= 0 ? elem.scrollTop = elem.scrollTop - e1.offsetHeight : elem.scrollTop++;
                _j = j;
            } else {
                e2.offsetTop - elem.scrollTop <= 0 ? elem.scrollTop = elem.scrollTop - e1.offsetHeight : elem.scrollTop++;
                //$('test').innerHTML = elem.scrollTop;
            }
           
        } else if (type == types[1]) {
            e1.offsetTop - elem.scrollTop >= 0 ? elem.scrollTop += e2.offsetHeight : elem.scrollTop--;
            if (delay!=null) {
                if (j == 0) _setTimeOut(delay);
                j >= 0 ? j-- : parseInt(elem.style.height);
            }
        } else if (type == types[2]) {
            elem.scrollLeft <= 0 ? elem.scrollLeft += e2.offsetWidth : elem.scrollLeft--;
        } else if (type == types[3]) {
            e2.offsetWidth - elem.scrollLeft <= 0 ? elem.scrollLeft -= e1.offsetWidth : elem.scrollLeft++;
        }
    }
    //内容宽度,高度比外框小时,不进行循环滚动
    var _interval = null;
    var _time_out = null;
    function stopInt() {
        j = _j;
        clearInterval(_interval);
    }
    function startInt() {
        _interval = setInterval(_Marquee, speed);
    }
    function _setInt() {
        startInt();
        j = _j;
        alert(j);
    }
    var _setTimeOut = function(delay) {
        if (go) {
            clearInterval(_interval);
            setTimeout(_setInt, delay);
        }
    };
    if (go) {
        startInt();
        elem.onmouseover = function() { stopInt(); _setTimeOut = null;};
        elem.onmouseout = function() {
            startInt();
            _setTimeOut = function(delay) {
                if (go) {
                    clearInterval(_interval);
                    setTimeout(_setInt, delay);
                }
            };
        };
    }


}

//悬停滚动

//<div id="scroll1" class="scrolldiv">
//     <div class="scrollmessage1">
//     ..........
//     </div>
//</div>
//用法：var scroll1 = new scrollObject(30, 'scroll1');
//      scroll1.start('scroll1', 300); 

function scrollObject(marqueesHeight, elemId) {
	var stopscroll = false;
	var scrollElem = document.getElementById(elemId);
	with (scrollElem) {
		style.height    = marqueesHeight;
		style.overflow  = 'hidden';
		noWrap          = true;
	}
	scrollElem.onmouseover = function() {
		stopscroll = true;
	};
	scrollElem.onmouseout = function() {
		stopscroll = false;
	};
	var divs = scrollElem.getElementsByTagName('div');
	var scrollmessage1;
	var scrollmessage2;
	if (divs.length > 0) {
		scrollmessage1 = divs[0];
		scrollmessage2 = scrollmessage1.cloneNode(true);
		scrollElem.appendChild(scrollmessage2);
	}
	var currentTop = 0;
	var stoptime   = 0;
	var delaytime  = 120;
	function init_srolltext() {
		scrollElem.scrollTop = 0;
	}
	this.start = function(s, delay) {
		init_srolltext();
		setDelay(delay);
		setInterval(s + '.scrollUp()', 10);
	};
	function setDelay(delay) {
		if (delay > 0) {
			delaytime = delay;
		}
	}
	this.scrollUp = function() {
		if (stopscroll) {
			return;
		}
		currentTop ++;
		if (currentTop == marqueesHeight + 1) {	//控制停留时间
			stoptime ++;
			currentTop --;
			if(stoptime == delaytime) {
				currentTop = 0;
				stoptime = 0;
			}
		} else {
			if (scrollmessage2.offsetHeight - scrollElem.scrollTop <= 0) {
				scrollElem.scrollTop -= scrollmessage1.offsetHeight;
				scrollElem.scrollTop ++ ;
			}
			else{
				scrollElem.scrollTop ++;
			}
		}
	};
}


window.OpenWindow=function(url){
    var target = url;
    newwindow = window.open(target, '', 'toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes');
    if (document.all) {
        newwindow.moveTo(0, 0);
        newwindow.resizeTo(screen.width, screen.height);
    }
};