var screenshotViews = new Array();
var screenshotSets = new Array();
var videoHTML = "";
var targetScreenshot;
function InitializeScreenshotViewer()
{    
    var firstFound = false;
    var setIndex = -1;
    var screenshots = document.getElementById('screenshotContent').getElementsByTagName('div');
    for(var index = 0; index < screenshots.length; index++)
    {
        if (screenshots[index].className == 'screenshotSet')
        {
            setIndex++;
            screenshotSets.push(new Array());
        }
        if (screenshots[index].className == 'screenshotViewShow')
        {
            if (firstFound)
                screenshots[index].className = 'screenshotViewHide';
            else
                targetScreenshot = screenshots[index];
            firstFound = true;   
            
            if (setIndex >= 0)
                screenshotSets[setIndex].push(screenshots[index].innerHTML);
            else
                screenshotViews.push(screenshots[index].innerHTML);
        }
    }
    if (setIndex >= 0)
        screenshotViews = screenshotSets[0];
    InitializePagination();
    ShowScreenshot(0);
    
    var videoPlayer = document.getElementById('ssvVideoContainer');
    if (videoPlayer != null)
		if (videoPlayer.innerHTML.indexOf('screenshotVideo') >= 0)
			toggleShowVideo();
}
function InitializePagination()
{   
    var total;
    if (total = document.getElementById('screenshotTotal'))
        total.innerHTML = screenshotViews.length;
}


function ShowScreenshot(viewIndex)
{
    targetScreenshot.innerHTML = screenshotViews[viewIndex];
    var previous;
    if (previous = document.getElementById('screenshotPrevious'))
    {
        if (viewIndex == 0)
        {
            var image = previous.getElementsByTagName('img')[0];
            image.src = image.src.replace('static','disabled').replace('press','disabled').replace('hover','disabled');
            previous.onclick = function() { void(0); };
            previous.className = 'screenshotNavButtonDisabled';
        }
        else
        {
            var image = previous.getElementsByTagName('img')[0];
            image.src = image.src.replace('disabled','static');
            previous.onclick = function() { ShowScreenshot(viewIndex - 1); };
            previous.className = 'screenshotNavButton';
        }
    }
    var next;
    if (next = document.getElementById('screenshotNext'))
    {        
        if (viewIndex == screenshotViews.length - 1)
        {
            var image = next.getElementsByTagName('img')[0];
            image.src = image.src.replace('static','disabled').replace('press','disabled').replace('hover','disabled');
            next.onclick = function() { void(0); };
            next.className = 'screenshotNavButtonDisabled';
        }
        else
        {
            var image = next.getElementsByTagName('img')[0];
            image.src = image.src.replace('disabled','static');
            next.onclick = function() { ShowScreenshot(viewIndex + 1); };
            next.className = 'screenshotNavButton';
        }
    }
    
    var currentView;
    if (currentView = document.getElementById('screenshotIndexBox'))
        currentView.value = viewIndex + 1;
}

function ssNavButtonHover (sender)
{
    var image = sender.getElementsByTagName('img')[0];
    image.src = image.src.replace('static','hover').replace('press','hover');
}
function ssNavButtonStatic (sender)
{
    var image = sender.getElementsByTagName('img')[0];
    image.src = image.src.replace('hover','static').replace('press','static');
}
function ssNavButtonClick (sender)
{
    var image = sender.getElementsByTagName('img')[0];
    image.src = image.src.replace('hover','press').replace('static','press');
}

function ssNavKey(e)
{
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
    if (KeyID == 13) // enter
    {
        var newIndex = document.getElementById('screenshotIndexBox').value;
        if (newIndex >= 1 && newIndex <= screenshotViews.length)
            ShowScreenshot((newIndex - 1));
    }
    else if (document.getElementById('screenshotIndexBox').value.length > 2 || KeyID < 48 || KeyID > 57)
    {
        return false;
    }
}

function getQueryStringValue(key) {
    var queryString = window.location.search.substring(1);
    var parameters = queryString.split('&');
    for (var index=0; index < parameters.length; index++) {
        if (parameters[index].indexOf(key + "=") > -1)
            return parameters[index].split("=")[1];
    }
    return "";
}

function viewChapter(chapterNumber)
{
    if (chapterNumber > 0 && chapterNumber <= screenshotSets.length) {
        screenshotViews = screenshotSets[chapterNumber - 1];
        InitializePagination();
        ShowScreenshot(0);
        document.getElementById('ssvVideoContainer').style.display = "none";
	    document.getElementById('screenshotsContainer').style.display = "block";
	}
}

function swapViewer(cmsPath)
{
    if (xslDocumentPath == null)
        xslDocumentPath = "";
    var requestString = "<content>";
        requestString += "<XMLCMSPath>" + cmsPath + "</XMLCMSPath>";
        requestString += "<XSLDocumentPath>" + document.getElementById("xslDocumentPath").value + "</XSLDocumentPath>";
        requestString += "<templatePath>" + document.getElementById("templatePath").value + "</templatePath>";
        requestString += "</content>";
    send("/windows/components/ScreenShotViewer/screenshotViewer.ashx", requestString, contentDownloaded);
}
function contentDownloaded(result)
{
    var resultParts = result.responseText.split("&&video&&");
    
    // reset screenshots
    while (screenshotViews.length > 0)
        screenshotViews.pop();    
    screenshotViews = resultParts[0].split("&&ss&&");
    InitializePagination();
    ShowScreenshot(0);
    
    // reset video
    if (resultParts.length > 1)
    {
        var videoProps = resultParts[1].split("&&vid&&");
        var newVideoHeight = videoProps[0];
        var newVideoWidth = videoProps[0];
        var newVideoPath = videoProps[0];
        document.getElementById('ssvVideoContainer').style.display = "block";
        document.getElementById('screenshotsContainer').style.display = "none";
        document.getElementById('videoHost').innerHTML = "";
        createVideo("videoHost", newVideoPath, newVideoHeight, newVideoWidth);
    }
    else
    {
        document.getElementById('ssvVideoContainer').style.display = "none";
        document.getElementById('screenshotsContainer').style.display = "block";
    }    
}

function send(link, body, callbackFn) 
{
	try
	{
		try
		{
		    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		}catch(e){}
		var xml=window.ActiveXObject?new ActiveXObject('Microsoft.XmlHttp'):new XMLHttpRequest();
		if(xml.overrideMimeType)xml.overrideMimeType("text/xml");
		xml.onreadystatechange=watcher;
		xml.open('POST',link,true);
		xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xml.send(body);
	}
	catch(e)
	{
		alert('Error: '+(e.description?e.description:e))
	}
	
	function watcher()
	{
		if(xml.readyState==4)
		{
//		alert('to get: '+xml.responseText)
			var response={responseText:'',responseXML:xml.responseXML,responseBody:xml.responseBody,responseStream:xml.responseStream,statusText:xml.statusText,status:xml.status};
			if(xml.responseText.indexOf('<!DOCTYPE')<0)response.responseText=xml.responseText;
			callback(response);
		}
	}
    
    function callback(response)
    {
//		alert('POST: '+link+' \nto get: '+response.responseText)
		if(callbackFn&&typeof(callbackFn)=='function')callbackFn(response);
	}
};