/*
Copyright Piotr Zagawa, 08-12-2008
All Rights Reserved
vetch@vetch.magot.pl
*/


//AnCal program information
var sAnCal_currVersion = "1.4";
var sAnCal_updated = "10 December 2008";
var sAnCal_file = "/utils/download.php?f=AnCal.apk";

//page keys for easy runtime check
var pageKey_main			= "main";
var pageKey_tripcomp  = "tripcomputer";
var pageKey_ancal			= "ancal";
var pageKey_qstart		= "qstart";
var pageKey_tips			= "tips";
var pageKey_download	= "download";
var pageKey_history		= "history";
var pageKey_software	= "software";
var pageKey_contact		= "contact";

//page types
var pageType_main = "main";
var pageType_ancal = "ancal";

//mapping links page keys
var mapPageLinks = new Object();
mapPageLinks[pageKey_main]			= "index.html";
mapPageLinks[pageKey_tripcomp]	= "pages/tripcomputer.html";
mapPageLinks[pageKey_ancal]			= "pages/ancal.html";
mapPageLinks[pageKey_qstart]		= "pages/qstart.html";
mapPageLinks[pageKey_tips]			= "pages/tips.html";
mapPageLinks[pageKey_download]	= "pages/download.html";
mapPageLinks[pageKey_history]		= "pages/history.html";
mapPageLinks[pageKey_software]	= "pages/software.html";
mapPageLinks[pageKey_contact]		= "pages/contact.html";

//mapping page key to page type
var mapPageType = new Object();
mapPageType[pageKey_main]			= pageType_main;
mapPageType[pageKey_tripcomp] = pageType_main;
mapPageType[pageKey_ancal]		= pageType_ancal;
mapPageType[pageKey_qstart]		= pageType_ancal;
mapPageType[pageKey_tips]			= pageType_ancal;
mapPageType[pageKey_download]	= pageType_ancal;
mapPageType[pageKey_history]	= pageType_ancal;
mapPageType[pageKey_software]	= pageType_main;
mapPageType[pageKey_contact]	= pageType_main;

//menu items objects
var vecMenuItems = new Array
(
	new menuItem("Main",						pageKey_main, 		0),
	new menuItem("TripComputer",		pageKey_tripcomp,	0),
	new menuItem("AnCal",						pageKey_ancal,		0),
	new menuItem("Quick Start",			pageKey_qstart,		1),
	new menuItem("Tips",						pageKey_tips,			1),
	new menuItem("Download",				pageKey_download,	1),
	new menuItem("Version History",	pageKey_history,	1),
	new menuItem("Other Software",	pageKey_software,	0),
	new menuItem("Contact",					pageKey_contact,	0)
);


//functions
function quote(s)
{
	return "\"" + s + "\"";
}

function getDiv(sID, sClass, sContent)
{
	sID = (sID.length == 0)?"":"id=" + quote(sID);
	sClass = (sClass.length == 0)?"":"class=" + quote(sClass);
	return "<div " + sID + " " + sClass + ">" + sContent + "</div>";
}

function getPar(sContent)
{
	return "<p>" + sContent + "</p>";
}

function getLink(sRef, sText, sClass, sID)
{
	sClass = (sClass.length == 0)?"":"class=" + quote(sClass) + " ";
	sID = (sID.length == 0)?"":"id=" + quote(sID) + " ";
	return "<a " + sClass + " href=" + quote(sRef) + ">" + sText + "</a>";
}

function getParent(sPath)
{
	if (sPath.indexOf("/") != -1)
	{
		var vecPath = sPath.split("/");
		if (vecPath.length > 0)
			return vecPath[0];
	}
	return "";
}

function pageHasParent(sPageKey)
{
	var sParent = getParent(getPageLink(sPageKey));
	if (sParent.length > 0)
		return true;
	return false;
}

function removeParent(sPath)
{
	if (sPath.indexOf("/") != -1)
	{
		var vecPath = sPath.split("/");
		if (vecPath.length > 0)
			vecPath[0] = "";
		sPath = vecPath.join("/");
		if (sPath.length > 0)
			if (sPath.charAt(0) == "/")
				sPath = sPath.substring(1);				
	}
	return sPath;	
}

function getPageLink(sCurrentPageKey)
{
	return mapPageLinks[sCurrentPageKey];	
}

function getPageType(sCurrentPageKey)
{
	return mapPageType[sCurrentPageKey];	
}

function getPageStyleClass(sCurrentPageKey)
{
	return getPageType(sCurrentPageKey);
}

function isPageType_AnCal(sCurrentPageKey)
{
	return (getPageType(sCurrentPageKey) == pageType_ancal);
}

function writeTitleGfx(sCurrentPageKey)
{
	var sClass = getPageStyleClass(sCurrentPageKey);
	var sContent = "<span class=\"img_left\"><span class=\"img_right\"></span></span>";
	sContent += getDiv("", "clear", "");	
	document.write(getDiv("header", sClass, sContent));
}

function writeScreens(vecPicArray)
{	
	var sContent = "";
	for (var i = 0; i < vecPicArray.length; i++)
	{	
		var sItem = vecPicArray[i];		
		var vecPair = sItem.split(":");		
		var sInfo = vecPair[0];
		var sImage = "../gfx/ancal/" + vecPair[1] + ".png";
		var sPictureContent = "<img alt=" + quote(sInfo) + " src=" + quote(sImage) + " /><span>" + sInfo + "</span>";	
		var sPicture = getDiv("", "", sPictureContent);		
		sContent += sPicture;
	}		
	document.write(getDiv("", "smallscreenshots", sContent));
}

function writeAppVersion()
{
	var sContent = "";
	sContent += getDiv("", "", "Current version: <span>" + sAnCal_currVersion + "</span>");
	sContent += getDiv("", "", "<span>" + sAnCal_updated + "</span>");
	document.write(getDiv("", "version", sContent));
}

function writeCopyright()
{
	var dtNow = new Date();
	var sContent = "";
	sContent += getDiv("", "", "&copy; 2001 - " + dtNow.getFullYear());
	sContent += getDiv("", "", "Piotr Zagawa");
	sContent += getDiv("", "", "All Rights Reserved");
	document.write(getDiv("", "copyright", sContent));
}

function menuItem(sName, sPageKey, iMenuLevel)
{
	//fields
	this.sName = sName;
	this.sPageKey = sPageKey;
	this.sLink = getPageLink(sPageKey);
	this.iLevel = iMenuLevel;

	//methods
  this.getHTML = function(sCurrentPageKey)
	{
		bSelected = (sCurrentPageKey == this.sPageKey);
		sLinkClass = (bSelected)?"selected":"";		
		sLinkClass += " level" + this.iLevel;

		if (getPageType(this.sPageKey) == pageType_ancal)
			sLinkClass += " subitem";

		if (pageHasParent(sCurrentPageKey))
		{
			this.sLink = removeParent(this.sLink);
			if (!pageHasParent(this.sPageKey))
				this.sLink = "../" + this.sLink;
		} else {
			this.sLink = this.sLink;			
		}
				
		return getLink(this.sLink, this.sName, sLinkClass, "");
	}
}

function writeMenu(sCurrentPageKey)
{
	var sContent = "";
	for (var i = 0; i < vecMenuItems.length; i++)
	{
		var item = vecMenuItems[i];
		sContent += item.getHTML(sCurrentPageKey);
	}	
	document.write(getDiv("menu", "", sContent));

	if (isPageType_AnCal(sCurrentPageKey))
		writeAppVersion();

	writeCopyright();
}

function writeTop(sCurrentPageKey)
{	
	writeTitleGfx(sCurrentPageKey);
	document.write("<div id=\"sidebar\">");	
		writeMenu(sCurrentPageKey);	
	document.write("</div>");
}

function AnCalAccept()
{
	//get accept checkbox
	var chkAccept = document.getElementById('chkAccept');
	if (chkAccept != null)
	{
		//show download link if accepted
		var sLink = "";
		var parAnCalDownLink = document.getElementById('AnCalDownLink');		
		if (chkAccept.checked == true)
		{
			var sLink = getPar(getLink(sAnCal_file, "&#8226; download", "", "downAnCal"));	
		}
		parAnCalDownLink.innerHTML = sLink;
	}
}

function writeAnCalDownload()
{
	//header
	var sContent = getPar("<b>AnCal version " + sAnCal_currVersion + "</b>, " + sAnCal_updated);
	sContent += getPar("Free Software");
	
	//information
	var sInfo = "You can NOT distribute AnCal without author permission.<br/>";
	sInfo += "You can use AnCal only for your personal purposes.";
	sContent += getDiv("", "downAnCalInfo", sInfo);
		
	//accept control
	var sAccept = "<input id='chkAccept' type='checkbox' /><span>I understand and accept.</span>";
	sContent += getDiv("downAccept", "", sAccept);
	sContent += getDiv("AnCalDownLink", "", "");
	
	//out html
	document.write(sContent);
	
	//update checkbox
	var chkAccept = document.getElementById('chkAccept');
	if (chkAccept != null)
	{
		chkAccept.onclick = AnCalAccept;
		chkAccept.checked = false;
	}
}

