﻿
// Product browser tool
var loc = document.location+""
if (loc.indexOf('localhost') > 0) {
    var imgPath = "url(/Iridium/Images/"
}
else {
    var imgPath = "url(/Images/"
}


function showProdNavBar() {
    //open it instantly, inserted to anchor point, such as on landing pages
    if (!$('prodNavBarWrapper')) {
        return
    }
    var panel = $('prodNavBarWrapper')
    panel.style.width = "960px"
    if ($('prodNavAnchor').hasClassName('nav905')) {
        $('prodNavBar').style.backgroundImage = imgPath + "BGProdNavBar905.png)"
        panel.style.width = "905px"
    }
    if ($('prodNavAnchor').hasClassName('navIndent')) {
        $('prodNavBar').style.left = "23px";
        $('prodNavBar').style.width = "905px"
        panel.style.width = "935px"
        $('prodNavPanel').style.width = "935px"
        $('prodNavPanel').style.backgroundImage = imgPath + "BGProdNavPanel935.png)"
    }


    //panel.style.marginTop = "75px"

    $('prodNavBar').down().hide()
    $('prodNavAnchor').update(panel)
    //panel.relativize()
    panel.style.position = 'relative'
    panel.show()

}

function prodNavBar(evt) {
    //expand nav bar (bar state, not panel state)
	if(!$('prodNavBarWrapper')) {
	    return
	}
	closePanels()
	var element = Event.element(evt);

	var myPos = findPos(element)
	var panel = $('prodNavBarWrapper')
	if (element.up('div').hasClassName('nav935')) {
		$('prodNavBar').style.backgroundImage = imgPath + "BGProdNavBar935.png)"
		$('prodNavBar').style.width = "935px"
		panel.style.width = "935px"
	}
	else {
		$('prodNavBar').style.backgroundImage = imgPath + "BGProdNavBar.png)"
	}

	var myPos = findPos(element)
	var panel = $('prodNavBarWrapper')
	new Effect.Morph('prodNavBarWrapper', { style: 'width:0px;', duration: 0, queue: 'front' })
	var panelWidth
	panel.style.top = myPos[1] + 'px'
	panel.style.left = myPos[0] + 'px'

	panel.style.width = "905px"

	//get parent width
	if (element.up('browseProducts')) {

	}


	$('prodNavBarWrapper').show()

	new Effect.Morph('prodNavBarWrapper', { style: 'width:962px;', duration: .5 })
	$('prodNavBarWrapper').addClassName('panelOpen')

	//new Effect.Appear('prodNavBar',{duration:.5})
}



function prodNavPanel(evt) {
	//create the navigation panel
	//load the product after the panel opens
	var element = Event.element(evt);


	var myPos = findPos($('prodNavBar'))
	var bar = element.up('div')
	var myPos = findPos(bar)
	closePanels()
	$('prodNavBar').show()
	var panel = $('prodNavPanel')

	var tabNum = prodTab(element)
	var tabs = panel.select('li').toArray()

	element.addClassName('active')
	tabs[tabNum].addClassName('active')
	panel.style.top = myPos[1] + 'px'
	panel.style.left = myPos[0] + 'px'
	panel.style.height = bar.getHeight() + 'px'

	if ($('prodNavBar').getWidth() < 960) {
		panel.style.width = "935px"
		panel.style.backgroundImage = imgPath + "BGProdNavPanel935.png)"
	}

	panel.show()
	$('prodSel').innerHTML = ""
	$('prodSub').innerHTML = ""
	var newTop = myPos[1] - 218 + 'px'
	panel.addClassName('panelOpen')
	ignoreScroll = 1
	new Effect.Morph(panel, { style: 'height:288px;top:' + newTop, duration: .5, afterFinish: function() { loadProd(tabNum) } })

}

function prodNavClose() {
	//close product/solution nav
	if ($('prodNavBarWrapper').style.position != 'relative') {
		new Effect.Fade('prodNavBarWrapper', { duration: .25 })
	}
	$('prodNavBar').select('.active').each(function(element) {
		element.removeClassName('active')
	})
	$('prodNavPanel').select('.active').each(function(element) {
		element.removeClassName('active')
    })
    $('prodView').innerHTML = ""
	new Effect.Fade('prodNavPanel', { duration: .25 })
}

function prodNav(evt) {
	var element = Event.element(evt);
	$('prodSel').innerHTML = ""
	$('prodSub').innerHTML = ""
	$('prodView').innerHTML = ""
	$('prodSelHolder').hide()
	$('prodSubHolder').hide()
	$('prodView').hide()
	var tabNum = prodTab(element)
	$('prodNavPanel').select('ul li').each(function(element) {
		element.removeClassName('active')
	})
	$('prodNavPanel').down('ul').down(tabNum).addClassName('active')
	loadProd(tabNum)
}

function prodTab(selElement) {
	//based on the element, find the ordinal tab number
	var myNodes = selElement.up().childElements().toArray()
	for (var x = 0; x < myNodes.length; x++) {
		if (myNodes[x].innerHTML == selElement.innerHTML) {
			return x
		}
	}
	return -1
}

function loadProd(tabNum) {


	switch (tabNum) {
		case 0:
			ProductDetails.GetProductTypes(loadProdCats_Success, loadProd_Error);
			break;
		case 1:
			ProductDetails.GetProductApplications(loadProdCats_Success, loadProd_Error);
			break;
		case 2:
			ProductDetails.GetProductIndustries(loadProdCats_Success, loadProd_Error);
			break;
		case 3:
			ProductDetails.GetProducts(loadProd_Success, loadProd_Error);
			break;
		default:
			break;
	}


}

function loadProdCats_Success(result) {
	$('prodSel').update(result);
	//kill previous observers
	for (var x = 0; x < prodObservers.length; x++) {
	    if ($(prodObservers[x])) {
	        element = $(prodObservers[x]);
	        element.stopObserving("click", prodSelect);
	        element.stopObserving("click", prodShow);
	    }
    }
    prodObservers = []
	//hook up click events for menu	
	$('prodSel').select('li').each(function(element) {
		if (element.id != '') {
			element.observe("click", prodSelect)
			prodObservers.push(element.id)
		}
	})
	new Effect.Appear('prodSelHolder', { duration: .25 })
}

function loadProd_Success(result) {
	$('prodSel').update(result);
	//kill previous observers
	for (var x = 0; x < prodObservers.length; x++) {
	    if ($(prodObservers[x])) {
	        element = $(prodObservers[x]);
		    element.stopObserving("click", prodSelect);
		    element.stopObserving("click", prodShow);
		}
    }
    prodObservers = []
	//hook up click events for menu	
	$('prodSel').select('li').each(function(element) {
		if (element.id != '') {
			element.observe("click", prodShow)
			prodObservers.push(element.id)
		}
	})

	new Effect.Appear('prodSelHolder', { duration: .25 })

}



function loadProd_Error() {
	// TODO: handle error
}

function startProdScroll(element) {
	//timer-based product nav scroller
	if (scrollToggle == 0 || ignoreScroll == 1) {
		return
	}
	scrollSpeed = slowScroll
	scrollCount++
	if (scrollCount > 10) {
		scrollSpeed = fastScroll
	}
	scrollTimer = window.setTimeout(function() {
		scrollProdList(element)
		startProdScroll(element)

	}, scrollSpeed)
}

function scrollProdList(element) {
	//scroll product nav menu
	element = $(element)
	clearTimeout(scrollTimer)
	if (element.hasClassName('down')) {
		var myList = element.previous().select('li').toArray()
		var listPos = findPos(element.previous())
	}
	else {
		var myList = element.next().select('li').toArray()
		var listPos = findPos(element.next())
	}
	var listHeight = 0
	var itemPos = findPos(myList[myList.length - 1])
	if (element.hasClassName('down') && (itemPos[1] - listPos[1] + listHeight) > 160) {
		for (var x = 0; x < myList.length; x++) {
			if (!myList[x].hasClassName('hidden')) {
				myList[x].addClassName('hidden')
				break;
			}
		}
		return;
	}
	if (element.hasClassName('up')) {
		for (var x = myList.length - 1; x > -1; x--) {
			if (myList[x].hasClassName('hidden')) {
				myList[x].removeClassName('hidden')
				break;

			}
		}
		return;
	}
	scrollCount = 0
	scrollSpeed = slowScroll
}

function stopScroll() {
	scrollToggle = 0;
	scrollCount = 0
}

function prodSelect(evt) {
    //load sub product based on main prod click

	
	
	var element = Event.element(evt);
	if (element.hasClassName('application')) {
		// do application list
		applicationId = element.id.replace("ap_", "");
		loadProdSub(-1, applicationId, -1);
	} else if (element.hasClassName('productCategory')) {
		prodCategoryId = element.id.replace("pr_", "");
		loadProdSub(prodCategoryId, -1, -1);
	} else if (element.hasClassName('industry')) {
		industryId = element.id.replace("ip_", "");
		loadProdSub(-1, -1, industryId);
	}

}

function loadProdSub(prodCategoryId, prodApplicationId, prodIndustryId) {
	ProductDetails.SelectProducts(prodCategoryId, prodApplicationId, prodIndustryId, loadProdSub_Success, loadProdSub_Error);
}

function loadProdSub_Success(result) {
	//populate the product navigation

	$('prodSub').innerHTML = '';
	$('prodSub').insert(result)
	//hook up click events for menu

	$('prodSub').select('li').each(function(element) {
		if (element.id != '') {
			element.observe("click", prodShow)
			//prodObservers[]	
		}
	})
	new Effect.Appear('prodSubHolder', { duration: .25 })

}

function loadProdSub_Error() {
	// TODO: handle error here
}


function prodShow(evt) {
    //show selcted product

	var element = Event.element(evt);
	prodId = element.id.replace("p_", "")
	prodDetails(prodId)
	
}

function prodDetails(prodId) {
	ProductDetails.GetProduct(prodId, prodDetails_Success, prodDetails_Error);
}

function prodDetails_Success(result) {

    $('prodView').update(result);
    $('prodView').show()
    //alert($('prodView').innerHTML)
    truncateItems(195)
    $('prodView').hide()
	new Effect.Appear('prodView', { duration: .5 })

}

function prodDetails_Error() {
	alert("Communications failure")
	// TODO: handle this at some point
}



