//Array Contains function
Array.prototype.contains = function (element) 
{
	for (var i = 0; i < this.length; i++) 
	{
		if (this[i] == element) 
		{
			return true;
		}
	}
	return false;
}

//getElementByClass function
document.getElementByClass = function (classname) 
{
	var elements = [];
	var alltags = document.all ? document.all : document.getElementsByTagName("*")
	for (var i=0; i<alltags.length; i++) 
	{
		var classNames = alltags[i].className.split(" ");
		if (classNames.contains(classname))
			elements[elements.length] = alltags[i];
   }
   return elements;
}

//XMLHttpRequest
var xmlHttp = new Array();
var textInclude = new Array();
function createXMLHttpRequest(targetDiv) 
{
    if (window.XMLHttpRequest) 
	{
        xmlHttp[targetDiv] = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) 
	{
        xmlHttp[targetDiv] = new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function loadData(targetSource,targetDiv) 
{
    createXMLHttpRequest(targetDiv);	
    xmlHttp[targetDiv].onreadystatechange = function() {handleStateChange(targetDiv)};
    xmlHttp[targetDiv].open("GET", targetSource);
    xmlHttp[targetDiv].send(null);
}

function handleStateChange(targetDiv) 
{
	if (xmlHttp[targetDiv].readyState == 4) 
	{
    	if (xmlHttp[targetDiv].status == 200) 
		{	  
			textInclude[targetDiv]=xmlHttp[targetDiv].responseText;
			document.getElementById(targetDiv).innerHTML=textInclude[targetDiv];
     	}
	}
}

//add & remove event Listener
function addListener(element,e,fn)
{
     if(element.addEventListener)
	 {
          element.addEventListener(e,fn,false);
     } 
	 else 
	 {
          element.attachEvent("on" + e,fn);
     }
}

function removeListener(element,e,fn)
{
     if(element.addEventListener)
	 {
          element.removeEventListener(e,fn,false);
     } 
	 else 
	 {
          element.detachEvent("on" + e,fn);
     }
}

//get Object position
function getPos(id) 
{
	var object = document.getElementById(id); 
	var objTop = 0;
	var objLeft = 0;
	while(object !=document.body)
	{
		objTop += object.offsetTop;
		objLeft += object.offsetLeft;
		object = object.offsetParent;
	}
	return [objTop,objLeft];
}

//Show & hide Layer
function showLayer(id,layerId,positionToIdTop,positionToIdLeft)
{
	layerPosition = getPos(id);
	layerObject = document.getElementById(layerId);
	layerObject.style.top = layerPosition[0] + positionToIdTop;
	layerObject.style.left = layerPosition[1] + positionToIdLeft;
	layerObject.style.visibility = 'visible';
}

function hiddenLayer(layerId)
{
	layerObject = document.getElementById(layerId);
	layerObject.innerHTML = '';
	layerObject.style.visibility = 'hidden';
}

function timeoutHiddenlayer(layerId)
{
	timeoutEvent = setTimeout('hiddenLayer(\''+layerId+'\')',600);
}

function clearLayerTimeout()
{
	if(window.timeoutEvent !== undefined)
	{
		clearTimeout(timeoutEvent);
	}
}

//include JS
function include(jsFile)
{
	document.write('<script LANGUAGE="javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

//Quick stock Info
function callStockInfo(evt)
{
	evtElement = evt.srcElement || evt.target;
	id = evtElement.id;
	stockCodeAndRegion = document.getElementById(id).innerHTML;
	stockCodeAndRegionArr = stockCodeAndRegion.split(".");	
	code = stockCodeAndRegionArr[0];
	region = stockCodeAndRegionArr[1];
	loadData('../ssi/stock_info.php?stockcode='+code+'&region='+region,'stockInfo');
	showLayer(id,'stockInfo',-4,-4);
}

function addCallStockInfo()
{
	var count = 1;
	var idName = 'quickStockId';
	var className = 'titleStockCode';
	var stockClassArr = new Array();
	
	if(!document.getElementById('stockInfo'))
	{
		var bodyTag = document.body;
		var stockInfoDivElement = document.createElement('div');
		
		stockInfoDivElement.setAttribute('id','stockInfo');
		bodyTag.appendChild(stockInfoDivElement);
		addListener(document.getElementById('stockInfo'),'mouseout',function()
		{
			timeoutHiddenlayer('stockInfo');
		});
		addListener(document.getElementById('stockInfo'),'mouseover',function()
		{
			clearLayerTimeout();
		});
	}
	if(!document.getElementById(idName+count))
	{
		stockClassArr = document.getElementByClass(className)
		for(i = 0; i < stockClassArr.length ; i++)
		{
			stockClassArr[i].setAttribute('id',idName+(i+1));
		}
	}
	
	while(document.getElementById(idName+count))
	{
		addListener(document.getElementById(idName+count),'mouseover',function(e)
		{
			var evt = window.event || e;
			callStockInfo(evt);
		});
		count++;
	}
}

function showEventDetail(evt)
{
	evtElement = evt.srcElement || evt.target;
	id = evtElement.id;
	lessId = id.replace(/_detail/,'_less');
	detailAreaId = id.replace(/_detail/,'');
	
	document.getElementById(detailAreaId).style.display = 'block';
	document.getElementById(lessId).style.display = 'block';
	document.getElementById(id).style.display = 'none';
}

function hideEventDetail(evt)
{
	evtElement = evt.srcElement || evt.target;
	id = evtElement.id;
	detailId = id.replace(/_less/,'_detail');
	detailAreaId = id.replace(/_less/,'');
	
	document.getElementById(detailAreaId).style.display = 'none';
	document.getElementById(detailId).style.display = 'block';
	document.getElementById(id).style.display = 'none';
}

function addEventDetail()
{
	var count = 1;
	var idName = 'eventHiddenContent';
	var className = 'eventHiddenContent';
	
	if(mainSection=="events")
	{
		eventDetailClassArr = document.getElementByClass(className)
		if(eventDetailClassArr.length > 0)
		{
			for(i = 0; i < eventDetailClassArr.length ; i++)
			{
				eventDetailClassArr[i].setAttribute('id',idName+(i+1));
			}
		}
		
		eventDetailIconArr = document.getElementByClass(className+'_detail')
		if(eventDetailIconArr.length > 0)
		{
			for(i = 0; i < eventDetailIconArr.length ; i++)
			{
				eventDetailIconArr[i].setAttribute('id',idName+(i+1)+'_detail');
				addListener(eventDetailIconArr[i],'click',function(e)
				{
					var evt = window.event || e;
					showEventDetail(evt);
				});
			}
		}
		
		eventLessIconArr = document.getElementByClass(className+'_less')
		if(eventLessIconArr.length > 0)
		{
			for(i = 0; i < eventLessIconArr.length ; i++)
			{
				eventLessIconArr[i].setAttribute('id',idName+(i+1)+'_less');
				addListener(eventLessIconArr[i],'click',function(e)
				{
					var evt = window.event || e;
					hideEventDetail(evt);
				});
			}
		}
	}
}

//Stcok Chart Popup Window
function stcokChartPopup(code)
{
	window.open('http://www.irasia.com/stocks/getchart.php?number='+code,'','scrollbars=no,width=355,height=300,left=100,top=100');
}
function cstcokChartPopup(code)
{
	window.open('http://www.irasia.com/stocks/cgetchart.php?number='+code,'','scrollbars=no,width=355,height=300,left=100,top=100');
}
// Detail Search Reset
function detailSearchReset()
{
	//var answer = confirm("Reset ?")
	var answer = true;
	if(answer)
	{
		document.getElementById('detailSearch').reset();
		//document.getElementById('searchCompName').className = 'searchFieldBlur';
		//document.getElementById('searchStockCode').className = 'searchFieldBlur';
		$("#searchCompName").DefaultValue("Company Name");
		$("#searchStockCode").DefaultValue("Stock Code");
	}
}

function cdetailSearchReset()
{
	//var answer = confirm("Reset ?")
	var answer = true;
	if(answer)
	{
		document.getElementById('detailSearch').reset();
		//document.getElementById('searchCompName').className = 'searchFieldBlur';
		//document.getElementById('searchStockCode').className = 'searchFieldBlur';
		$("#searchCompName").DefaultValue("公司名稱");
		$("#searchStockCode").DefaultValue("股票代號");
	}
}

// Detail Search Submit
function detailSearchSubmit()
{
	var answer = confirm("Submit ?")
	if(answer)
	{
		document.getElementById('detailSearch').submit();
	}
}


function getParameterByName( name )
{
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS = "[\\?&]"+name+"=([^&#]*)";
	var regex = new RegExp( regexS );
	var results = regex.exec( window.location.href );
	if( results == null )
		return "";
	else
		return results[1].replace("+", " ");
}

function isNumeric(input)
{
	return (input - 0) == input && input.length > 0;
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

function URLDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}



//include other Js
include('/js/AC_RunActiveContent.js');
include('/js/jsScroller.js');
include('/js/calendar.js');
include('/js/inputeffect.js');
include('/js/input_quickresult.js');

include('/js/jquery-1.4.2.min.js');
include('/js/jquery-ui-1.8.1.custom.min.js');

include('/js/pulldown.js');

include('/js/jquery.form-defaults.js');
include('/js/jquery.urlEncode.js');


