var img_menu_open = '';
var img_menu_close = '';
var debugOn = false;
var sZID;

function changeMenu(cid) {
	
	closeAllMenu();

	o = document.getElementById("tb_sub_" + cid);
	m = document.getElementById("a_" + cid);
	if (o == null) return;
	

	
	var typeExt = '';
	if(cid == 's') typeExt = '_subs';
	if (o.style.display == 'block') {
		o.style.display = 'none';
		if (m) m.innerHTML = combineExt(img_menu_open, typeExt, cid, 'none');

	} else {
		o.style.display = 'block';
		if (m) m.innerHTML = combineExt(img_menu_close, typeExt, cid, 'block');

	}

}



function changeMenuClient(cid) {
	linkurl = "http://mag.zcom.com/menudata/category_" + cid + ".html" ;
	o = document.getElementById("tb_sub_" + cid);
	m = document.getElementById("a_" + cid);
	if (o == null) return;
	if (o.style.display == 'block') {
		o.style.display = 'none';
		if (m) m.innerHTML = img_menu_open;
	} else {
		o.style.display = 'block';
		if (m) m.innerHTML = img_menu_close;
		o.innerHTML="<div class='loadingNav'>Loading...</div>";
		//window.frames["hiddenframe"].document.location.href = linkurl ;
		try{
			loadXMLDoc(linkurl,eval);
		}catch(ex){debug("CHGM: "+ex);}
	}
}

function str_replace(ptn, rep, string){
	
	if(string.indexOf(ptn) != -1){

		return str_replace( ptn, rep, string.substring(0, string.indexOf(ptn)) + rep + string.substring(string.indexOf(ptn) + ptn.length , string.length) );

	}else{

		return string;

	}

}

function closeAllMenu(){

	for(var i=0;i<40;i++){
		
		try{

			var o = document.getElementById("tb_sub_" + i);
			var m = document.getElementById("a_" + i);
			if (o == null) continue;
			var typeExt = '';

			
			o.style.display = 'none';
			if (m) m.innerHTML = combineExt(img_menu_open, typeExt, i, 'none');
		
		}catch(eex){}

	}

}

function combineExt(imgTag, typeExt, cid, disp){
	
	//保存客户端菜单展开结果?
	try{
		var expand_var = get_cookie('expand_ext');
		
		if(expand_var == ''){
			expand_var = ',';
		}

		if(disp == 'none'){
			
			expand_var = str_replace(','+cid+',', ',', expand_var );

		}else{

			expand_var += cid + ',';

		}
		set_cookie_thisDomain('expand_ext', expand_var );
	}catch(ex){}
	
	//隐藏其他分类



	//交换图片

	var img_re = new RegExp("\\.gif");
	
	return imgTag.replace(img_re, typeExt + '.gif');

}

function isMyClient(){
	
	var temp = false;
	
	if (ClientV340()) {

		temp = true;
	
	} else {
		try {
			newSetVersion(false);

			if (ZCOMActiveX.getLocalAppDataDir() != "错误:您还未安装数字杂志客户端,请先下载安装!") {
				temp = true;
				sZID = ZCOMActiveX.getActiveUser();
			} 
		} catch (ex) {}
	}

	return temp;

}

function iframeGet(urls){

	var oHsFrame = document.getElementById("hsFrame");

	if(!oHsFrame){
		document.write("<iframe id='hsFrame' width='0' height='0' src='about:blank' style='display:none'></iframe>");
	}

	oHsFrame.src = urls;

}


var sAyN = new Array();
var sAyA = new Array();


function loadXMLDoc(url,funcToDo){

	var xmlhttp;
	
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e1){
		
		try{
			
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

		}catch(e2){

			try{

				xmlhttp=new XMLHttpRequest();

			}catch(e3){}

		}

	}


	
	if(xmlhttp){
		
		xmlhttp.onreadystatechange=function(){
			if (xmlhttp.readyState==4){
				if (xmlhttp.status==200){
					try{

						funcToDo( xmlhttp.responseText );

					}catch(e){}

				}
			}
		}

		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
		
	}
	
	delete xmlhttp;
}



var sSubscribe;
var magListLoaded = false;
function initSubscribeMenu(){
	
	try{
		debug("initSM.");
		if(load_menu_done == false){
			return ;
		}

		if(isMyClient() != true){
			debug("not my client.");
			return ;
		}

		//sZID = ZCOMActiveX.getActiveUser();

		if ((sZID == "unknow")||(sZID == 0) || (sZID == null)) {
			debug("NO ZID.");
			return ;
		}
		
		var lastSubscribeTime ;
		var temp = false;

		if(ClientV340()){
			
			sSubscribe = ZCOMActiveX_v2.ReadDataFile(sGSubscribe);
			if ( sSubscribe == "FALSE" || sSubscribe == "" || sSubscribe == null ) {
				sSubscribe = ",";
			}
			


		}else{

			try{
				readSubscribe();
			}catch(ex1){}

			lastSubscribeTime = /lastSubscribeTime\t([0-9]+)\n/.exec(ZCOMActiveX.getUserInfo(sZID));


			var d = new Date();
			var t = d.getTime();
			var tmstmp = t.toString().substring(0, 10);


			try{

				if(lastSubscribeTime == null){

					temp = true;

				}else if ( parseInt(lastSubscribeTime[1]) + 600  < parseInt(tmstmp)) {

					temp = true;
				}

			}catch(ex2){

				temp = true;
			}

			if(temp == true){

				if(ClientV340()){

					// ZCOMActiveX_v2.WriteDataFile(sGLastSubscribeTime, "w", tmstmp);

				}else{
					try{
						ZCOMActiveX.setUserInfo("lastSubscribeTime", tmstmp, sZID);
					}catch(ex3){}
				}
			}	

			//if( sSubscribe=='blank' || sSubscribe=='' || sSubscribe==',' || typeof(sSubscribe) == 'undefined' ){

				if(temp == true){
					loadRemoteSublist();
				}
				//return ;
			//}
			
		
			//读取列表
			//iframeGet("http://mag.zcom.com/magname_list.js");

		}

		
		debug("sSubscribe: "+sSubscribe + "\nlastSubscribeTime: " + lastSubscribeTime);


		if(magListLoaded == true){
			
			debug("magname loaded");
			mag_list_loaded();

		}else{
		
			debug("try load magname");
			loadXMLDoc("/menudata/magname_list.js", eval);

		}
	

		//订阅下载


		//if(updateSublist == true){

			//iteratorSubscribe();

		//} else
		
		if(temp == true){
	
			setTimeout("sendSubscribe()",5000)

		}

		
	}catch(ex){debug("MN.init:"+ex + "\nDesc: "+ex.description)}

}


function mag_list_loaded(){

	magListLoaded = true;

	try{

		var ssLine = '';
		
		var sArr = sSubscribe.split(",");
		
		var info;

		for(var i=0;i<sArr.length;i++){
			if(typeof(sAyA[sArr[i]]) != "undefined" && sArr[i] != '' && typeof(sAyN[sArr[i]]) != "undefined"){

				ssLine += "<li><a href='http://mag.zcom.com/" + sAyA[sArr[i]] + "/" + sArr[i] + "/'>" + sAyN[sArr[i]] + "</a></li>";

			}
		}

		oSubContainer = document.getElementById("tb_sub_s");
			
		oSubContainer.innerHTML = ssLine;


		document.getElementById("menuContainer2").style.display = 'block';

		if( get_cookie('expand_ext').indexOf(',s,') != -1){

			document.getElementById("tb_sub_s").style.display = 'block';

		}

	}catch(ex){}


}


function sendSubscribe(){
	
	try{
		var fsu = "http://mag.zcom.com/client/subscribe/";

		fsu += sSubscribe;
		debug("Send Subscribe.\n"+fsu);
		loadXMLDoc(fsu, nothingToDo);
			
	}catch(ex){}

	updateSublist = false;
	subscribeSendProc = false;

}

function loadRemoteSublist(){

	debug("Load From Remote.");
	var fsu = "http://mag.zcom.com/client/subscribe/load";

	try{

		loadXMLDoc(fsu , joinSubscribe);
	
	}catch(ex){}

}

function joinSubscribe(text){

	debug("JOIN: "+text + " + " + sSubscribe);

	if(text != 'blank' && text != '' && text != ','){
		try{
			saveSubscribe(text+","+sSubscribe);
			readSubscribe();
		}catch(ex){}
	}
}

function setSubscribe(text){

	debug(text);
	
	if(text != 'blank' && text != '' && text != ','){
		try{
			saveSubscribe(text);
			readSubscribe();
		}catch(ex){}
	}
}


//保存到reg
function saveSubscribe(sSubscribe){
	
	debug("EEFFCC: "+sSubscribe);

	var ss = sSubscribe.split(",");
	var idx,oneList;
	var noRepeat = ',';
	
	clearSubscribe();
	
	var k = 0;

	for(var i=0;i<ss.length;){
		
		oneList = ',';

		for(var j=0;j<30;j++){

			idx = i + j;

			if( ss[idx]!='' && typeof(ss[idx])!="undefined" && noRepeat.indexOf(','+ss[idx]+',') == -1){

				oneList += ss[idx] + ","; //一行
				noRepeat += ss[idx] + ",";//总

			}


		}
		
		if(ClientV340()){
	
			ZCOMActiveX_v2.WriteDataFile(sGSubscribe, "w", oneList);

		}else{

			ZCOMActiveX.setUserInfo("subscribe_"+k, oneList, sZID);

		}

		k++;
		i += 30;
	}

	debug("Save Reg: "+noRepeat);

}

function clearSubscribe(){
	
	if(ClientV340()){
		return;
	}

	var userInfo = ZCOMActiveX.getUserInfo(sZID);
	
	if( userInfo.indexOf("subscribe\t") != -1 ){
		clearRegArg("subscribe");
	}

	for(var i=0;i<10;i++){
		
		if( userInfo.indexOf("subscribe_"+i+"\t") != -1 ){
			clearRegArg("subscribe_"+i);
		}

	}
}

function clearRegArg(key){
	try{
		ZCOMActiveX.setUserInfo(key, "", sZID);
	}catch(ex){}
}

//从reg中读取
function readSubscribe(){
	
	
	if(ClientV340()){
			
		outputs = ZCOMActiveX_v2.ReadDataFile(sGSubscribe);
		if ((outputs == "FALSE")||(outputs == "")) {
			outputs = ",";
		}

	}else{

		try{
			var userInfo = ZCOMActiveX.getUserInfo(sZID);
			var re = new RegExp("subscribe[0-9_]{0,4}\t([0-9,]+)\n","gi");
			var re2 = new RegExp("subscribe[0-9_]{0,4}\t([0-9,]+)\n","i");
			var aSubscribe = userInfo.match(re);

			//var aSubscribe = /subscribe_([0-9]{0,4})\t([0-9,]+)\n/.exec(ZCOMActiveX.getUserInfo(sZID));


			var outputs = ',';
			var sASubscribe;

			//sSubscribe = RegExp.$1;
			for(var i=0;i<aSubscribe.length;i++){

				
				sASubscribe = aSubscribe[i].match(re2);
				

				var ss = sASubscribe[1].split(",");
				
				for(var j=0;j<ss.length;j++){

					if( ss[j]!='' && typeof(ss[j])!="undefined" && outputs.indexOf(','+ss[j]+',') == -1 && parseInt(ss[j]) < 1000 ){

						outputs +=  ss[j] + ",";

					}
				
				}

			}

		}catch(ex){
			outputs = ",";
		}
	}
	

	debug("Read Reg: "+outputs);

	sSubscribe = outputs;
	
	return outputs;
}


function echo(text){alert("Echo: "+text);}
function nothingToDo(args){}

function debug(msg){ 
	if(debugOn) alert(msg); 
}


/* 061208 */


function convertCP2Char ( textString ) {
  var outputString = '';
  textString = textString.replace(/^\s+/, '');
  if (textString.length == 0) { return ""; }
  	textString = textString.replace(/\s+/g, ' ');
  var listArray = textString.split(' ');
  for ( var i = 0; i < listArray.length; i++ ) {
    var n = parseInt(listArray[i], 16);
    if (n <= 0xFFFF) {
      outputString += String.fromCharCode(n);
    } else if (n <= 0x10FFFF) {
      n -= 0x10000
      outputString += String.fromCharCode(0xD800 | (n >> 10)) + String.fromCharCode(0xDC00 | (n & 0x3FF));
    } else {
      outputString += '!erreur ' + dec2hex(n) +'!';
    }
  }
  return( outputString );
}

function convertpEsc2CP ( textString ) {

	var outputString = "";
	var compte = 0;
	var n = 0;

	textString = textString.replace(/^\s+/, '');
	if (textString.length == 0) { return ""; }

	textString = textString.replace(/\s+/g, ' ');

	for ( var j = 0; j < textString.length; j++ ) {
		if (textString.charAt(j) == '%') { outputString += textString.slice(j, j+3); j += 2; }
		else { outputString += '%'+dec2hex(textString.charCodeAt(j)); }
		}
	textString = outputString; outputString = '';
	var listArray = textString.split('%');
	for ( var i = 1; i < listArray.length; i++ ) { // runs from 1 to eliminate first % (produces null array item)
		var b = parseInt(listArray[i], 16);   // alert('b:'+dec2hex(b));
		switch (compte) {
			case 0:
			if (0 <= b && b <= 0x7F) {  // 0xxxxxxx
				outputString += dec2hex(b) + ' '; } 
			else if (0xC0 <= b && b <= 0xDF) {  // 110xxxxx
				compte = 1;
				n = b & 0x1F; }
			else if (0xE0 <= b && b <= 0xEF) {  // 1110xxxx
				compte = 2;
				n = b & 0xF; } 
			else if (0xF0 <= b && b <= 0xF7) {  // 11110xxx
				compte = 3;
				n = b & 0x7; } 
			else {
				outputString += '!erreur ' + dec2hex(b) + '! ';
				}
			break;
			case 1:
			if (b < 0x80 || b > 0xBF) {
				outputString += '!erreur ' + dec2hex(b) + '! ';
				}
			compte--;
			outputString += dec2hex((n << 6) | (b-0x80)) + ' ';
			n = 0;
			break;
			case 2: case 3:
			if (b < 0x80 || b > 0xBF) {
				outputString += '!erreur ' + dec2hex(b) + '! ';
				}
			n = (n << 6) | (b-0x80);
			compte--;
			break;
		}
	}
	return( outputString.replace(/ $/, '') );
	}


function dec2hex ( textString ) {
 return (textString+0).toString(16).toUpperCase();
}

function  dec2hex2 ( textString ) {
  var hexequiv = new Array ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  return hexequiv[(textString >> 4) & 0xF] + hexequiv[textString & 0xF];
}

function  dec2hex4 ( textString ) {
  var hexequiv = new Array ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  return hexequiv[(textString >> 12) & 0xF] + hexequiv[(textString >> 8) & 0xF] + hexequiv[(textString >> 4) & 0xF] + hexequiv[textString & 0xF];
}


