var plugin;
var imageFile;
var percentage = 0;
var currentPage = 1;
var xml;
var curProductSet;
var productsHolder;
var productsFile;
var numElements;
var totalPages;
var featureTab = "0";
var featureShow = 0;

function rootLoaded(sender) 
{
	plugin = sender.getHost();
	productsHolder = sender.findName("productSlider");
	if (plugin)
    {
    	sender.findName("downloadRing").Visibility = "Visible";
    	sender.findName("loadAnim").Begin();
	    downloader = plugin.createObject("downloader");
	    downloader.open("GET", backImagesFile);
   	    downloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
   	    downloader.addEventListener("completed", downloadData);
   	    downloader.send();
    }
}

function downloadData(sender) 
{
	imageFile = sender;
	percentage = 0;
    sender.findName("downloadFile").text = "product list";
    dataDownloader = plugin.createObject("downloader");
    dataDownloader.open("GET", productFile);
    dataDownloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
    dataDownloader.addEventListener("completed", downloadProducts);
    dataDownloader.send();
}

function downloadProducts(sender) 
{
	xml = sender.responseText;
	if (window.ActiveXObject) 
	{
        doc = new ActiveXObject("Microsoft.XMLDOM");
        if (!doc.loadXML(xml))
        {
            throw doc.parseError.reason;
        }
    }
    else 
    {
        var parser = new DOMParser();
        doc = parser.parseFromString(xml, "text/xml");
    }       
    curProductSet = doc.getElementsByTagName("productItem");	
	percentage = 0;
    sender.findName("downloadFile").text = "service images";
    dataDownloader = plugin.createObject("downloader");
    dataDownloader.open("GET", productImages);
    dataDownloader.addEventListener("downloadProgressChanged", onDownloadProgressChanged);
    dataDownloader.addEventListener("completed", siteImagesDownloaded);
    dataDownloader.send();
}

function siteImagesDownloaded(sender)
{
    // Stop loading anim
	productsFile = sender;
	sender.findName("downloadRing").Visibility = "Collapsed";
   	sender.findName("loadAnim").Stop();
   	percentage = 0;
 
    // Start slide show  	
	sender.findName("background1").setSource(imageFile,"background1.jpg");	
		
	// Show products
	ShowProducts(sender);		
}

function onDownloadProgressChanged(sender, eventArgs) 
{
    percentage = Math.floor(sender.downloadProgress * 100) + "%";
    sender.findName("downloadAmount").Text = percentage + "";
}

// Show Products
function ShowProducts(sender)
{           
	loadProducts(sender);   
	sender.findName("background1").Opacity = 1;
	sender.findName("initializeProductView").Begin();
	if (totalPages > 1) {
		sender.findName("arrow_right").Cursor = "Hand";
		sender.findName("RightButtonOpacity").Value = 1;
		sender.findName("showHideRightButton").Begin();
	}		       
}

function loadProducts(sender) 
{	
	numElements = 0;
	totalPages = 0;   	
	left_pos = 0;
	numElements = curProductSet.length;
	totalPages = Math.ceil(numElements/5);
	for(i = 0; i < numElements; i++) {
		img_url = curProductSet[i].attributes.getNamedItem("imgThumb").value;
		xaml_str = '<Image MouseLeftButtonDown="showProduct" MouseEnter="showLabel" Tag="' + img_url + '" MouseLeave="hideLabel" Name="pr_' + i + '" Width="75" Height="100" Source="" Canvas.Left="' + left_pos + '" Stretch="Uniform" Cursor="Hand"/>'
		xamlTags = plugin.content.createFromXaml(xaml_str);
		productsHolder.children.add(xamlTags);
		var item = 'pr_' + i;
		sender.findName(item).setSource(productsFile,img_url);
		left_pos += 135;
	}
}


// Product Selections
function showProduct(sender) 
{
    var URL;
	for (i = 0; i < numElements; i++) 
	{
	    var sometext = sender.Tag;	    
	    sometext = sometext.toLowerCase();
	    matchText = curProductSet[i].attributes.getNamedItem("imgThumb").value;
		if (sometext == matchText)
		{		   
			URL = curProductSet[i].attributes.getNamedItem("URL").value;					
		}
	}
	window.open(URL, "_blank"); 	
}

function slideLeft(sender)
{
	// next products
	if (sender.Cursor == "Arrow")
	{
		return;
	}
	sender.findName("clickBlock").Visibility = "Visible";
	currentPage += 1;
	sender.findName("SlideRightEnd").Value = sender.findName("SlideLeftEnd").Value + 675;
	sender.findName("slideProductsLeft").Begin();

	if (currentPage > 1) 
	{
		sender.findName("arrow_left").Cursor = "Hand";
		sender.findName("LeftButtonOpacity").Value = 1;		
		sender.findName("showHideLeftButton").Begin();
	}

	if (currentPage != 1 && currentPage != totalPages) 
	{
		sender.findName("arrow_right").Cursor = "Hand";
		sender.findName("arrow_left").Cursor = "Hand";
		sender.findName("LeftButtonOpacity").Value = 1;		
		sender.findName("showHideLeftButton").Begin();
	}
	else if (currentPage == totalPages) 
	{
		sender.findName("arrow_right").Cursor = "Arrow";
		sender.findName("RightButtonOpacity").Value = 0;
		sender.findName("showHideRightButton").Begin();
	}

}

function slideRight(sender)
{
	// previous products
	if (currentPage == 1) 
	{
		sender.Cursor == "Arrow";		
		return;
	}
	else 
	{
		sender.Cursor == "Hand";
	}
	
	sender.findName("clickBlock").Visibility = "Visible";
	currentPage -= 1;
	sender.findName("SlideLeftEnd").Value = sender.findName("SlideRightEnd").Value - 675;
	sender.findName("slideProductsRight").Begin();
		
	if (currentPage == 1) 
	{
		sender.findName("arrow_left").Cursor = "Arrow";
		sender.findName("LeftButtonOpacity").Value = 0;
		sender.findName("showHideLeftButton").Begin();
	}
	
	if (currentPage == (totalPages-1)) 
	{
		sender.findName("arrow_right").Cursor = "Hand";
		sender.findName("RightButtonOpacity").Value = 1;
		sender.findName("showHideRightButton").Begin();
	}

}

function updateSlideEnd(sender) 
{
	if (sender.name == "slideProductsLeft") 
	{
		sender.findName("SlideLeftEnd").Value -= 675;
	}
	else 
	{
		sender.findName("SlideRightEnd").Value += 675;
	}
	allowClicks(sender);
}

function showLabel(sender) 
{
	var labelLocationY = 0;
	var labelLocationX = 0;
	var altText;
	for (i = 0; i < numElements; i++) 
	{
	    var sometext = sender.Tag;
	    sometext = sometext.toLowerCase();
	    matchText = curProductSet[i].attributes.getNamedItem("imgThumb").value;
	    if (sometext == matchText)
	    {
			altText = curProductSet[i].attributes.getNamedItem("toolTip").value;
		}
	}
	sender.findName("productDescription").Text = altText;
	var labelWidth = sender.findName("productDescription").ActualWidth + 30;			
	sender.findName("productLabel").Width = labelWidth;
	var textCenter = sender.findName("ProductText").width / 2;
	var labelCenter = sender.findName("productLabel")["Canvas.Left"] + 15; 
	sender.findName("productDescription")["Canvas.Left"] = labelCenter;
	labelLocationX = sender["Canvas.Left"] - ((sender.findName("productLabel").width * .5) -  100); 
	if (currentPage > 1) 
	{
		labelLocationX = sender["Canvas.Left"] - ((sender.findName("productLabel").width * .5) -  100); 
		labelLocationX -= (675*(currentPage - 1));
		labelLocationX = Math.abs(labelLocationX);
	}
	sender.findName("ProductText")["Canvas.Left"] = labelLocationX;
	sender.findName("ProductText").Visibility = "Visible";
}

function hideLabel(sender) 
{ 
    sender.findName("ProductText").Visibility = "Collapsed"; 
}

function returnToCatalog(sender)
{ 
    sender.findName("hideFeature").Begin(); 
    featureShow = 0;
}

function returnToCalalogOnTab(selectedTab)
{
    if (window.Silverlight && featureShow == 1 && selectedTab != featureTab)
    {
        var sl = document.getElementById("SilverlightControl");                                   
        sl.content.findName("hideFeature").Begin();
        featureShow = 0;
    }
}

function learnMoreTab(sender)
{ 
    activateTab(0,featureTab);
}

function allowClicks(sender) 
{ 
    sender.findName("clickBlock").Visibility = "Collapsed"; 
}

