////////////////////////////////////////////////////////////////////
// LAMPSOFT Website Scripts
////////////////////////////////////////////////////////////////////
var lsWebsite = {};
lsWebsite.languages = {
	"zh-cn": "zh-cn"
};
lsWebsite.counterLoadInterval = 10000; // ms
lsWebsite.counterDataURL = "http://www.LAMPSOFT.cn/api/counter";
lsWebsite.failedCounterCall = 0;
//----------------------------------------------------------
// Cookies Manager
//----------------------------------------------------------
function $cookies(method, name, value, ttl) {
	switch(method){
		case "get":
			var cookieArray = document.cookie.split("; ");
			for(var i=0; i<cookieArray.length; i++) {
				var item = cookieArray[i].split("=");
				if(item[0] == name){
					return item[1];
				}
			}
			return "";
			break;
		case "set":
			if(!ttl) ttl = 30;
			var date = new Date();
			date.setTime(date.getTime() + (ttl * 24*60*60*1000));
			document.cookie = name + '=' + value + '; expires=' + date.toGMTString() + '; path=/';
			break;
		case "del":
			document.cookie = name + '=;expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/';
			break;
	}
}
//----------------------------------------------------------
// Show/Hide element
//----------------------------------------------------------
function $toggle(id, bShow) {
	var obj = document.getElementById(id);
	if(!obj) return;
	if(bShow != undefined){
		if(bShow){
			bStyle = 'block';
		}else{
			bStyle = 'none';
		}
	}else{
//		alert(obj.style.display);
		if(obj.style.display != 'none'){
			bStyle = 'none';
		}else{
			bStyle = 'block';
		}
	}
	obj.style.display = bStyle;
}
function $toggleAll(id_prefix, begin, end){
	var show = 'block';
	var i;
	for(i=begin; i<=end; i++){
		var obj = document.getElementById(id_prefix + i);
		if(!obj) continue;
		if(obj.style.display != 'none'){
			show = 'none';
			break;
		}
	}
	for(i=begin; i<=end; i++){
		var obj = document.getElementById(id_prefix + i);
		if(!obj) continue;
		obj.style.display = show;
	}
}
//------------------------------------------------------------------
// Initialize the page
//------------------------------------------------------------------
lsWebsite.init = function(){
	lsWebsite.checkCurrentPage();
}
//------------------------------------------------------------------
// Check Current Page and highlight it
//------------------------------------------------------------------
lsWebsite.checkCurrentPage = function(){
	var currentPage = document.location.pathname.toString();
//	currentPage = currentPage.substr(currentPage.lastIndexOf("/")+1, currentPage.length);
	if(currentPage.length < 1) return;
	var objMenu = document.getElementById("navMenu");
	if(!objMenu) return;
	var objs = objMenu.getElementsByTagName("A");
	for(var i=0; i<objs.length; i++){
		var page = objs[i].href;
		if(currentPage.length>3 && page.indexOf(currentPage)>0)
{
 objs[i].className = "buttons-active";
return;
}
	}
}
//------------------------------------------------------------------
// Check LAMPSOFT Browser Version
//------------------------------------------------------------------
lsWebsite.checkVersion = function(){
	var currentVersion, obj;
	try{
		currentVersion = external.max_version;
	}catch(e){}
	var result = 0;
	if(!currentVersion)  currentVersion = "0";
	if(currentVersion.indexOf("1.")==0){
		obj = document.getElementById("latestVersion1");
	}else{
		obj = document.getElementById("latestVersion");
	}
	if(!obj) return;
	var latestVersion = obj.innerHTML;
	if(currentVersion != "0"){
		// Compare Version
		latestVer = latestVersion.split(".");
		currentVer = currentVersion.split(".");
		for(var i=latestVer.length - 1; i>-1; i--){
			latestVer[i] = parseInt(latestVer[i], 10);
			currentVer[i] = parseInt(currentVer[i], 10);
			if(latestVer[i]>currentVer[i]){
				result = 1;
			}else if(latestVer[i]<currentVer[i]){
				result = -1;
			}
		}
	}else{
		result = 2;
	}
	// Output result
	obj = document.getElementById("currentVersion");
	if(!obj) return;
	if(result == -1 || result == 0){
		obj.style.color = "#669900";
	}else if(result == 1){
		obj.style.color = "#CC0000";
	}else{
		obj.style.color = "#999999";
	}
	if(result != 2){
		obj.innerHTML = currentVersion;
	}
}
//------------------------------------------------------------------
// Update Counter
//------------------------------------------------------------------
lsWebsite.updateCounter = function(){
	if(lsWebsite.inCounterRequest) return;
	if(lsWebsite.failedCounterCall>10) return;
	// first time only
	if(!lsWebsite.targetCounterNumber){
		lsWebsite.targetCounterNumber = 0;
		lsWebsite.currentCounterNumber = 0;
		lsWebsite.counterDiff = 0;
		// another request
		lsWebsite.intervalLoad = setInterval("lsWebsite.updateCounter()", lsWebsite.counterLoadInterval);
		lsWebsite.intervalTick= setInterval("lsWebsite.counterTick()", 1000);
	}
	// load remote data
	var req;
	try { req = new XMLHttpRequest(); }
	catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { return null; }}
	lsWebsite.startCounter = new Date();
	try{
		req.open("GET", lsWebsite.counterDataURL, true);
		req.onreadystatechange = get_cb(req);
		req.send('');
		lsWebsite.inCounterRequest = true;
	}catch(e){
		lsWebsite.failedCounterCall++;
	}
	req = null;
}
function get_cb(req) {
	return function() {
		if (req.readyState == 4){
			lsWebsite.updateCounterBinder(req);
			req = null;
		}
	};
}
//------------------------------------------------------------------
// Update Counter via Ajax - Binder
//------------------------------------------------------------------
lsWebsite.updateCounterBinder = function(req){
	if(req.status == 200 || req.status==0){
		var cnt = req.responseText;
		cnt = parseInt(cnt.replace(/,/g,''), 10);
		if(isNaN(cnt)) return;
		// first run
		if(lsWebsite.targetCounterNumber == 0){
			lsWebsite.targetCounterNumber = cnt - 10;
			lsWebsite.currentCounterNumber = cnt - 10;
		}
		lsWebsite.inCounterRequest = false;
		lsWebsite.counterTick(cnt);
	}else{
		lsWebsite.failedCounterCall++;
	}
}
//------------------------------------------------------------------
// Write Value to Counter Area
//------------------------------------------------------------------
lsWebsite.writeCounter = function(intNumber){
	intNumber = Math.round(intNumber);
	if(intNumber == 0) return;
	var arrNumber = intNumber.toString().split("");
	arrNumber.reverse();
	var strNumber = [];
	var len = arrNumber.length - 1;
	for(var i=0;i<len;i++){
		strNumber.unshift(arrNumber[i]);
		if(i%3 == 2) strNumber.unshift(",");
	}
	strNumber.unshift(arrNumber[len]);
	strNumber = strNumber.join("");
	var obj = document.getElementById("counternumber");
	if(obj) obj.innerHTML = strNumber;
}
//------------------------------------------------------------------
// Counter Ticking
//------------------------------------------------------------------
lsWebsite.counterTick = function(intNumber){
	if(intNumber){
		// calculate diff
		var diff = intNumber - lsWebsite.targetCounterNumber;
		var timeDiff = lsWebsite.counterLoadInterval + (new Date() - lsWebsite.startCounter);
		diff = diff / timeDiff;
		lsWebsite.counterDiff = diff * 1000;
		lsWebsite.currentCounterNumber = lsWebsite.targetCounterNumber;
		lsWebsite.targetCounterNumber = intNumber;
	}else{
		// just add up with diff
		if(lsWebsite.currentCounterNumber < lsWebsite.targetCounterNumber){
			lsWebsite.currentCounterNumber += lsWebsite.counterDiff;
		}
	}
	lsWebsite.writeCounter(lsWebsite.currentCounterNumber);
}
window.onload = lsWebsite.init;

