itemsPerPage = 10;
pagecount = 0;
index = 0;
baseUrl = "/app_templates/corepagelets/DEMOcenter/";
VideoBaseUrl = "";
keyword="";
curcat = 0;
cursubcat = 0;
curpage=1;
contentXML = new Array("DEMOVideos_EN.xml","DEMOVideos_DE.xml","DEMOVideos_CN.xml","DEMOVideos_FR.xml","DEMOVideos_JP.xml");
lan = 0;

label1 = new Array("Welcome to Altium's DEMOcenter","Willkommen im Altium DEMOcenter","欢迎来到Altium演示中心","Welcome to Altium's DEMOcenter","アルティウムのDEMOcenterへようこそ");
label2 = new Array("Browse video library","Videosammlung durchsuchen","浏览视频库","Browse video library","ビデオライブラリを見る");
label3 = new Array("(each approx. 5 minutes)","(ca. 5 min. pro Video)","(每个视频大约5分钟)","(each approx. 5 minutes)","(各ビデオは約5分です)");
label4 = new Array("Search for video","Video suchen","搜索视频","Search for video","ビデオの検索");
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("Play video","Play video","Play video","Play video","Play video");
label10 = new Array("Back to list","Back to list","Back to list","Back to list","Back to list");


function loadByLanguage(language) {
	lan = language
	if (language >5)
		lan = 0;

	$.ajax({
		type: "GET",
		url: baseUrl + "contents/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();

	$("#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, subcategoryArray, videosArray, LinksArray, curvideosArray;
var defaultNextStepInfo;

function InitXMLData(){

	categoryArray = new Array();
	subcategoryArray = new Array();
	videosArray = new Array();
	LinksArray = new Array();
	curvideosArray = new Array();
	
	var VideoNodes = $("video",MasterDocumentationListDataSet);
	
	categoryArray.push("All");
	subcategoryArray.push("All");
	
	$.each( VideoNodes, function(i, n){//for each video node, get it's parent node
		var c = $("category",this).text();
		var s = $("topicgroup",this).text();
		
		if(ArrayContains(categoryArray,c)==false)
			categoryArray.push(c);
		if(ArrayContains(subcategoryArray,s)==false)		
			subcategoryArray.push(s);
	
		videosArray.push(new Array(c,s,$("videono",this).text(),$("title",this).text(),$("link",this).text(),$("thumb",this).text(),$("date",this).text(),$("desc",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){
		var url = $("url",this).text().toLowerCase();
		if (url.substring(0,11) =="videoplayer")
			url = "/" + url;
		else if(url.substring(0,4)!="http")
			url = baseUrl+ url;
		defaultNextStepInfo += "<li><a target=_blank href='"+ url +"' class='log'>" + $("name",this).text() +"</a></li>";
	});
	defaultNextStepInfo += "</ul>";
	$("#NextStepPane").html(defaultNextStepInfo);
	
	 $("#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]);
	 $("#label3").html(" "+label3[lan]);
	
}

function buildMenu(){
	
	$("#CategoryPane").html("<ul id='list0' class='catlist'></ul>");
	$("#SubCategoryPane").html("<ul id='list1' 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(curvideosArray);

	var cname = GetName(categoryArray,curcat);
 	curvideosArray = filterByCategory(curvideosArray,cname);
	$.each( curvideosArray, function(i, n){
		var s = curvideosArray[i][1];
		var sid = GetIndex(subcategoryArray,s);
		if($('#s'+sid).size()==0)
		$("#list1").append("<li id='s"+ sid +"' title=\""+s+"\" class='l2'><a class='history' href='#"+keyword+","+curcat+","+sid+"'>" + s +"</a></li>");
	});

 	var sname = GetName(subcategoryArray,cursubcat);
 	curvideosArray = filterBySubCategory(curvideosArray,sname);
	
	
	//show Next steps links when seleted subcategory
	$("#NextStepPane").html(defaultNextStepInfo);

	if (cursubcat!=0){
		var curLinksArray = filterBySubCategory(LinksArray,sname);
		$.each( curLinksArray, function(i, n){
			var url = curLinksArray[i][3].substring(0,4)!="http"?baseUrl+curLinksArray[i][3]:curLinksArray[i][3];
			var str = "<li><a target=_blank class='log' href='"+url+"'>" + curLinksArray[i][2] +"</a></li>";
			if (curLinksArray[i][4]=="PDF"){
				str = "<li><a target=_blank class='log' href='"+url+"'>" + curLinksArray[i][2] + " (PDF)</a></li>";
			}
			$("#NextStepList").prepend(str);
		});
	}
	
	$("#c"+curcat).addClass("selected");
	$("#s"+cursubcat).addClass("selected");

}

function parseURLHistory(){
	var url = location.hash;
	parseURL(url);
}

function parseURL(url){
	curcat = 0;
	cursubcat = 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(",",5);
		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]))
			cursubcat = urlArray[2];
		if (urlArray.length>3 && urlArray[3].length>0 && !isNaN(urlArray[3]))
			curpage = urlArray[3];
		if (urlArray.length>4 && urlArray[4].length>0 && !isNaN(urlArray[4]))
			curno = urlArray[4];
	}

	curvideosArray = videosArray;

	if (keyword!=""&&keyword!=label4[lan]){
		curvideosArray = filterByKeyword(curvideosArray,keyword);
		$("#keyword").attr("value",keyword);
	 	 $("#keyword").removeClass("normalInput");
	 	 $("#keyword").addClass("hiliteInput");
	 	 $("#keyword").css({ background:"#cc9a34"});
	}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 videosArray;
	}else{
		keyword = keyword.toLowerCase();

		$.each( videosArray, function(i, n){
			var category = ds[i][0].toLowerCase();
			var subcategory = ds[i][1].toLowerCase();
			var videono = ds[i][2].toLowerCase();
			var title = ds[i][3].toLowerCase();
			var desc = ds[i][7].toLowerCase();
			if (category.indexOf(keyword) != -1||subcategory.indexOf(keyword) != -1||videono.indexOf(keyword) != -1||title.indexOf(keyword) != -1||desc.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 s = ds[j][1];
		var cid = GetIndex(categoryArray,c);
		var sid = GetIndex(subcategoryArray,s);
		$("#c"+cid).show();
		$("#s"+sid).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
		curvideosArray = getUniqueDataset(curvideosArray);
	}

	var itemcount = curvideosArray.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( curvideosArray, function(i, n){
		if (i>=start&&i<end){
				AppendList(curvideosArray[i]);
		}
	});
	
	log_init('a.log');
	popup_init('#videoList a.popup');
	hilite(keyword);
}


function AppendList(ds){
	
		index++;
		var category = ds[0];
		var subcategory = ds[1];
		var videono = ds[2];
		var title = ds[3];
		var link = ds[4];
		var thumb = ds[5];
		var date = ds[6];
		var desc = ds[7];
		if (link.substring(0,4)!="http")
			link = "/" + link;
		strToAppend = "<div class=thumblist3 id='" + GetID(title) + "'>";
		strToAppend += "<div class=thumbnail><a class='popup' target=_blank title=\""+ title +"\" name='"+ videono +"' href='" + link + "'><img class='thumbimg' border=0 width=80 height=60 src='"+baseUrl+"contents/images/thumbnails/" + thumb.substring(0,thumb.length-6) + "-s.gif'></a><div class='playbutton'><a class='popup' target=_blank title=\""+ title +"\" name='"+ videono +"' href='" + link + "'><img border=0 src='"+baseUrl+"css/images/play-btn.gif'></a></div></div>" ;
		
		strToAppend += "<div style='height:60px;float:left;'></div>";
		
		strToAppend += "<div class=title><strong>"+ (index+ (curpage-1)*itemsPerPage) +".</strong> <a class='history' href='#"+keyword+","+curcat+","+cursubcat+","+curpage+","+(index+ (curpage-1)*itemsPerPage)+"' >"+ title +"</a></div>";
		
		strToAppend += "<div class='subtitle'>" + category+" | " + subcategory +" | " + date +"</div>";
		
		var more="";
		if (desc.length>150)
		more = " ...";
		
		strToAppend += "<div class=desc id='desc_"+(index+ (curpage-1)*itemsPerPage)+"'>" + desc.substring(0,150)+ more +"</div>";
		strToAppend += "</div>";
		
		strToAppend += "<div class='keyline'></div>";
	
	$("#videoList").append(strToAppend);
	
}

function ShowDetails(no){
	if(curvideosArray.length>=no){
		if($("#"+no).length==0){
			ds = curvideosArray[(no-1)];
			var title = ds[3];
			var category = ds[0];
			var subcategory = ds[1];
			var videono = ds[2];
			var link = ds[4];
			var thumb = ds[5];
			var date = ds[6];
			var desc = ds[7];
			if (link.substring(0,4)!="http")
				link = "/" + link;
			
			str = "<div id='"+ no +"' style='display: none;'>";
			str +="<div class='WindowOpentitle'>"+ no +". " +title +"</div>";
			
			str +="<div style='float:left;width:580px;'>";
			str+="<pre>"+desc+"</pre>";
			str +="</div>";
			
			str +="<div style='float:right;width:200px;'>";
			str +="<div class='WindowOpenThumb'><img onload='javascript:if(this.width > 200 ){ this.width = 200;}'  src='"+baseUrl+"contents/images/" + thumb +"'></div>";
			
			str +="<div class='WindowOpenPlay'><a target=_blank class='popup' title=\""+ title +"\" name='"+ videono +"' href='" + link + "'>"+label9[lan]+"</a>";
			str +=" | <a title='Back to list' href='#"+keyword+","+curcat+","+cursubcat+","+curpage+"'  onclick='tb_remove();'>"+label10[lan]+"</a></div>";
			str+="</div>";
			
			str+="</div>";

			$("#videoList").append(str);
			hilite(keyword);
		}

		tb_show("",VideoBaseUrl+"/?width=800&height=400&WindowOpen=true&id="+(no),"");
	}
	
}


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:"partial",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+","+cursubcat+","+(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+","+cursubcat+","+i+"'>" + i + "</a></div>";
			}
		}
	constr+="</div></td>";
	constr+="<td width=30><div class=pagegridnext><a class='history' href='#"+keyword+","+curcat+","+cursubcat+","+(parseInt(curpage)+1>pagecount?pagecount:parseInt(curpage)+1)+"'>>></a></div></td></tr></table>";
	
	$("#pagebar").html(constr);
	$("#pagebar").show();
}


function popup_init(domChunk){
	var WIN_WIDTH = screen.width > 1024?1024:screen.width; //defaults to 1024 if no paramaters were added to URL
	var WIN_HEIGHT = screen.height> 768?768:screen.height; //defaults to 768 if no paramaters were added to URL
	var X = (screen.width - WIN_WIDTH)/2;
	var Y = (screen.height - WIN_HEIGHT)/2;
	
	$(domChunk).click(function(){
		var a = this.href || this.alt;
		var videono = this.name || "00000";
		logClick("/Evaluate/DEMOcenter/Videos/"+videono);
		TheNewWin = window.open(a, "TheNewWin", "height="+WIN_HEIGHT+",width="+WIN_WIDTH+",toolbar=no, menubar=no, scrollbars=no, resizable=yes,location=no, directories=no, status=no");
		
		return false;
	});
}

function log_init(domChunk){
	$(domChunk).click(function(){
		var t = this.title || this.name || $(this).text() || null;
		var a = this.href || this.alt;
		logClick("/Evaluate/DEMOcenter/NextStep/"+GetID(t));
		return true;
	});
}

function logClick(url){
	if(window.pageTracker){
		pageTracker._trackPageview(url);
	}
}



