// JavaScript Document
var dom = (document.getElementById) ? true : false;
var ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
var ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
var ns4 = (document.layers && !dom) ? true : false;
var ie4 = (document.all && !dom) ? true : false;
var nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

var ButtonCount = 14;
var NavPage = new Array();
var CurrentPage = 1;
var PhoneType;
var imageList = new Array();
var imgPage = new Image();
var imgLoading = new Image();
var currentButton;
var totalButtons;
var progress;

imgLoading.onload = loadMainImage;
imgPage.onload = loadButtons;

function GetDocObject(Doc, Obj, Level)
{
	var objref;
	
	if (dom)
		objref = Doc.getElementById(Obj);
	else if (ie4)
		objref = Doc.all[Obj];
	else if (ns4)
		objref = Doc.layers[Obj];

	if (Level == "style")
		if (objref.style)
			return objref.style;
		else
			return objref;
	else
		return objref;
}

function getParam(paramName)
{
	var ret;
	var arg;
	var arg_values;
    var paramStr = document.location.search;

	if (paramStr == "")
      return "";

    // remove '?' in front of paramStr
    if (paramStr.charAt(0) == "?")
        paramStr = paramStr.substring(1, paramStr.length);

    arg = (paramStr.split("&"));

	for (i=0; i < arg.length; i++) {
        arg_values = arg[i].split("=")
        if (unescape(arg_values[0]) == paramName)
		{
        	if (self.decodeURIComponent) // check if decodeURIComponent() is defined
                ret = decodeURIComponent(arg_values[1]);
            else
                ret = unescape(arg_values[1]);  // IE 5.0 and older does not have decodeURI
            return ret;
        }
    }
    return;
}

function PageNav()
{
	this.Button = new Array();
	this.ButtonSize = arguments[0];
	this.img = new Image();
	
	for (var i = 1; i < arguments.length; i += 3)
		this.Button[arguments[i]] = new AddLink(arguments[i + 1], arguments[i + 2]);
}

function AddLink(File, Link)
{
	this.File = File;
	this.Link = Link;
	this.img = new Image();
	this.imgOver = new Image();
}

function SetPageNavParms(sPhoneType)
{
	NavPage = new Array();
	
	switch (sPhoneType)
	{
		//NavPage[page_num] = new PageNav(22,button_num,file_prefix,link_page,...);
		case "pcs400" :
			NavPage[1] = new PageNav(45,1,"btn_outgoingcall",2,2,"btn_incomingcall",10,3,"btn_webintegration",201,4,"btn_contentdelivery",101,12,"btn_pcs50",2,13,"btn_mac_demo",2);
			NavPage[2] = new PageNav(22,1,"btn_contacts",3,2,"btn_favourites",4,3,"btn_departments",5,4,"btn_internal",6,5,"btn_pickup",7,6,"btn_lnr",8,9,"btn_userconfig",11,10,"btn_messages",9);
			NavPage[3] = new PageNav(22,5,"btn_selectnumber",19,6,"btn_dial",2,7,"btn_contactrec",14,8,"btn_return",2);
			NavPage[4] = new PageNav(22,8,"btn_return",2);
			NavPage[5] = new PageNav(22,6,"btn_dial",2,8,"btn_return",2);
			NavPage[6] = new PageNav(22,5,"btn_selectnumber",18,6,"btn_dial",2,7,"btn_contactrec",16,8,"btn_return",2);
			NavPage[7] = new PageNav(22,8,"btn_return",2);
			NavPage[8] = new PageNav(22,3,"btn_contactnumbers",17,8,"btn_return",2);
			NavPage[9] = new PageNav(22,8,"btn_return",2);
			NavPage[10] = new PageNav(22,1,"btn_answer",12);
			NavPage[11] = new PageNav(22,1,"btn_close",2);
			NavPage[12] = new PageNav(22,2,"btn_hangup",1,6,"btn_findnumber",13);
			NavPage[13] = new PageNav(22,5,"btn_addnew",15,6,"btn_goback",12);
			NavPage[14] = new PageNav(22,2,"btn_close",3,8,"btn_return",2);
			NavPage[15] = new PageNav(22,2,"btn_close",13);
			NavPage[16] = new PageNav(22,1,"btn_close",6);
			NavPage[17] = new PageNav(22,2,"btn_close",8);
			NavPage[18] = new PageNav(22,2,"btn_close",6);
			NavPage[19] = new PageNav(22,2,"btn_close",3);
			NavPage[101] = new PageNav(45,1,"btn_video",102,2,"btn_webcam",103,3,"btn_triggers",104,4,"btn_entertainment",105);
			NavPage[102] = new PageNav(45,1,"btn_video",102,2,"btn_webcam",103,3,"btn_triggers",104,4,"btn_entertainment",105);
			NavPage[103] = new PageNav(45,1,"btn_video",102,2,"btn_webcam",103,3,"btn_triggers",104,4,"btn_entertainment",105);
			NavPage[104] = new PageNav(45,1,"btn_video",102,2,"btn_webcam",103,3,"btn_triggers",104,4,"btn_entertainment",105);
			NavPage[105] = new PageNav(45,1,"btn_video",102,2,"btn_webcam",103,3,"btn_triggers",104,4,"btn_entertainment",105);
			NavPage[201] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			NavPage[202] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			NavPage[203] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			NavPage[204] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			NavPage[205] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			NavPage[206] = new PageNav(45,1,"btn_calllog",204,2,"btn_contactman",205,3,"btn_intranet",203,4,"btn_webaccess",206,5,"btn_webpush",202);
			break;
		case "pcs50" :
			NavPage[1] = new PageNav(22,1,"btn_contacts",3,2,"btn_favourites",4,3,"btn_departments",5,4,"btn_internal",6,5,"btn_pickup",7,6,"btn_lnr",8,9,"btn_userconfig",11,10,"btn_messages",9);
			NavPage[2] = new PageNav(22,1,"btn_contacts",3,2,"btn_favourites",4,3,"btn_departments",5,4,"btn_internal",6,5,"btn_pickup",7,6,"btn_lnr",8,9,"btn_userconfig",11,10,"btn_messages",9);
			NavPage[3] = new PageNav(22,5,"btn_selectnumber",19,6,"btn_dial",2,7,"btn_contactrec",14,8,"btn_return",2);
			NavPage[4] = new PageNav(22,8,"btn_return",2);
			NavPage[5] = new PageNav(22,6,"btn_dial",2,8,"btn_return",2);
			NavPage[6] = new PageNav(22,5,"btn_selectnumber",18,6,"btn_dial",2,7,"btn_contactrec",16,8,"btn_return",2);
			NavPage[7] = new PageNav(22,8,"btn_return",2);
			NavPage[8] = new PageNav(22,3,"btn_contactnumbers",17,8,"btn_return",2);
			NavPage[9] = new PageNav(22,8,"btn_return",2);
			NavPage[10] = new PageNav(22,1,"btn_answer",12);
			NavPage[11] = new PageNav(22,1,"btn_close",2);
			NavPage[12] = new PageNav(22,2,"btn_hangup",1,6,"btn_findnumber",13);
			NavPage[13] = new PageNav(22,5,"btn_addnew",15,6,"btn_goback",12);
			NavPage[14] = new PageNav(22,2,"btn_close",3,8,"btn_return",2);
			NavPage[15] = new PageNav(22,1,"btn_close",13);
			NavPage[16] = new PageNav(22,1,"btn_close",6);
			NavPage[17] = new PageNav(22,2,"btn_close",8);
			NavPage[18] = new PageNav(22,2,"btn_close",6);
			NavPage[19] = new PageNav(22,2,"btn_close",3);
			break;
		case "pcsmac" :
			NavPage[1] = new PageNav(22,1,"btn_mac_contacts",3,2,"btn_mac_favourites",4,3,"btn_mac_departments",5,4,"btn_mac_internal",6,5,"btn_mac_pickup",7,6,"btn_mac_lnr",8,7,"btn_mac_messages",9,14,"btn_info",1);
			NavPage[2] = new PageNav(22,1,"btn_mac_contacts",3,2,"btn_mac_favourites",4,3,"btn_mac_departments",5,4,"btn_mac_internal",6,5,"btn_mac_pickup",7,6,"btn_mac_lnr",8,7,"btn_mac_messages",9,14,"btn_info",2);
			NavPage[3] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",3);
			NavPage[4] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",4);
			NavPage[5] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",5);
			NavPage[6] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",6);
			NavPage[7] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",7);
			NavPage[8] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",7);
			NavPage[9] = new PageNav(22,7,"btn_mac_return",2,14,"btn_info",9);
			break;
	}
}

function Initialise()
{
	PhoneType = getParam('PhoneType');
	
	if (PhoneType == '')
		PhoneType = 'pcs400';

	SetPageNavParms(PhoneType);
	
	ShowPage();
}


function _onMouseOver(Key, Button)
{
	Button.src = NavPage[CurrentPage].Button[Key].imgOver.src;
}

function _onMouseOut(Key, Button)
{
	if (NavPage[CurrentPage].Button[Key])
		Button.src = NavPage[CurrentPage].Button[Key].img.src;
}

function _onClick(Key)
{
	var NewLink = NavPage[CurrentPage].Button[Key].Link;
	

	if (NewLink > 0)
	{
		CurrentPage = NewLink;

		if (Key == 12)
			self.location = "phonedemo.htm?PhoneType=pcs50";
		else
			if (Key == 13)
				self.location = "phonedemo.htm?PhoneType=pcsmac";
			else
				if (Key == 14)
					self.location = "mac_campaign/email/response.htm";
				else
					ShowPage();
	}
}

function ShowPage()
{
	//hide buttons
	for (i = 1; i <= ButtonCount; i++)
	{
		GetDocObject(document, "btnLink" + i, "style").visibility = "hidden";
		GetDocObject(document, "btnLink" + i, "style").height = "22px" ;
	}

	totalButtons = 0;
	progress = 0;
	
	//now load the new page navigation map and preload images etc
	if (NavPage[CurrentPage].img.src.length == 0)
		showLoading();
	else
		loadMainImage();
}

function showLoading()
{
	for (var i in NavPage[CurrentPage].Button)
		totalButtons++;
	progress = 1;
	
	document.imgProgress1.src = 'images/common/img_progress_off.gif';
	document.imgProgress2.src = 'images/common/img_progress_off.gif';
	document.imgProgress3.src = 'images/common/img_progress_off.gif';
	document.imgProgress4.src = 'images/common/img_progress_off.gif';
	document.imgProgress5.src = 'images/common/img_progress_off.gif';

	setTimeout('showPageDelay()', 1000);
	
	imgLoading.src = "images/phonedemo/img_" + PhoneType + "_loading.jpg";
	GetDocObject(document, 'divProgress', 'style').visibility = 'visible';
}

function showPageDelay()
{
	document.imgProgress1.src = 'images/common/img_progress_on.gif';
}


function loadMainImage()
{
	//if a new page then show the loading image
	if (NavPage[CurrentPage].img.src.length == 0)
		document.imgPage.src = imgLoading.src;
		
	//now load the image, there is an onload event handler active shich will be called when the image is fully loaded
	imgPage.src = "images/phonedemo/img_" + PhoneType + "_page" + CurrentPage + ".jpg";
}

//called when the main image is fully loaded by the onload event handler
function loadButtons()
{
	//capture the main page image
	NavPage[CurrentPage].img.src = imgPage.src
	
	currentButton = 0;

	loadNextButton();
}

function loadNextButton()
{
	getNextButton();
	
	if (currentButton == 0)
	{
		progress = totalButtons;
		updateProgress();

		setTimeout('showPageImages()',1);
	}
	else
	{
		updateProgress();

		NavPage[CurrentPage].Button[currentButton].img.onload = buttonLoaded;
		
		NavPage[CurrentPage].Button[currentButton].img.src = "images/phonedemo/" + NavPage[CurrentPage].Button[currentButton].File + ".gif";
	}
}

function buttonLoaded()
{
	loadNextButton();
}

function updateProgress()
{
	if (totalButtons > 0)
	{
		progress++;

		var total = parseInt((5/totalButtons) * progress);
		
		if (total > 5)
			total = 5;

		for (var i = 1; i <= total; i++)
			if (i > 0 && i < 6)
				GetDocObject(document, 'imgProgress' + i, 'root').src = 'images/common/img_progress_on.gif';
	}
}
function getNextButton()
{
	var useNext = false;
	var oldButton = currentButton;
	
	currentButton = 0;
	
	for (i in NavPage[CurrentPage].Button)
		if (oldButton == 0 || useNext)
		{
			currentButton = i;
			break;
		}
		else
			if (i == oldButton)
				useNext = true;
}
	
function showPageImages()
{
	totalButtons = 0;

	GetDocObject(document, "divProgress", "style").visibility = "hidden";

	document.imgPage.src = imgPage.src;

	for (i in NavPage[CurrentPage].Button)
	{
		GetDocObject(document, "btnLink" + i, "root").src = NavPage[CurrentPage].Button[i].img.src;
		GetDocObject(document, "btnLink" + i, "style").height = NavPage[CurrentPage].ButtonSize + "px" ;
		GetDocObject(document, "btnLink" + i, "style").visibility = "visible" ;
	}

	for (i in NavPage[CurrentPage].Button)
		NavPage[CurrentPage].Button[i].imgOver.src = "images/phonedemo/" + NavPage[CurrentPage].Button[i].File +  "_over.gif";


}

function ShowFirstPage()
{
	PhoneType = 'pcs400';
	CurrentPage = 1;
	SetPageNavParms(PhoneType);
	ShowPage();
}
