﻿	if (typeof(rdcjs) == "undefined")
		_rdc = rdcjs = {};
	
	
	
	_rdc.Timer = function(){
		this.obj = (arguments.length)?arguments[0]:window;
		return this;
	}

	_rdc.Timer.prototype.setInterval = function(func, msec){
		var i = _rdc.Timer.getNew();
		var t = _rdc.Timer.buildCall(this.obj, i, arguments);
		_rdc.Timer.set[i].timer = window.setInterval(t,msec);
		return i;
		}
		_rdc.Timer.prototype.setTimeout = function(func, msec){
		var i = _rdc.Timer.getNew();
		_rdc.Timer.buildCall(this.obj, i, arguments);
		_rdc.Timer.set[i].timer = window.setTimeout("_rdc.Timer.callOnce("+i+");",msec);
		return i;
	}

	_rdc.Timer.prototype.clearInterval = function(i){
		if(!_rdc.Timer.set[i]) return;
		window.clearInterval(_rdc.Timer.set[i].timer);
		_rdc.Timer.set[i] = null;
		}
		_rdc.Timer.prototype.clearTimeout = function(i){
		if(!_rdc.Timer.set[i]) return;
		window.clearTimeout(_rdc.Timer.set[i].timer);
		_rdc.Timer.set[i] = null;
	}

	_rdc.Timer.set = new Array();
	_rdc.Timer.buildCall = function(obj, i, args){
		var t = "";
		_rdc.Timer.set[i] = new Array();
		if(obj != window){
			_rdc.Timer.set[i].obj = obj;
			t = "_rdc.Timer.set["+i+"].obj.";
		}
		t += args[0]+"(";
		if(args.length > 2){
			_rdc.Timer.set[i][0] = args[2];
			t += "_rdc.Timer.set["+i+"][0]";
			for(var j=1; (j+2)<args.length; j++){
				_rdc.Timer.set[i][j] = args[j+2];
				t += ", _rdc.Timer.set["+i+"]["+j+"]";
			}
		}
		t += ");";
		_rdc.Timer.set[i].call = t;
		return t;
	}

	_rdc.Timer.callOnce = function(i){
		if(!_rdc.Timer.set[i]) return;
		eval(_rdc.Timer.set[i].call);
		_rdc.Timer.set[i] = null;
	}
	_rdc.Timer.getNew = function(){
		var i = 0;
		while(_rdc.Timer.set[i]) i++;
		return i;
	}



	_rdc.ASImageShowHelper = function(){
		
	};

	_rdc.ASImageShowHelper.addEvent = function(oTarget, sEventType, fnHandler) {
		if (oTarget.addEventListener) {
			oTarget.addEventListener(sEventType, fnHandler, false);
		} else if (oTarget.attachEvent) {
			oTarget.attachEvent("on" + sEventType, fnHandler);
		} else {
			oTarget["on" + sEventType] = fnHandler;
		}
	};
	
	_rdc.ASImageShowHelper.getElementsByClassName = function(className, tag, elm){
		var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
		var tag = tag || "*";
		var elm = elm || document;
		var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
		var returnElements = [];
		var current;
		var length = elements.length;
		for(var i=0; i<length; i++){
			current = elements[i];
			if(testClass.test(current.className)){
				returnElements.push(current);
			}
		}
		return returnElements;
	};
	
		//bind function to object
	_rdc.ASImageShowHelper.Bind = function(object, fun) {
		return function() {
			return fun.apply(object, arguments);
		}
	}

	//bind function as event listen to object
	_rdc.ASImageShowHelper.BindAsEventListener = function(object, fun) {
		return function(event) {
			return fun.call(object, (event || window.event));
		}
	}

		
	_rdc.ASImageShow= function(){
		this.__tabClickHandler = _rdc.ASImageShowHelper.BindAsEventListener(this, this._tabClickHandler);
		this.__pagerClickHandler = _rdc.ASImageShowHelper.BindAsEventListener(this, this._pagerClickHandler);
		this.__startInterval = _rdc.ASImageShowHelper.BindAsEventListener(this, this._startInterval);
		this.__stopInterval = _rdc.ASImageShowHelper.BindAsEventListener(this, this._stopInterval);
		
		this.contents = new Array();
		this.currentIndex = 0;
		
		this.timer = new _rdc.Timer( this );
		this.currentTimer = 0;
		this.intervalTime = 5000;
	}
	
	
	_rdc.ASImageShow.prototype={
		setup : function( initialIndex, contentsArray, intervalTime ){
			var tabs = _rdc.ASImageShowHelper.getElementsByClassName("image-show-tab");
			for( var i=0; i< tabs.length; i++ ){
				_rdc.ASImageShowHelper.addEvent( tabs[i], "click", this.__tabClickHandler );
				_rdc.ASImageShowHelper.addEvent( tabs[i], "mouseover", this.__tabClickHandler );
				_rdc.ASImageShowHelper.addEvent( tabs[i], "mouseover", this.__stopInterval );
				_rdc.ASImageShowHelper.addEvent( tabs[i], "mouseout", this.__startInterval );
			}
			
			var pagers = _rdc.ASImageShowHelper.getElementsByClassName("image-show-pager");
			for( var i=0; i< pagers.length; i++ ){
				_rdc.ASImageShowHelper.addEvent( pagers[i], "click", this.__pagerClickHandler );
				_rdc.ASImageShowHelper.addEvent( pagers[i], "mouseover", this.__pagerClickHandler );
				_rdc.ASImageShowHelper.addEvent( pagers[i], "mouseover", this.__stopInterval );
				_rdc.ASImageShowHelper.addEvent( pagers[i], "mouseout", this.__startInterval );
			}
			
			this.contents = contentsArray;
			this.currentIndex = initialIndex;
			
			if( intervalTime )
				this.intervalTime = intervalTime;
			
			this._startInterval();
		}
		,
		_startInterval : function(){
			this.currentTimer = this.timer.setInterval( "_switchContent" , this.intervalTime );
		}
		,
		_stopInterval : function(){
			this.timer.clearInterval(this.currentTimer);
		}
		,
		_tabClickHandler : function(e){
			var evt = e || event;
			var elem = evt.target || evt.srcElement;
			
			//this._clearTabStyle();
			//elem.className = "image-show-tab image-show-tab-current";
			var targetId = elem.getAttribute("imageShowRef");
			
			this._switchContent(targetId);
		}
		,
		_pagerClickHandler : function(e){
			var evt = e || event;
			var elem = evt.target || evt.srcElement;
			
			//this._clearPagerStyle();
			//elem.className = "image-show-pager image-show-pager-current";
			
			var targetId = elem.getAttribute("imageShowRef");
			this._switchContent(targetId);
			
			//this._setPagerStyle(targetId);
		}
		,
		_setTabAndPagerStyle :function(refId){
			this._setTabStyle(refId);
			this._setPagerStyle(refId);
		}
		,
		_setTabStyle : function(refId){
			var tabs = _rdc.ASImageShowHelper.getElementsByClassName("image-show-tab");
			for( var i=0; i< tabs.length; i++ ){
				var ref = tabs[i].getAttribute("imageShowRef");
				if( ref == refId )
					tabs[i].className = "a1 image-show-tab image-show-tab-current";
				else
					tabs[i].className = "a1 image-show-tab";
			}
		}
		,
		_setPagerStyle : function( refId ){
			var pagers = _rdc.ASImageShowHelper.getElementsByClassName("image-show-pager");
			for( var i=0; i< pagers.length; i++ ){
				var ref = pagers[i].getAttribute("imageShowRef");
				if( ref == refId )
					pagers[i].className = "image-show-pager image-show-pager-current";
				else	
					pagers[i].className = "image-show-pager";
			}
		}
		,
		_switchContent : function( imageShowRefId ){
			//console.debug("in switch")
			if( imageShowRefId )
			{
				this._performSwitch( imageShowRefId );
			}
			else
			{
				//console.debug(this.currentIndex);
				//auto play
				if( this.currentIndex < this.contents.length )
				{
				
					this._performSwitch( this.contents[this.currentIndex] );
					this.currentIndex ++;
					
					if( this.currentIndex >= this.contents.length )
						this.currentIndex = 0;
					
				}
				else
				{
					this._performSwitch( this.contents[this.currentIndex] );
				}
			}
		}
		,
		_performSwitch : function( imageShowRefId ){
			
			//console.debug(imageShowRefId);
					
			this._clearContentShow();
			var obj = document.getElementById( imageShowRefId );
			obj.style.display = "block";
			
			this._setTabAndPagerStyle( imageShowRefId );
		}
		,
		_clearContentShow : function(){
			var contents = _rdc.ASImageShowHelper.getElementsByClassName("image-show-content");
			for( var i=0; i< contents.length; i++ ){
				contents[i].style.display = "none";
			}
		}
	}
	
