﻿////////////////////////////////////////////////////// Declare common instance Begin///////////////////////////////////////////////

var tccInstance = new TCCommon('tccommonInstanceId');

////////////////////////////////////////////////////// Declare common instance End/////////////////////////////////////////////////



/********************************************************************
/	Name: TC.JS.Common
/	Vesion 1.0.0.0
/	Copyright 2007-2008
/	Announcement : 
/		Keeping all the copyright information whenever please.
/		If you are ameliorating anything of this js, sent email to me 
/	please, thanks very much!
/
/	Depend on : 0
/
/											2007-07-29 by Toky.Chi
/											E-Mail: tokyji@gmail.com
*********************************************************************/

function TCCommon(id) 
{
	this.id = id;
}

/********************************************************************
/	Filtering the object-value to string if it is not null.
/
/											2007-07-29 by Toky.Chi
*********************************************************************/
TCCommon.prototype.objFilter = function(tcFilterObj)
{
	if( tcFilterObj )
		return tcFilterObj.toString();
		
	return tcFilterObj;
}

/********************************************************************
/	Remove space from the head and tail ,the same as "Trim()" method.
/
/											2007-07-29 by Toky.Chi
*********************************************************************/
TCCommon.prototype.trim = function(tcStr)
{
    return tcStr.replace(/(^\s*)|(\s*$)/g, "");
}

/********************************************************************
/	Return the innerText of a xml node.
/	For the page-js-feature mostly, but unsuitability the xml node getting.
/
/											2007-07-29 by Toky.Chi
*********************************************************************/
TCCommon.prototype.GetXmlFormatString = function(re, str, nodeNameLength)
{
	var formatStr = str;
	var formatStr = formatStr.match(re);
	if( formatStr != null) 
	{
		formatStr = formatStr.toString();
		formatStr = formatStr.substr(nodeNameLength + 2, formatStr.length - (nodeNameLength + 2) * 2 - 1);
	}
	else
	{
		formatStr = '';
	}
	
	return formatStr ;
}


/********************************************************************
/	Name: TC.JS.Validate
/	Vesion 1.0.0.0
/	Copyright 2007-2008
/	Announcement : 
/		Keeping all the copyright information whenever please.
/		If you are ameliorating anything of this js, sent email to me 
/	please, thanks very much!
/
/	Depend on : TCCommon.js & TCException.xml
/
/											2007-07-28 by Toky.Chi
/											E-Mail: tokyji@gmail.com
*********************************************************************/
var tcReturnObj;
function TCValidate(id) 
{
	this.id = id;
	this.exception = null; // Global
	this.vEmailEx = null;
	this.vIdentityCardEx = null;
	this.vDateEx = null;
}

/********************************************************************
/	Validate email.
/
/											2007-07-28 by Toky.Chi
*********************************************************************/
TCValidate.prototype.vEmail = function(tcValidateObj) 
{
	tcReturnObj = tcValidateObj.match(/^\w+@\w+\./i);
	if(tcReturnObj)
	{
		var remainPart = tcValidateObj.substr(tcReturnObj.toString().length, tcValidateObj.length -1);
		tcReturnObj = remainPart.match(/[^A-Za-z0-9_\.]+/) != null ? null : (tcReturnObj.toString() + remainPart);
		if(tcReturnObj) 
			tcReturnObj = (tcReturnObj.lastIndexOf('.') + 1 == tcReturnObj.length) ? null : tcReturnObj;
	}
	return (tcReturnObj);
}

/********************************************************************
/	Validate Chinese-identityCard.
/
/											2007-07-28 by Toky.Chi
*********************************************************************/
TCValidate.prototype.vIdentityCard = function(tcValidateObj)
{
	tcReturnObj = tcValidateObj.match(/^\d{18}$/);
	if( !tcReturnObj )
	{
		tcReturnObj  = tcValidateObj.toString().match(/^\d{15}$/);	// This judge will invalidation after 2008.		
	}
	return tccInstance.objFilter(tcReturnObj);
}

/********************************************************************
/	Validate date as yyyy-mm-dd.
/
/											2007-07-29 by Toky.Chi
*********************************************************************/
TCValidate.prototype.vDate = function(tcValidateObj)
{
	var re = /^[1-2]\d{3}-(?:0[1-9]|[1-9]|1[0-2])-(?:0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$/;

	if( tcReturnObj = tcValidateObj.match(re)) // format judge. Must first!
	{
		var remainPart = tcReturnObj.toString();
		remainPart = remainPart.substr(5, remainPart.length - 5); 
		if( (remainPart.match(/^(?:04|4|06|6|09|9|11)-31$/) !=null)  || (remainPart.match(/^(?:02|2)-(?:31|30)$/)!=null) )
		{
			tcReturnObj = null;
		}	
		else
		{
			var str = tcValidateObj.substr(0, 4) / 4; 
			if(	(str.toString().match(/\.+/)!=null) && (remainPart.match(/^(?:02|2)-29$/)!=null) ) // Is leap year? The value is 29th?
			{
				tcReturnObj = null;
			}
		}
	}
	return tccInstance.objFilter(tcReturnObj);
}



/********************************************************************
/	Name: TC.JS.RollImage
/	Vesion 1.0.0.0
/	Copyright 2007-2008
/	Announcement : 
/		Keeping all the copyright information whenever please.
/		If you are ameliorating anything of this js, sent email to me 
/	please, thanks very much!
/
/	Depend on : TCCommon.js & RollImage.cs & TCRollimageValueArray Param
/				& TCJSReference.css
/
/	Swithc key : LoadRollImage
/	
/	Limitation : Now, this feature can be used once time only in a page.
/
/											2007-08-02 by Toky.Chi
/											E-Mail: tokyji@gmail.com
*********************************************************************/

var TCRunFrameHandler; //The timeout handler
var TCRunFrameObj; // images content
var speed = 20; // roll speed
var TCRunFrameObjId = 'TCRunFrameObjId';
var screenImgCount = 1; // deal the stop for the images if below 4.
function fixImages(index)
{
    var str = "";
	arrayStr = TCRollimageValueArray[index];
	str += '<a href="' + tccInstance.GetXmlFormatString(urlRe, arrayStr, 3) + '" ';
	str += 'target="' + tccInstance.GetXmlFormatString(targetRe, arrayStr, 6) + '" ';
	str += '><img src="' + tccInstance.GetXmlFormatString(srcRe, arrayStr, 3) + '" ';
	str += 'class="' + tccInstance.GetXmlFormatString(cssRe, arrayStr, 3) + '" /></a>';
	
	return str;
}
function IntRollimage()
{
	TCRunFrameObj = document.getElementById(TCRunFrameObjId ); 
	if( TCRunFrameObj )
	{
		if( TCRollimageValueArray[0] != null && TCRollimageValueArray[0] != "")
		{
			var str = '<table><tr><td id="TCSource"><div style="white-space:nowrap;">';
			var len = TCRollimageValueArray.length;
			var i;
			var arrayStr;
			for( i=0; i < len; i++)
			{
				str += fixImages(i);
			}
			
			if( len < 4)
			{
			    if( len == 3)
			    {
			        str += fixImages(1);
			    }
			    else if( len == 2)
			    {
		            str += fixImages(0);
		            str += fixImages(1);			    
			    }
			    else if( len == 1)
			    {
			        var temp = fixImages(0);
			        str += temp + temp + temp;
			    }
			}
			
			str += '</div></td><td id="TCRunFrameCopy"></td></tr></table>';	
			TCRunFrameObj.innerHTML = str;
			TCRunFrameCopy.innerHTML = TCSource.innerHTML;
			TCRunFrameHandler= setInterval(Marquee,speed);
		}

		TCRunFrameObj.onmouseover = function() {clearInterval(TCRunFrameHandler);}
		TCRunFrameObj.onmouseout = function() {TCRunFrameHandler=setInterval(Marquee,speed);}
	}
	else
	{
		setTimeout('IntRollimage()', 1000);
	}
}
function Marquee()
{	
	if( TCRunFrameObj)
	{
		TCRunFrameObj.scrollLeft = TCRunFrameCopy.offsetWidth - TCRunFrameObj.scrollLeft <=0 ? TCRunFrameObj.scrollLeft-TCSource.offsetWidth : TCRunFrameObj.scrollLeft + 1;
	}
}
function LoadRollImage()
{
	IntRollimage();
}




/********************************************************************
/	Name: TC.JS.SwitchImage
/	Vesion 1.0.0.0
/	Copyright 2007-2008
/	Announcement : 
/		Keeping all the copyright information whenever please.
/		If you are ameliorating anything of this js, sent email to me 
/	please, thanks very much!
/
/	Depend on : TCCommon.js, SwitchImage.cs, switchImageArray Param
/				& TCJSReference.css
/
/	Swithc key : LoadSwitchImage
/	
/	Limitation : Now, this feature can be used once time only in a page.
/
/											2007-08-02 by Toky.Chi
/											E-Mail: tokyji@gmail.com
*********************************************************************/

var switchIndex = 1; //img.index
var switchTotal = 3; // img.total
var imgObjId = 'imgObjId';
var imgObj;
var imgFrameObjId = 'imgFrameObjId';
var imgFrameObj;
var imgArray = new Array();
var titleFrameObjId = 'titleFrameObjId';
var titleFrameObj;
var titleArray = new Array();	
var urlArray= new Array();
var switchTimeout;
var srcRe = /\<src\>\S*\<\/src\>/;
var titleRe = /\<title\>\S*\<\/title\>/;
var urlRe = /\<url\>\S*\<\/url\>/;
var targetRe = /\<target\>\S*\<\/target\>/;
var cssRe = /\<css\>\S*\<\/css\>/;


var mFrameObj;
var mFrameObjId = 'mFrame';
function play(switchIndex)
{
	if( imgFrameObj && imgObj && titleFrameObj)
	{	
		(switchIndex >= switchTotal) ? switchIndex=0 : switchIndex++;
		
		imgObj.filters[0].apply(); 
		valueInit(switchIndex);
		imgObj.filters[0].play(); 
		switchTimeout=setTimeout("play(" + switchIndex + ")",8000);
	}
	else
	{
		imgFrameObj = document.getElementById(imgFrameObjId);
		imgFrameObj.innerHTML = "<img alt='0' title='' onclick='imageOnclick()' id='" + imgObjId + "' name='" + imgObjId + "' src='" + imgArray[0] + "' style='filter:blendTrans(Duration=5);margin:0 0 0 0;width:277px;height:180px;cursor:pointer;' />";
		imgObj = document.getElementById(imgObjId);
		titleFrameObj = document.getElementById(titleFrameObjId);
		titleFrameObj.innerHTML = titleArray[0];		
		switchTimeout=setTimeout("play(0)",3000);
	}
}
function ShowNavBtn()
{
	var t = document.getElementById('t1');
	
	if( t)
	{
		t.style.display = 'block';
	}
	else
	{
		setTimeout("open()", 1000);
	}
}
function OnloadFrame()
{
	mFrameObj = document.getElementById(mFrameObjId);
	if( mFrameObj )
	{
		if( switchImageArray[0] != null && switchImageArray[0] != "")
		{

			var str = "<div class='MainDiv'><table class='SwitchNavigation'  id='t1'>";
				str += "<tr><td><table class='SwitchNavBtn'><tr><td id='navBtn0' onclick='navBtnClick(0)'>1</td>";
				str += "<td id='navBtn1' onclick='navBtnClick(1)'>2</td>";
				str += "<td id='navBtn2' onclick='navBtnClick(2)'>3</td>";
				str += "<td id='navBtn3' onclick='navBtnClick(3)'>4</td>";
				str += "</tr></table></td></tr>";
				str += "</table><table><tr><td id='imgFrameObjId'></td></tr></table></div><table><tr><td style='height:15px;'></td></tr></table>"
				str += "<div class='TitleFrameDiv' id='titleFrameObjId'></div>";
		
			mFrame.innerHTML = str;

			LoadValue();
			play(0); // Play pictures
			ShowNavBtn(); // bulid pictures navigation button
		}
	}
	else
	{
		setTimeout("OnloadFrame()", 1000);
	}
}
function imageOnclick()
{
	window.open(urlArray[imgObj.alt]);
}
function navBtnClick(numIndex)
{
	if( switchTimeout)
	{
		window.clearTimeout(switchTimeout);
		valueInit(numIndex);
		switchTimeout=setTimeout("play("+numIndex+")",4000);
	}
}
function valueInit(numIndex)
{
	imgObj.src = imgArray[numIndex];
	imgObj.alt = numIndex;
	titleFrameObj.innerHTML = titleArray[numIndex];
}
function LoadValue()
{
	var count = switchImageArray.length;
	var icount;
	var str;
	for( icount = 0; icount < count; icount++)
	{
		str = switchImageArray[icount];
		imgArray[icount] = tccInstance.GetXmlFormatString(srcRe, str, 3);//str.substr(0, str.indexOf('|'));
		titleArray[icount] = tccInstance.GetXmlFormatString(titleRe, str, 5);//str.substring(str.lastIndexOf('|')+1, str.length);
		urlArray[icount] = tccInstance.GetXmlFormatString(urlRe, str, 3);//str.substring(str.indexOf('|')+1,str.lastIndexOf('|'));
	}
}

function LoadSwitchImage()
{
	OnloadFrame();	
}



/********************************************************************
/	Name: TC.JS.SwingImage
/	Vesion 1.0.0.0
/	Copyright 2007-2008
/	Announcement : 
/		Keeping all the copyright information whenever please.
/		If you are ameliorating anything of this js, sent email to me 
/	please, thanks very much!
/
/	Depend on : TCCommon.js, SwitchImage.cs, switchImageArray Param
/				& TCJSReference.css
/
/	Swithc key : LoadSwingImage
/	
/	Limitation : Now, this feature can be used once time only in a page.
/
/											2007-08-02 by Toky.Chi
/											E-Mail: tokyji@gmail.com
*********************************************************************/

var xPos = 20;
var yPos = 0;//document.body.clientHeight;
var step = 1;
var delay = 5;
var height = 0;
var Hoffset = 0;
var Woffset = 0;
var yon = 0;
var xon = 0;
var pause = true;
var swingImageInterval;
var swingImgObj;
var swingImgObjId = 'imgDiv';
//imgDiv.style.top = yPos;
function changePos() 
{
	if( swingImgObj)
	{
		width = document.body.clientWidth;
		height = document.body.clientHeight;
		Hoffset = swingImgObj.offsetHeight;
		Woffset = swingImgObj.offsetWidth;
		swingImgObj.style.left = xPos + document.body.scrollLeft;
		swingImgObj.style.top = yPos + document.body.scrollTop;
		if (yon) {yPos = yPos + step;} else { yPos = yPos - step;}
		if (yPos < 0) {yon = 1;yPos = 0;}
		if (yPos >= (height - Hoffset)) {yon = 0;yPos = (height - Hoffset);}
		if (xon) {xPos = xPos + step;} else {xPos = xPos - step;}
		if (xPos < 0) {xon = 1;xPos = 0;}
		if (xPos >= (width - Woffset)) {xon = 0;xPos = (width - Woffset);}
	}
}

function onmouseoverTSwing()
{
	if( swingImageInterval)
	{
		clearInterval(swingImageInterval);
	}
}

function onmouseoutTSwing()
{
	swingImgObj = document.getElementById(swingImgObjId);
	if( swingImgObj  && yPos)
	{
		swingImgObj.style.top = yPos;
		swingImgObj.visibility = "visible";
		swingImageInterval = setInterval('changePos()', delay);
	}
}

function TSwingImage() 
{
	swingImgObj = document.getElementById(swingImgObjId);
	if( swingImgObj)
	{
		yPos = document.body.clientHeight;
		swingImgObj.style.top = yPos;
		swingImgObj.visibility = "visible";
		swingImageInterval = setInterval('changePos()', delay);
	}
}

function LoadSwingImage()
{
	TSwingImage();
}

