/*
Author: Daniel.Liu
Email: dl2k@163.com
*/
	var IE = (navigator.appName.indexOf("Microsoft") >= 0)
	var SAFARI = (navigator.appName.indexOf("Safari") >= 0)
 
	var $A = Array.from = function(iterable) {
	  if (!iterable) return [];
	  if (iterable.toArray) {
		return iterable.toArray();
	  } else {
		var results = [];
		for (var i = 0; i < iterable.length; i++)
		  results.push(iterable[i]);
		return results;
	  }
	}
 
	Function.prototype.bind = function() {
	  var __method = this, args = $A(arguments), object = args.shift();
	  return function() {
		return __method.apply(object, args.concat($A(arguments)));
	  }
	};
	
	var Class = {
		create: function() {
			return function() {
				this.initialize.apply(this, arguments);
			}
		},
 
		inherit: function(obj, b) {			
			if (b == null)
			{
				var ref = Class.create();
				for (r in obj.prototype){ref.prototype[r] = obj.prototype[r];}; 
				return ref;
			}
			else
			{
				for (r in obj.prototype){b.prototype[r] = obj.prototype[r];}; 
				return b;
			}						
		}
	};
 
	base = Class.create();
 
	base.prototype = {
		initialize: function(){
//			this.prototype.tName = 'base';
		},
		
		clone: function(){
			ref = new Object();
			for (r in this){ref[r] = this[r];}; 
			for (r in this.prototype){ref.prototype[r] = this.prototype[r];};
			return ref;
		},
 
		bind: function(t){
			for (r in this){t[r] = this[r];};
			return t;
		}
	};
 
	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;
	};
 
 
	var Try = {
	  these: function() {
		var returnValue;
 
		for (var i = 0; i < arguments.length; i++) {
		  var lambda = arguments[i];
		  try {
			returnValue = lambda();
			break;
		  } catch (e) {}
		}
 
		return returnValue;
	  }
	};
 
 
 
	// dom operation function
 
	$cE = function(nodeName, nodeID) {
		if (nodeName == "" || nodeName == null)
		{
			throw "nodeName is empty!";
		}
		var e = document.createElement(nodeName);
		if (nodeID != "" && nodeID != null)
		{
			e.id = nodeID;
		}
		return e;
	};
 
	$cTE = function (nodeName) {
		if (nodeName == "" || nodeName == null)
		{
			throw "nodeName is empty!";
		}
		var e = document.createTextNode(nodeName);
		return e;
	};
 
	$getDom = function() {
		try
		{
			if (document.implementation && document.implementation.createDocument) {
				var doc = document.implementation.createDocument("", "", null);
 
				if (doc.readyState == null) {
					doc.readyState = 1;
					doc.addEventListener("load", function () {
						doc.readyState = 4;
						if (typeof doc.onreadystatechange == "function")
						doc.onreadystatechange();
					}, false);
				}
				return doc;
			}
 
			if (window.ActiveXObject)
				return Try.these(
					function() { return new ActiveXObject('MSXML2.DomDocument')   },
					function() { return new ActiveXObject('Microsoft.DomDocument')},
					function() { return new ActiveXObject('MSXML.DomDocument')    },
					function() { return new ActiveXObject('MSXML3.DomDocument')   }
				) || false;
 
			return null;
		}
		catch (e)
		{
			throw e;
		}
	};
 
	$getDomXml = function(dom) {
		try
		{
			if (IE)
			{
				return dom.xml;
			}
			else
			{
				var xmlSer = new XMLSerializer();				
				return xmlSer.serializeToString(dom);
			}			
		}
		catch (e)
		{
			throw e;
		}
	};
 
	$setDomXml = function(dom, string) {
		try
		{
			if (IE)
			{
				dom.loadXML(string);
				return dom;
			}
			else
			{
				var p = new DOMParser();
				dom = p.parseFromString(string, 'text/xml');
				return dom;
			}
		}
		catch (e)
		{
			throw e;
		}
	};
 
	$getDomNode = function(dom, path) {
		try
		{
			if (IE)
			{
				return dom.selectSingleNode(path);
			}
			else
			{
				var ps = path.split("/");
				var ne = dom;
				for (s in ps)
				{
					for (e in ne.childNodes)
					{
						if (ne.childNodes[e].nodeName == ps[s])
						{
							ne = ne.childNodes[e];
							break;
						}
					}
				}
 
				return ne;
			}			
		}
		catch (e)
		{
			throw e;
		}
	};
 
 
	$deSer = function(xmlDoc) {
		try
		{
			if (xmlDoc.childNodes.length == 0)
			{
				var d = xmlDoc.nodeValue;
				return d;
			}
			else 
			{
				var d = {};
				for (var i = 0; i < xmlDoc.childNodes.length; i++)
				{
					var n = xmlDoc.childNodes[i];
					if (n.nodeName == '#text')
					{
						d = n.nodeValue;
					}
					else
					{
						if (d[n.nodeName] == null)
						{
							d[n.nodeName] = $deSer(n); 
						}
						else if (d[n.nodeName].length == null || typeof(d[n.nodeName]) == 'string')
						{
							var temp = d[n.nodeName];
							d[n.nodeName] = new Array();
							d[n.nodeName].push(temp);
							d[n.nodeName].push($deSer(n));
						}
						else
						{
							d[n.nodeName].push($deSer(n));
						}
					}
				}
				return d;
			}
		}
		catch (e)
		{
			throw e;
		}
	};
 
	Transporter = Class.create();
 
	Transporter.prototype = {
		initialize: function(szUrl, handler) {
			this.url = szUrl;
			this.handler = handler
		},		
 
		send: function(req) {
			this.tr = this._getTransport();	
			if (this.tr)
			{			
				this.tr.onreadystatechange = this._dataProcessor.bind(this);
				this.tr.open("GET", this.url, true, "", "");
				this.tr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				this.tr.setRequestHeader("Content-Type", "text/xml;charset=utf-8");
				this.tr.setRequestHeader("Content-Length", req.length);
				this.tr.send(req);
			}
		},
 
		/// internal function for self call
 
		_getTransport: function() {
			return Try.these(
				function() {return new ActiveXObject('Microsoft.XMLHTTP')},
				function() {return new ActiveXObject('Msxml2.XMLHTTP')},
				function() {return new XMLHttpRequest()}
			) || false;
		},
 
		_dataProcessor: function() {
			if (this.tr.readyState == 4)
			{
				if (this.tr.status == 200)
				{					
					var xmlData = this.tr.responseXML;
					this.handler(xmlData);
				}
				else
				{
					//alert("The page you requested was abnormity, cause of " + this.tr.statusText);
				}
			}		
		}
	}
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
 
	var doms;
 
	var NavNode;
 
	function Start()
	{

 
		var dom = $('aniPic');
 
		doms = [];
		NavNode = [];
 
		var NavBar = $cE('div');
		NavBar.className = 'NavBar';
 
		var l = Math.floor(529 / aniP.length);
 
		for(var i = 0; i < aniP.length; i++)
		{
			var d = $cE('div');
			d.className = 'imgs';
			d.link = aniP[i][1];
			d.onclick = doClick;
 
			var im = $cE('img');
			im.src = aniP[i][0];
			d.appendChild(im);
 
			var node = $cE('div');
			node.className = 'Block';
			node.style.width = l + 'px';
			NavBar.appendChild(node);
			NavNode.push(node);
 
			dom.appendChild(d);
			doms.push(d);
		}
 
		currentDom = doms[0];
		currentDom.style.display = 'block';
		
		if(aniP.length > 1)
			t2 = setInterval(Change, 1500);
	}
 
	function doClick()
	{
		window.open(this.link);
		return;
		if(IE)
			window.navigate(this.link);
		else
			location.href = this.link;
	}
 
	var inPlay = false;
	var current = 0;
	var next;
	var currentDom;
	var nextDom;
	var offset = 0;
	var timerCount;
	var t2;
	var sp = -1;
 
 
	function Change()
	{
		clearInterval(t2);
		if(sp == current)
			return;
 
		next = current == doms.length - 1 ? 0 : current + 1;
		if(sp != -1) next = sp;
		ChangeTo(next);
	}
 
	function ChangeTo(n)
	{		
		inPlay = true;
		nextDom = doms[n];
		nextDom.style.top = '-105px';
		nextDom.style.left = '0px';
		nextDom.style.display = 'block';
		offset = 0;
		timerCount = setInterval(play, 30);	
	}
 

 
 
	function play()
	{
		if(offset > 105)
		{
			clearInterval(timerCount);
			currentDom.style.display = 'none';
			currentDom = nextDom;
			current = next;

			if(current == doms.length) current = 0;
			if(sp == -1)
				t2 = setInterval(Change, 1500);
			else if(sp != current)
				t2 = setInterval(Change, 0);
			inPlay = false;
		}
		else
		{
			currentDom.style.top = offset + 'px';
			nextDom.style.top = offset - 105 + 'px';
			if(offset < 30 || offset > 70)
			{
				offset += 1;
			}
			else
			{
				offset += 5;
			}
		}		
	}
 

 
	window.onload = Start;