var boxID = 1;
var refreshAll = false;
var refreshGroup = '';
var refreshOrder = '';
var refreshCat = '';
var curr_cat = 1;
var curr_order = 1;
var sortNum = 0;
var maxPages = 1;
var max_rows = 8;

// ====================
// ====== COMIC ======
// ====================
function setMaxPage(maxPage) {
	maxPages = maxPage;
}
function refresh_comic_title(all , order , page , cat) {	
	refreshGroup = 'comic';
	if (all == true) {		
		refreshAll = true;
		if (order) {
			refreshOrder = order;
		} else {
			sortNum = 1;
		}
		if (cat) {
			refreshCat = cat;
		}
	} else {
		refreshAll = false;
	}
	
	http = GetXmlHttpObject();	
	if (!http) {
		alert ('Browser does not support HTTP Request');
		return;
	}	
	
	url = './Components/cat_box/box.php?boxID='+boxID;
	
	if (page) {	
		document.getElementById('box'+boxID+'page').value = page;
	}
	if (order) {	
		url += '&order=' + order;
		document.getElementById('box'+boxID+'order').value = order;		
	}
	if (cat) {	
		url += '&cat=' + cat;		
		document.getElementById('box'+boxID+'cat').value = cat;
		curr_cat = cat;		
	}
	
	url += '&page_num=' + document.getElementById('box'+boxID+'page').value;
	url += '&max_rows=' + max_rows;	
	url += '&rand=' + getCurrMsec();
	//alert(url);
	//document.getElementById('box'+boxID).innerHTML  = 'loading...';
	http.onreadystatechange = handleGetBox;
	http.open('GET',url,true);
	http.send(null);
}
function handleGetBox() { 
	if (http.readyState==4 || http.readyState=='complete') { 
		//document.getElementById('debug').innerHTML =tempID;
		var tempID;
		var resArray = http.responseText.split('|');
		if (resArray[1]) {
			tempID = resArray[0];
			res = resArray[1];
		} else {
			res = http.responseText;
		}	
			//alert(tempID);
		document.getElementById('box' + tempID).innerHTML = res;
		
		if (sortNum != 0) {	
			var num_sort_field = getElementsByClassName(refreshGroup+'Sort', document.getElementById('box' + tempID)).length;			
			for (var i=1; i<=num_sort_field; i++) {
				document.getElementById(refreshGroup+'Sort'+i).className = refreshGroup+'Sort '+refreshGroup+'Sort_inactive';
			}
			document.getElementById(refreshGroup+'Sort'+sortNum).className = refreshGroup+'Sort '+refreshGroup+'Sort_active';
		}
		if (refreshGroup=='comic') {
			toggle_page('comicLB', 'comicImage', 1);
			for (var i=1; i<=max_rows; i++) {
				loadRate(i, '');
			}
		}
	} 
}
function comic_gotoPage(page , box) {
	boxID = box;
	box = "box" + boxID;
	document.getElementById(box + "page").value = parseInt(page) + parseInt(document.getElementById(box + "page").value);
	refresh_comic_title(false , document.getElementById(box+"order").value, '', refreshCat);
}
function comic_change_cat(cat_id) {		
	sortNum = 0;
	//document.getElementById("comic_debug").innerHTML = "comic_change_cat: "+cat_id;
	//tab_switch('comicCat', 3, cat_id);	
	//tab_switch('comicCat', document.getElementById("box" + tempID), cat_id);
	tab_switch('comicCat', curr_cat, cat_id);
	if (cat_id == 0) {
		set_tab('comicCat', 0, 1);
	} else {
		set_tab('comicCat', 0, 0);
	}
	refresh_comic_title(true , 'id' , 1 , cat_id);	
}
function comic_change_sort(thisId) {	
	var sortOrder = '';
	switch (thisId) {
		case 1:
			sortOrder = 'id';
			break;
		case 2:
			sortOrder = 'title';
			break;
		case 3:
			sortOrder = 'rate';
			break;
		case 4:
			sortOrder = 'comment_date';
			break;
	}
	//boxID=1;
	sortNum = thisId;
	refresh_comic_title(true , sortOrder , 1 , curr_cat);//document.getElementById('box1cat').value);	
	
}
function tab_switch(prefix, curr_id, target_id) {	
	//document.getElementById("comic_debug").innerHTML += "prefix: "+prefix+" curr_id: "+curr_id+" target_id: "+target_id;
	/*tab_id = parseInt(tab_id);	
	for (var i=1; i<=parseInt(tab_max); i++) {
		if (i != tab_id) {
			document.getElementById(tab_id_prefix+i).className = tab_id_prefix+"_inactive";
		}
	}
	document.getElementById(tab_id_prefix+tab_id).className = tab_id_prefix+"_active";*/	
	//getElementsByClassName(prefix + '_active', node)[0].className = prefix + '_inactive';

	curr_id = parseInt(curr_id);		
	while (document.getElementById(prefix + curr_id) == undefined) {				
		curr_id -= 1;		
	}	
	document.getElementById(prefix + curr_id).className = prefix + '_inactive';	
		
	target_id = parseInt(target_id);		
	while (document.getElementById(prefix + target_id) == undefined) {				
		target_id -= 1;		
	}	
	document.getElementById(prefix + target_id).className = prefix + '_active';	
}
function set_tab(prefix, id, active) {		
	if (active) {
		document.getElementById(prefix + id).className = prefix + '_active';
	} else {
		document.getElementById(prefix + id).className = prefix + '_inactive';
	}
}
function comic_change_content(thisId) {	
	if (comicTimer != null){
		clearInterval(comicTimer);
	}
	comicId = thisId;

	http = GetXmlHttpObject();
	if (!http) {
		alert ("Browser does not support HTTP Request");
		return;
	} 

	 setPreloadPage();
	if ( document.getElementById("quiz") != null){
		document.getElementById("quiz").innerHTML = "";
	 }
	
	var url = 'loadComic_1024.php?';
	if (screen.width >= 1024)
		url += 'screen=1024&';
	url = url+'id='+comicId+'&rand='+getCurrMsec();

	http.onreadystatechange = handleChangeComic;
	http.open('GET',url,true);
	http.send(null);	
} 

function handleChangeComic() { 
	if (http.readyState==4 || http.readyState=="complete") {		
		if (http.responseText == "0") {
			document.getElementById("comicMsgVar").innerHTML="Error loading comics!";
		} else {			
			//var debug_index = 1;
			var res_array = http.responseText.split("|");			
			var num = new Number(res_array[0]);
			
			//alert("handleChangeComic: "+debug_index++);
			document.getElementById("comicImage").innerHTML=res_array[1];		
			//alert("handleChangeComic: "+debug_index++);
			toggle_page('comicLB', 'comicImage', 2);								
			comicId = '';
			
			//alert("handleChangeComic: "+debug_index++);
			loadRate('0', num.toFixed(1));
			star.stop = 1;
			star.rate = 1;	
			
			//alert("handleChangeComic: "+debug_index++);
			//alert("comicCat curr_cat: "+curr_cat+" res_array[3]: "+res_array[3]);
			tab_switch('comicCat', curr_cat, res_array[3]);
			curr_cat = res_array[3];			
			
			//alert("handleChangeComic: "+debug_index++);
			getQuiz('comic', document.getElementById('comicId').innerHTML);
			//alert("handleChangeComic: "+debug_index++);
			ajaxinclude('Components/comment_box/box.php?type=comic&typeid='+res_array[2]+'&quantity=5&submit=true&rand='+getCurrMsec(), "comic_comment_content");
			//alert("comic typeid: "+res_array[2]);			
			document.getElementById('comic_issue').value = document.getElementById('comicId').innerHTML;
			
		}
	} 
} 

// =======================
// ======= ACTIVITY ======
// =======================
function activity_change_content(thisId) {	
	var myId;
	//window.alert(thisId);
	setPreloadPage()
	if(thisId == ""){
	//	myId = activitySelect.value;
	}else{
	//	activitySelect.value = thisId;
		myId = thisId;
	}
	http = GetXmlHttpObject();
	
	if (!http)
	{
		alert ("Browser does not support HTTP Request")
		return
	} 
	var url="getActivity.php?rand="+getCurrMsec()+"&id="+myId;
	//alert("act: "+url);
	if(debug==1){
		url+="&debug=1"
	}
	http.onreadystatechange=handleChangeActivity;
	http.open("GET",url,true);
	http.send(null);
}
function refresh_activity_title(all , order , page) {
	refreshGroup = "activity"
	if (all == true) {		
		refreshAll = true;
		if (order) {
			refreshOrder = order;
		} else {
			sortNum = 2;
		}		
	} else {
		refreshAll = false;
	}
	
	http = GetXmlHttpObject();
	
	if (!http) {
		alert ("Browser does not support HTTP Request")
		return
	} 
	
	http.onreadystatechange = handleGetBox;
	url = "./Components/cat_box/box.php?table=activity&boxID="+boxID+"&";
	if (page) {
		document.getElementById("box"+boxID+"page").value = page;
	}
	if (order) {
		url = url + "order=" + order + "&";
		document.getElementById("box"+boxID+"order").value = order;
	}
	
	url += "page_num=" + document.getElementById("box"+boxID+"page").value;
	url += "&rand="+getCurrMsec();
	//document.getElementById("box"+boxID).innerHTML  = "loading...";
	http.open("GET",url,true)
	http.send(null);	
}
function activity_gotoPage(page , box) {
	boxID = box;
	box = "box" + boxID;
	document.getElementById(box + "page").value = parseInt(page) + parseInt(document.getElementById(box + "page").value);	
	refresh_activity_title(false);
}
function activity_change_sort(thisId) {	
	var sortOrder = 0;
	switch (thisId) {
		case 1:
			sortOrder = "title";
			break;
		case 2:
			sortOrder = "date";
			break;
		case 3:
			sortOrder = "comment_date";
			break;
	}
	boxID=1;
	refresh_activity_title(true , sortOrder , 1);	
	sortNum = thisId;
}


// ===============================
// ====== TEACHER SECTION ======
// ===============================
function updateTeacherSection(comicID) {
	http = GetXmlHttpObject();
	if (!http) {
		alert ("Browser does not support HTTP Request");
		return;
	} 	
	document.getElementById("teacherSection").innerHTML  = "loading...";
	
	url = "./Components/teacher_section/teacherSection.php?comicID="+comicID;
	url += "&rand="+getCurrMsec();
	http.onreadystatechange = handleGetTS;
	http.open("GET",url,true)
	http.send(null);
}
function handleGetTS() {
	if (http.readyState == 4 || http.readyState == "complete") {
		//document.getElementById("debug").innerHTML =tempID;
		document.getElementById("teacherSection").innerHTML = http.responseText;
	}
}
function submitTeacherSection(tid , cid) {
	window.alert(document.getElementById("tsInput").value);
	http = GetXmlHttpObject();
	if (!http) {
		alert ("Browser does not support HTTP Request");
		return;
	} 
	document.getElementById("teacherSection").innerHTML  = "loading...";
	
	url = "./Components/teacher_section/teacherSection.php?comicID="+cid+"&teacherID="+tid+"&msg="+document.getElementById("tsInput").value;
	url += "&rand="+getCurrMsec();
	http.onreadystatechange = handleGetTS;
	http.open("GET",url,true)
	http.send(null);
}

var page_effect = false;
function toggle_page(first_page, second_page, index_page) {
	if (index_page == '') {
		if (document.getElementById(first_page).style.display == 'none') {
			if (page_effect) {
				$('#'+second_page).fadeOut(500,function() {
					$('#'+first_page).fadeIn(500);
				});			
			} else {
				document.getElementById(first_page).style.display = 'block';			
				document.getElementById(second_page).style.display = 'none';
			}			
		} else {
			if (page_effect) {
				$('#'+first_page).fadeOut(500, function() {
					$('#'+second_page).fadeIn(500);
				});		
			} else {
				document.getElementById(first_page).style.display = 'none';
				document.getElementById(second_page).style.display = 'block';
			}
		}
	} else {
		if (index_page == 1) {
			if (page_effect) {
				$('#'+second_page).fadeOut(500,function() {
					$('#'+first_page).fadeIn(500);
				});		
			} else {
				document.getElementById(first_page).style.display = 'block';
				document.getElementById(second_page).style.display = 'none';
			}			
		} else if (index_page == 2) {
			if (page_effect) {
				$('#'+first_page).fadeOut(500, function() {
					$('#'+second_page).fadeIn(500);
				});
			} else {
				document.getElementById(first_page).style.display = 'none';
				document.getElementById(second_page).style.display = 'block';
			}		
		}
	}
}

// =======================
// ====== Star Rating ====== 
// =======================
function loadRate(id, rate) {
	if (id != '') {
		if (rate == '') {			
			rate=getEle('star'+id).title;
			getEleStyle('starCur'+id).width=(80 * (parseFloat(rate))/5) + "px";	
			getEle('starUser'+id).innerHTML=rate;
		} else {		
			getEle('star'+id).title = rate;
			getEle('starUser'+id).innerHTML = rate;
			getEleStyle('starCur'+id).width=(80 * (parseFloat(rate))/5) + "px";	
		}
	} else {		
		var ratingBar = getElementsByClassName('staticStar', document.getElementById('game_cat_item_rate'));
		var stars = getElementsByClassName('curr', document.getElementById('game_cat_item_rate'));		
		for (var i=0; i<ratingBar.length; i++) {
			rate = ratingBar[i].title;
			//alert(stars[i].childNodes[0].nodeName);
			stars[i].style.width = (80 * (parseFloat(rate))/5) + "px";
		}
		//alert(starts[0].getChildNodes().length);
	}
}
function initLoadRate()
{
	var btype = getBrowserType();
	document.getElementById("city").value = btype;
	
	var req = initXMLrequest();
	req.onreadystatechange = updatePage;
	req.open('GET',"./rating.php?rate_id=Test1",false);	
	req.send(null);    
		
	function updatePage()
	{
		if (req.readyState == 4) 
		{
			var response = req.responseXML;
			var total_rate = response.getElementsByTagName('total_rate')[0].firstChild.nodeValue;
			var total_rate_count = response.getElementsByTagName('total_rate_count')[0].firstChild.nodeValue;
			
			getEleStyle('starCur0').width=82 * (total_rate/total_rate_count)/100 + "px";
			getEle('starUser0').innerHTML= "Rate : " + Math.round((total_rate/total_rate_count)*10)/10 + " among "+total_rate_count+ " rated";
			
		}
	}
}
/* AJAX Star Rating : v1.0.3 : 2008/05/06 */
/* http://www.nofunc.com/AJAX_Star_Rating/ */
//http://social.msdn.microsoft.com/Forums/en-US/sharepointgeneral/thread/ecb422b5-bdab-4c6a-8a43-8fff63d946d5/
var w3c=(document.getElementById)? true:false;
var agt=navigator.userAgent.toLowerCase();
var ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1) && (agt.indexOf("omniweb") == -1));
var ie5=(w3c && ie)? true : false;
var ns6=(w3c && (navigator.appName=="Netscape"))? true: false;
var op8=(navigator.userAgent.toLowerCase().indexOf("opera")==-1)? false:true;

function Obj(o){
	return document.getElementById(o)?document.getElementById(o):o;
}

function GetXYWH(o){
	var nLt=0;
	var nTp=0;
	var offsetParent = o;
	while (offsetParent!=null && offsetParent!=document.body) {
		nLt+=offsetParent.offsetLeft;
		nTp+=offsetParent.offsetTop;
		if(!ns6){
			parseInt(offsetParent.currentStyle.borderLeftWidth)>0?nLt+=parseInt(offsetParent.currentStyle.borderLeftWidth):"";
			parseInt(offsetParent.currentStyle.borderTopWidth)>0?nTp+=parseInt(offsetParent.currentStyle.borderTopWidth):"";
		}
		offsetParent=offsetParent.offsetParent;
		//alert(offsetParent.tagName);
	}
	//alert("ID:"+o.id+"\n\nL:"+nLt+" T:"+nTp+"\nW:"+o.offsetWidth+" H:"+o.offsetHeight);
	var z = {X:nLt, Y:nTp};
	return z;
}

function getEle(v,o) { return((typeof(o)=='object'?o:document).getElementById(v)); }
function getEleStyle(o) { return((typeof(o)=='object'?o:getEle(o)).style); }
function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
function abPos(o) { var o=(typeof(o)=='object'?o:getEle(o)), z={X:0,Y:0}; while(o!=null) { z.X+=o.offsetLeft; z.Y+=o.offsetTop; o=o.offsetParent; }; return(z); }
function XY(e,v) { var o=agent('msie')?{'X':event.clientX+document.body.scrollLeft,'Y':event.clientY+document.body.scrollTop}:{'X':e.pageX,'Y':e.pageY}; return(v?o[v]:o); }

star={};
star.num=1;
//var comicLoginStatus = false;

star.mouse=function(e,o) {			
	if(star.stop || isNaN(star.stop)) { 
		star.stop=0;		
		document.onmousemove=function(e) {			
			var n=star.num;			
			//var p=abPos(getEle('ratingStar'+n)), x=XY(e), oX=x.X-p.X, oY=x.Y-p.Y; star.num=o.id.substr(10);			
			var p=GetXYWH(getEle('ratingStar'+n)), x=XY(e), oX=x.X-p.X, oY=x.Y-p.Y; star.num=o.id.substr(10);
			//alert("p.nLt: "+p.nLt+" p.nTp: "+p.nLt+"\nx:"+x+"\noX:"+oX+"\noY:"+oY+"\nstar.num:"+star.num);
			//if(oX<1 || oX>80 || oY<0 || oY>19) {
			if(oX<1 || oX>80) {
				//alert("out");
				star.stop=1;
				star.revert();				
			} else {
				//alert("in");
				getEleStyle('ratingStarCur'+n).width= oX+'px';
				getEleStyle('ratingStarUser'+n).color='#444';
				//getEle('starUser'+n).innerHTML=Math.round(oX/80*100)+'%';
				var num = Number(oX/80*5);
				getEle('ratingStarUser'+n).innerHTML=num.toFixed(1);				
			}
		};
	}	
};

star.update=function(e,o,t) 
{
	document.onmousemove='';
	star.stop=0;		
	checkComLoginRequest();
	
	function checkComLoginRequest() {
		//alert("sendCheckLoginRequest");
		http = GetXmlHttpObject();
		if (!http) {
			alert ("Browser does not support HTTP Request");
			return;
		} 
		var url="checkLogin.php?rand="+getCurrMsec();
		//alert(url)
		http.onreadystatechange = handleComLoginRequest;
		http.open("GET",url,true);
		http.send(null);
	}
	function handleComLoginRequest() {
		//alert("handleCheckLoginRequest");
		if (http.readyState==4 || http.readyState=="complete") {
			//alert(http.responseText);
			if (http.responseText=="0") {							
				var warningId = '';
				if (t == 'comic') {
					warningId = "comicLogin_warning";
				} else if (t == 'game') {
					warningId = "game_play_warning";
				}
				$("#"+warningId).hide();
				document.getElementById(warningId).innerHTML = '<span class="alertBox">Please login CCfamily or register to enjoy our games.</span><br /><a href="#"  onclick="javascript:document.getElementById(\'email\').focus()">Login</a> | <a href="javascript:setBoxNBtn(8);">Register</a>';
				$("#"+warningId).show(500);				
			} else {
				sendRating(t);
			}
		} 
	}
	function sendRating(table) {
		if(star.rate || isNaN(star.rate)) { 
			//alert(table);
			var rateId = '';
			var db_table = '';
			var n=star.num, v=parseFloat(getEle('ratingStarUser'+n).innerHTML);		
			if (table == 'comic') {
				rateId = getEle('comicId').innerHTML;
				db_table = 'comic';
			} else if (table == 'game') {
				rateId = getEle('game_play_id').innerHTML;
				db_table = 'miniGames';
			}
			var url = "./Components/star_rating/rating.php?table="+db_table+"&rate_id="+rateId+"&rate="+(v);
			//alert(url);

			http = GetXmlHttpObject();	
			if (!http) {
				alert ("Browser does not support HTTP Request")
				return
			} 
			http.onreadystatechange = handleRatingUpdate;
			http.open('GET', url, true); 
			http.send(null);			
		}
	}
	function handleRatingUpdate() {	
		if (http.readyState == 4 || http.readyState == "complete") {
			//alert("handleRatingUpdate"+http.responseText);
			star.rate=0;
			var n=star.num;
			var rate = parseFloat(getEle('ratingStarUser'+n).innerHTML);			
			getEle('ratingStarUser'+n).innerHTML= "Rated : " + rate;			
		} 
	}

};

star.revert=function() {
	var n=star.num, v=parseInt(getEle('ratingStarCur'+n).title);

	getEle('ratingStarUser'+n).style.color='#888';
	
	document.onmousemove='';
	/*getEleStyle('starCur'+n).width='0px';
	getEleStyle('starUser'+n).color='#111';
	var num = Number(0);
	getEle('starUser'+n).innerHTML=num.toFixed(2);*/
};

function getElementsByClassName(classname, node) {
	if(!node) node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i=0,j=els.length; i<j; i++)
		if(re.test(els[i].className))a.push(els[i]);
	return a;
}