itemsPerPage = 10;
pagecount = 0;
index = 0;
baseUrl = "/app_templates/corepagelets/LearningGuides/";
keyword="";
curcat = 0;
cursubcat = 0;
curpage=1;
contentXML = new Array("LearningGuides_s08.xml","LearningGuides_s08.xml","LearningGuides_s08.xml","LearningGuides_s08.xml","LearningGuides_s08.xml");
lan = 0;

label2 = new Array("Browse Learning Guide","","","","");
label3 = new Array("","","","","");
label4 = new Array("Search for learning guides","","","","");
label5 = new Array("Search","Suchen","搜索","Search","検索");
label6 = new Array("Clear","Löschen","清除","Clear","クリア");
label7 = new Array("records found. Displaying ","gefundene Einträge. Anzeigen","记录被找到，显示","records found. Displaying","検索結果，表示");
label8 = new Array("Next Step","Nächste Schritte","下一步","Next Step","次のステップ");
label9 = new Array("Visit the <a href='https://wiki.altium.com' target=_blank>Altium Wiki</a> to find all user help and learning information for the Winter09 release.<br><br>Get the best out of Altium Designer with our range of <a href='https://wiki.altium.com/display/ADOH/Altium+in+the+workshop'>Altium in the workshop tips</a>","","","","")


function loadByLanguage(language) {
	lan = language
	if (language >5)
		lan = 0;
	
	ShowLoading();
	
	
	$.ajax({
		type: "GET",
		url: baseUrl + "xml/" + contentXML[lan],
		dataType: "xml",
		async: true,
		beforeSend: function(xmlRequest){
		   ShowLoading();
	 	 },			
		success: function(xmlData)
		{
			MasterDocumentationListDataSet = xmlData;
			showSearch();
			InitXMLData();
			parseURLHistory();
			removeLoading();
		},
		failure: function() { alert("Error"); }
	});


}

function ShowLoading(){
	$("#LeftPane").hide();
	$("#VideoListPane").hide();
	
	$("#Loading").html("Loading...");
	$("#Loading").show();
}
function removeLoading(){
	$("#LeftPane").show();
	$("#VideoListPane").show();

	$("#LeftPane").fadeIn(500);
	$("#VideoListPane").fadeIn(500);
	
	$("#Loading").hide();
}

function showSearch(){
	 var strSearchform ="";
	 strSearchform += "<form onsubmit='searchXML();return false;'>";
	 strSearchform += "<input name='keyword' id='keyword' type='text' value='"+label4[lan]+"'>&nbsp;&nbsp;";
	 strSearchform +="<b><a href='javascript:void(0);' id='Search'>"+label5[lan]+"</a>&nbsp;&nbsp;";
	 strSearchform +=" <a href='javascript:void(0);' id='Clear'>"+label6[lan]+"</a></form></b>";
	$("#searchBar").html(strSearchform);
}

var categoryArray, learningguideArray, LinksArray, curlearningguideArray;
var defaultNextStepInfo;

function InitXMLData(){

	categoryArray = new Array();
	learningguideArray = new Array();
	LinksArray = new Array();
	curlearningguideArray = new Array();
	
	var LearningguideNodes = $("learningguide",MasterDocumentationListDataSet);
	
	categoryArray.push("All");
	
	$.each( LearningguideNodes, function(i, n){//for each video node, get it's parent node
		var c = $("category",this).text();
		
		if(ArrayContains(categoryArray,c)==false)
			categoryArray.push(c);
	
		learningguideArray.push(new Array(c,$("code",this).text(),$("title",this).text(),$("desc",this).text(),$("version",this).text(),$("date",this).text(),$("size",this).text(),$("url",this).text()));
		
	});
	
	var LinkNodes = $("link",MasterDocumentationListDataSet);
	$.each( LinkNodes, function(i, n){
		LinksArray.push(new Array($("category",this).text(),$("topicgroup",this).text(),$("name",this).text(), $("url",this).text(),$("type",this).text()));
	});
	
	//default nextstep items
	defaultNextStepInfo = "<h2>"+label8[lan]+"</h2>";

	defaultNextStepInfo += "<ul id='NextStepList'>";
	var nextstepNodes = $("nextstep",MasterDocumentationListDataSet);
	$.each( nextstepNodes, function(i, n){
		defaultNextStepInfo += "<li><a target=_blank class='nextstep' href='"+ $("url",this).text() +"'>" + $("name",this).text() +"</a></li>";
	});
	defaultNextStepInfo += "</ul>";
	$("#NextStepPane").html(defaultNextStepInfo);
	
	//defaultNextStepInfo = $("#NextStepPane").html();
	
	 $("#keyword").click(function(){
	 	$("#keyword").select(); 
	 });
	 $(document).click(function(e){
		if(e.target.id!="keyword"){
		 	if($("#keyword").val()=="")
		 		$("#keyword").attr("value",label4[lan]);
		}
	 });	 
	 $("#Search").click(function(){searchXML(); });
	 $("#Clear").click(function(){$("#keyword").attr("value","");searchXML();});
	 

	 $("#label2").html(label2[lan]);
	 $("#label9").html("<p>"+label9[lan]+"</p>");
}

function buildMenu(){

	$("#CategoryPane").html("<ul id='list0' class='catlist'></ul>");

	for (i=0;i<categoryArray.length;i++){//each category
		var c = categoryArray[i];
		$("#list0").append("<li id='c"+i+"' title=\""+c+"\" class='l1'><a  class='history' href='#"+keyword+","+i+"' >" + c +"</a></li>");
	}
	
	$(".l1").hide();
	ShowNode(curlearningguideArray);

	var cname = GetName(categoryArray,curcat);
 	curlearningguideArray = filterByCategory(curlearningguideArray,cname);

	
	//show Next steps links when seleted subcategory
	$("#NextStepPane").html(defaultNextStepInfo);

	var curLinksArray = filterByCategory(LinksArray,cname);
	$.each( curLinksArray, function(i, n){
			var str = "<li><a target=_blank class='nextstep' href='"+curLinksArray[i][3]+"'>" + curLinksArray[i][2] +"</a></li>";
			if (curLinksArray[i][4]=="PDF"){
				str = "<li><a target=_blank class='nextstep' href='"+curLinksArray[i][3]+"'>" + curLinksArray[i][2] + " (PDF)</a></li>";
			}
			$("#NextStepList").prepend(str);
	});
	
	$("#c"+curcat).addClass("selected");
}

function parseURLHistory(){
	var url = location.hash;
	parseURL(url);
}

function parseURL(url){
	curcat = 0;
	keyword = "";
	curno = -1;
	curpage = 1;
	
	if (url.indexOf("#") != -1)
	url = url.substring(url.indexOf("#"), url.length);

	if (url.substring(0,1)=="#"){
		url = url.substring(1);
		var urlArray = url.split(",",3);
		if (urlArray.length>0)
			keyword = urlArray[0];
		if(urlArray.length>1 && urlArray[1].length>0 && !isNaN(urlArray[1]))
			curcat = urlArray[1];
		if (urlArray.length>2 && urlArray[2].length>0 && !isNaN(urlArray[2]))
			curpage = urlArray[2];
	}

	curlearningguideArray = learningguideArray;

	if (keyword!=""&&keyword!=label4[lan]){
		curlearningguideArray = filterByKeyword(curlearningguideArray,keyword);
		$("#keyword").attr("value",keyword);
	 	 $("#keyword").removeClass("normalInput");
	 	 $("#keyword").addClass("hiliteInput");
	 	 $("#keyword").css({ background:"#cc9a34"});
	 	 //$("#keyword").css({ color:"#fff;"});
	}else{
	 	 $("#keyword").removeClass("hiliteInput");
	 	 $("#keyword").addClass("normalInput");
	 	 $("#keyword").css({ background:"#3d3f47"});
	}

	
	buildMenu();
	browseXML();
	if(curno!=-1)
		ShowDetails(curno);

	$("a.history").click(function(){
		parseURL($(this).attr("href"));
	}) 		
	$.historyEnable();
	
}



function ArrayContains(arr,name){
	for(i=0;i<arr.length;i++){
		if(arr[i]==name){
			return true;
		}
	}
	return false;
}


function filterByKeyword(ds,keyword){
	
	var result = new Array();
	if (keyword == ""){
		return learningguideArray;
	}else{
		keyword = keyword.toLowerCase();

		$.each( learningguideArray, function(i, n){
			var category = ds[i][0].toLowerCase();
			var title = ds[i][2].toLowerCase();
			var desc = ds[i][3].toLowerCase();
			var version = ds[i][4].toLowerCase();
			var date = ds[i][5].toLowerCase();
			var size = ds[i][6].toLowerCase();
			
			if (category.indexOf(keyword) != -1||title.indexOf(keyword) != -1||desc.indexOf(keyword) != -1||version.indexOf(keyword) != -1||date.indexOf(keyword) != -1||size.indexOf(keyword) != -1){
				result.push(ds[i]);
			}
		});
	}
	return result;
}

function filterByCategory(ds,c){
	var result = new Array();
	if (c=="All" || c==""){
		return ds;
	}else{
		$.each( ds, function(i, n){
			var category = ds[i][0].toLowerCase();
			if(category.indexOf(c.toLowerCase()) != -1){
				result.push(ds[i]);
			}
		});	
		return result;
	}
}


function filterBySubCategory(ds,c){
	
	var result = new Array();
	if (c=="All" || c==""){
		return ds;
	}else{
		$.each( ds, function(i, n){
			var subcategory = ds[i][1].toLowerCase();
			if(subcategory.indexOf(c.toLowerCase()) != -1){
				result.push(ds[i]);
			}
		});
		return result;
	}
}


function getUniqueDataset(ds){
	var result = new Array();

	$.each( ds, function(i, n){
		if(containsVideo(result,ds[i][2])==false){
			result.push(ds[i]);
		}
	});
	
	return result;
}

function containsVideo(ds,videono){
	for(i=0;i<ds.length;i++){
		if(ds[i][2]==videono){
			return true;
		}
	}
	return false;
}

function ShowNode(ds){
	$("#c0").show();
	for (j=0;j<ds.length;j++){//each subcategory
		var c = ds[j][0];
		var cid = GetIndex(categoryArray,c);
		$("#c"+cid).show();
	}
}

function GetIndex(arr,name){
	for (i=0;i<arr.length;i++){	
		if (arr[i]==name)
			return i;
	}
	return -1;
}
function GetName(arr,index){
	if (index>-1 && index<arr.length)
		return arr[index];
	else
		return "";
}

function searchXML(){
	keyword = $("#keyword").val();
	
	if (keyword =="")
		keyword = ",";
	document.location.hash = keyword;
	
	parseURL("#"+keyword);
}


function browseXML(){
	
	if(curcat==0){//if select all
		curlearningguideArray = getUniqueDataset(curlearningguideArray);
	}

	var itemcount = curlearningguideArray.length;
	pagecount = Math.ceil(itemcount / itemsPerPage);
	curpage = parseInt(curpage) > pagecount?pagecount:parseInt(curpage);
	var start = parseInt(curpage-1)*itemsPerPage;
	var end = (parseInt(curpage)*itemsPerPage < itemcount)?parseInt(curpage)*itemsPerPage:itemcount;
	
	showpaging();
	
	$("#SearchResults").html("<b>" +itemcount + "</b> "+ label7[lan]+" "+(start+1)+" - " + end);
	
	$("#videoList").html("");
	index=0;
	
	$.each( curlearningguideArray, function(i, n){
		if (i>=start&&i<end){
				AppendList(curlearningguideArray[i]);
		}
	});
	
	log_init('a.log');
	log_init('a.nextstep');
	hilite(keyword);
}


function AppendList(ds){
	
		index++;
		var category = ds[0];
		var code = ds[1];
		var title = ds[2];
		var desc = ds[3];
		var version = ds[4];
		var date = ds[5];
		var size = ds[6];
		var link = ds[7];
		
		strToAppend = "<div class=thumblist3 id='" + GetID(title) + "'>";
		
		strToAppend += "<table width=100%><tr>";
		strToAppend += "<td>";
		strToAppend += "<div class=title><strong>"+ (index+ (curpage-1)*itemsPerPage) +".</strong> <a href=\""+link+"\" class='log' title=\""+title+"\" target=_blank>"+ title +"</a></div>";
		
		strToAppend += "<div class=desc id='desc_"+(index+ (curpage-1)*itemsPerPage)+"'>" + desc +"</div>";
		
		strToAppend += "</td>";
		strToAppend += "<td width=10></td>";
		strToAppend += "<td width=120 align=center>"+"Version " + version +"<br>"+ date + "<br>"+size+"</td>";
		strToAppend += "</tr></table>";
		
		strToAppend += "</div>";
		
		strToAppend += "<hr class='keyline' />";
		
	
	$("#videoList").append(strToAppend);
}

function ShowMore(no){
	if(LGDataSet.length>=no){
		ds = LGDataSet[(no-1)];
		var desc = ds[6];
		$("#desc_"+no).html(desc);
	}
}


function GetID(stringwithspace){
	return stringwithspace.replace(/ /g,'').replace(/&/g,'').replace(/\?/g,'').replace(/\//g,'').replace(/\'/g,'').replace(/,/g,'').replace(/\./g,'');
}

function hilite(keyword){
var options = {highlight:$("#videoList"),nohighlight :$("p.subtitle"), exact:"whole",style_name_suffix:false,keys:keyword };
  jQuery(function(){
    jQuery(document).SearchHighlight(options);
  });
}


function showpaging(){
	constr="<table width=100%><tr><td width=30><div class=pagegridprev><a class='history' href='#"+keyword+","+curcat+","+(parseInt(curpage)-1<1?1:parseInt(curpage)-1)+"'><<</a></div></td>";
	
	constr+="<td><div style='float:left;'>";
		for (i=1; i<=pagecount;i++){
			if (curpage==i){
				constr+="<div class='selectedpagegrid'><b>" + i + "</b></div>";
			}else{
				constr+="<div class='pagegrid'><a class='history' href='#"+keyword+","+curcat+","+i+"'>" + i + "</a></div>";
			}
		}
	constr+="</div></td>";
	constr+="<td width=30><div class=pagegridnext><a class='history' href='#"+keyword+","+curcat+","+(parseInt(curpage)+1>pagecount?pagecount:parseInt(curpage)+1)+"'>>></a></div></td></tr></table>";
	
	$("#pagebar").html(constr);
	$("#pagebar").show();
}


function log_init(domChunk){
	$(domChunk).click(function(){
		var t = this.title || this.name || $(this).text() || null;
		var a = this.href || this.alt;
		if (domChunk=="a.nextstep")
			logClick("/community/support/learningguides/nextsteps/"+GetID(t));
		else
			logClick("/community/support/learningguides/altiumdesigners08learningguides/"+GetID(t));
		
		return true;
	});
}

function logClick(url){
	if(window.urchinTracker){
		urchinTracker(url);
	}
}
