var $ = {
	get : function(_id){
		if(typeof _id != 'string')return _id
		var _e = document.getElementById(_id);
		if(_e)return _e;
		_e = document.getElementsByName(_id);
		if(_e.length == 1)return _e[0];
		return _e;
	},
	
	create : function(_tagName){
		return document.createElement(_tagName);
	},
	
	tag : function(_tagName){
		return document.getElementsByTagName(_tagName);
	}
}

function $Trans(show){
	var $box = null;
	var $len = 0;
	var $arr = new Array();
	var $delay = 4000;
	var $number = null;
	var $oThis = this;
	var $key = 0;
	var $timeout = null;
	var $showNumber = show && true;
	var $last = 0;
	
	this.loadFromElement = function(id){
		var t = $.get(id);
		var l = t.childNodes.length;
		for(var i = 0; i < l; i++){
			if(t.childNodes[i].tagName){
				$arr[$len++] = t.childNodes[i];
			}
		}
		return;
	}
	
	this.loadFromArray = function(arr, image){
		for(var i = 0; i < arr.length; i++){
			if(!arr[i] || arr[i].length == 0)continue;
			var obj = $.create('a');
			if(arr[i][1]){
				obj.href = arr[i][1];
				obj.target = '_blank';
			}
			if(image == 'image'){
				obj.innerHTML = '<img src="' + arr[i][0] + '" />';
			}
			else{
				obj.innerHTML = arr[i][0];
			}
			$arr[$len++] = obj;
		}
	}
	
	this.setBox = function(id){
		$box = $.get(id);
	}
	
	this.setDelay = function(delay){
		$delay = delay;
	}
	
	this.display = function(){
		if(!$box)return;
		$box.innerHTML = '<p>&nbsp;</p>';
		if($showNumber){
			_showNumber();
		}
		_play(0);
	}
	
	function _showNumber(){
		var str = '';
		var id = $box.id + '_box';
		for(var i = 1; i <= $len; i++){
			str += '<u title="' + (i - 1) + '">' + i + '</u>';
		}
		$box.innerHTML = '<div id="' + id + '"><span>' + str + '</span></div>' + $box.innerHTML;
		$number = ($.get(id)).getElementsByTagName('u');
		for(var i = 0; i < $len; i++){
			$number[i].onclick = function(){_play(this.title);}
		}
		$last = 1;
	}
	
	function _change(){
		var flt = document.all && $box.filters && $box.filters.revealTrans;
		if(flt){
			$box.filters.revealTrans.Transition = Math.floor(Math.random() * 23);
			$box.filters.revealTrans.apply();
		}
		$box.replaceChild($arr[$key], $box.childNodes[$last]);
		if(flt){
			$box.filters.revealTrans.play();
		}
	}
	
	function _play(key){
		window.clearTimeout($timeout);
		_newKey(key);
		_change();
		if($len > 1)$timeout = window.setTimeout(function(){_play()}, $delay);
	}
	
	function _stop(){
		window.clearTimeout($timeout);
	}
	
	function _newKey(key){
		if($showNumber)$number[$key].className = '';
		$key = (key || key === 0 ? key : $key + 1) % $len;
		if($showNumber)$number[$key].className = 'a';
	}
}
function $Scroll(_director){
	var $box = null;
	var $speed = 1;
	var $lines = 1;
	var $lineHeight = 20;
	var $timeout = null;
	var $scrollHeight = 0;
	var $scrollBox = null;
	var $director = _director;
	
	var $delay = 2000;
	var $dtime = 20;
	
	var $height = 0;
	var $pheight = 0;
	
	var $timeout = null;
	
	var $oThis = this;
	
	this.setBox = function(id){
		var _box = $.get(id);
		if(_box && _box.id)$box = _box;
	}
	
	this.setDelay = function(delay){
		$delay = delay;
	}
	
	this.setLineHeight = function(_lh){
		$lineHeight = _lh;
	}
	
	this.loadFromArray = function(arr){
		if(!$box)return;
		var str = '';
		for(var i = 0; i < arr.length; i++){
			if(!arr[i] || arr[i].length == 0)continue;
			str += '<li><a href="' + arr[i][1] + '" style="' + arr[i][2] + '">' + arr[i][0] + '</a></li>'
		}
		var id = $box.id + '_list';
		if($director)str += str;
		$box.innerHTML = '<ul id="' + id + '">' + str + '</ul>';
		
		$scrollBox = $.get(id);
	}
	
	this.loadFromElement = function(id){
		var _tid = $.get(id);
		_tid.innerHTML += _tid.innerHTML;
		$scrollBox = _tid;
	}
	
	this.display = function(){
		if(!$box)return;
		$pheight = $lines * $lineHeight;
		$height = _height($box) / 2;
		$box.onmouseover = function(){_stop();}
		$box.onmouseout = function(){_play();}
		_play();
	}
	
	function _play(){
		_scroll();
	}
	
	function _stop(){
		window.clearTimeout($timeout);
	}
	
	function _scroll(){
		window.clearTimeout($timeout);
		$scrollHeight = ($speed + $scrollHeight) % $height;
		$scrollBox.style.top = ((-1) * $scrollHeight) + 'px';
		if($scrollHeight % $pheight == 0 || $timeout === null){
			$timeout = window.setTimeout(function(){_scroll();}, $delay);
		}
		else{
			$timeout = window.setTimeout(function(){_scroll();}, $dtime);
		}
	}
	
	function _height(obj){
		var cld = obj.childNodes;
		var height = 0;
		for(var i = 0; i < cld.length; i++){
			if(cld[i].tagName)height += cld[i].offsetHeight;
		}
		return height;
	}
	
}

function loadSingleImage(arr, id, group){
	var box = $.get(id);
	if(!arr || !box)return;
	var cls = '';
	if(!group){
		arr.length = 1;
	}
	var l = arr.length, ar;
	var _html = '', _fstChild = true;
	for(var i = 0; i < l; i ++){
		if((ar = arr[i]) == false)continue;
		cls = _fstChild ? ' class="firstchild"' : '';
		if(_fstChild){_fstChild = false;}
		_html += '<a' + cls + '' + (ar[1] ? ' href="' + ar[1] + '" target="_blank"' : '') + '><img src="' + ar[0] + '" /></a>';
	}
	box.innerHTML = _html;
}

function loadSingleText(arr, id){
	var box = $.get(id);
	if(!arr || !box)return;
	var str = '';
	for(var i = 0; i < arr.length; i++){
		if(arr[i] && arr[i].length == 3)str += '<li><a href="' + arr[i][1] + '" style="' + arr[i][2] + '">' + arr[i][0] + '</a></li>'
	}
	box.innerHTML = '<ul>' + str + '</ul><div class="blk"></div>';
}
