﻿// Cart Management
var refreshCartDropDown = true;
var isCartEmpty = false;
var showUoM = false;
var viewCartProgressImage = '//data.schwabenorthamerica.com/common/images/ajax-progressv2.gif';
var successClassName = 'atcMessageSuccess';
var errorClassName = 'atcMessageError';
var invalidQuantityClassName = 'atcMessageInvalidQuantity';
var progressClassName = 'atcMessageProgress';

function EnableViewCartDropDown()
{
	dropdowncontent.init("shoppingCartDropDown", "left-bottom", "500", "onclick");
}

function ViewCart(cartGuid, uid, siteName, id, e)
{
	if (refreshCartDropDown)
	{
		var cartContents = window.document.getElementById('CartContents');
		if (cartContents)
		{
			ClearNonHeaderTableRows(cartContents);

			var tr = cartContents.insertRow(-1);
			var td = tr.insertCell(-1);
			td.colSpan = "3";
			td.style['text-align'] = 'center';
			td.innerHTML = '<img class=\"viewCartProgress\" src=\"' + viewCartProgressImage + '\" />';
			ShowCartDropDown(e);

			CartManagmentService.GetCart(cartGuid, uid, siteName, id, ViewCartComplete, ViewCartCompleteError);
		}
		else
		{
			ViewCartCompleteError();
		}
	}
	else
	{
		ShowCartDropDown(e);
	}
}

function ViewCartComplete(result)
{
	var cartContents = window.document.getElementById('CartContents');
	if (cartContents)
	{
		ClearNonHeaderTableRows(cartContents);
	
		if (result.Success)
		{
			// update lines
			for (var i = 0; i < result.Cart.Lines.length; ++i)
			{
				var line = result.Cart.Lines[i];
				var oRow = cartContents.insertRow(-1);
					
				var oCell = oRow.insertCell(-1);
				oCell.className = 'cartDropProductInfo';
				oCell.innerHTML = line.ProductName;		
				oCell = oRow.insertCell(-1);
				oCell.className = 'cartDropQty';
				oCell.innerHTML = line.Quantity;
				if (showUoM)
				{
					oCell.innerHTML += ' ' + line.UnitOfMeasure;
				}
				oCell = oRow.insertCell(-1);
				oCell.className = 'cartDropExtPrice';
				oCell.innerHTML = '$' + line.Price.toFixed(2);
			}
			
			// update cart link text
			var goToCart = window.document.getElementById('goToShoppingCart');
			if (goToCart)
			{
				if (result.Cart.AdditionalItems == 0)
				{
				    if (result.Cart.Lines.length == 1)
					{
						goToCart.innerHTML = 'You have 1 item in your cart. >>';
					}
					else
					{
					    goToCart.innerHTML = 'You have ' + result.Cart.Lines.length + ' items in your cart. >>';
					}
				}
				else if (result.Cart.AdditionalItems > 1)
				{
					goToCart.innerHTML = 'You have ' + result.Cart.AdditionalItems + ' additional items in your cart. >>';			
				}
				else
				{
					goToCart.innerHTML = 'You have 1 additional item in your cart. >>';
				}
			}
			
			// update the subtotal
			var subtotal = window.document.getElementById('subTotalLabel');
			if (subtotal)
			{
				subtotal.innerHTML = '$' + result.Cart.SubTotal.toFixed(2);			
			}
			
			refreshCartDropDown = false;
		}
		else
		{
			var oRow = cartContents.insertRow(-1);
			var oCell = oRow.insertCell(-1);
			oCell.colSpan = "3";
			oCell.style["text-align"] = "center";
			oCell.innerHTML = result.Message;
		}
		
		
	}
}

function ViewCartCompleteError()
{
	var cartContents = window.document.getElementById('CartContents');
	if (cartContents)
	{
		ClearNonHeaderTableRows(cartContents);		
		var oRow = cartContents.insertRow(-1);
		var oCell = oRow.insertCell(-1);
		oCell.colSpan = "3";
		oCell.innerHTML = 'There was an error getting your cart information.  Please try again later.';
	}
}

// Clear any rows in a table that aren't the first
function ClearNonHeaderTableRows(table)
{
	if (table)
	{
		while (table.rows.length > 1)
		{
			table.deleteRow(table.rows.length -1);
		}
	}
}

function ShowCartDropDown(e)
{
	var cartObj = window.document.getElementById('shoppingCartDropDown');
	var contentObj = document.getElementById(cartObj.getAttribute("rel"))
	dropdowncontent.show(cartObj, contentObj, e);
	cartObj.className = cartObj.className + " hand";
}

function ShowMessageProgress(ctrl)
{
	ctrl.className = progressClassName;
}

function ShowMessage(ctrl, className, text)
{
	ctrl.className = className;
	fadeInControl(ctrl);
}

function ResetInput(ctrl)
{
	var atcDiv = ctrl.parentNode;
	var inputs = atcDiv.getElementsByTagName('input');
	for (var i = 0; i < inputs.length; ++i)
	{
		if (inputs[i].type == 'text')
		{
			inputs[i].value = '';
		}
	}
}

function AddToCart(cartGuid, siteName, partInput, quantityInput, uomInput, btnCaller, message)
{
	if (ATCEnabled(btnCaller))
	{
		DisableATC(btnCaller);

		var messageCtrl = document.getElementById(message);
		if (messageCtrl)
		{
			ShowMessageProgress(messageCtrl);
		}

		var partText = document.getElementById(partInput);
		var qtyText = document.getElementById(quantityInput);
		var uomText = document.getElementById(uomInput);

		var partCode = partInput;
		if (partText)
		{
			partCode = partText.value;
		}
		var quantity = qtyText.value;
		var uom = 'EA';
		if (uomText)
		{
			uom = uomText.value;
		}
		
		if (isNumber(quantity) && quantity > 0)
		{
			try
			{
				CartManagmentService.AddItemToCart(cartGuid, siteName, partCode, quantity, uom, message, btnCaller, AddToCartComplete, function() {AddToCartCompleteError(message, wrapper, btnCaller);});	
				refreshCartDropDown = true;
			}
			catch(err)
			{
				ShowMessage(messageCtrl, errorClassName, 'Error adding to cart');
				EnableATC(btnCaller);
			}
		}
		else
		{
			ShowMessage(messageCtrl, invalidQuantityClassName, 'Not a valid quantity.');
			EnableATC(btnCaller);
		}
	}
}

function ATCEnabled(ctrl)
{
	var ret = true;
	
	var state = window.document.getElementById(ctrl +'state');
	if (state && state.value)
	{
		ret = state.value.length == 0;
	}
	
	return ret;
}
function DisableATC(ctrl)
{
	var state = window.document.getElementById(ctrl +'state');
	if (state)
	{
		state.value = 'disabled';
	}
}

function EnableATC(ctrl)
{
	var state = window.document.getElementById(ctrl +'state');
	if (state)
	{
		state.value = '';
	}
}

function isNumber(n) {
	return !isNaN(parseFloat(n)) && isFinite(n);
}

function AddToCartComplete(result)
{
	var messageControl = window.document.getElementById(result.MessageControl);

	if (result.Success)
	{
		refreshCartDropDown = true;
		// set message to success style
		
		messageControl.className = successClassName;
		ResetInput(messageControl);
		
		if (isCartEmpty) {
		    var checkoutLink = window.document.getElementById('fullCartOptions');
            var fullCart = window.document.getElementById('fullShoppingCart');
            checkoutLink.style['display'] = 'inline';
			fullCart.style['display'] = 'inline';
			isCartEmpty = false;	
			var cartObj = window.document.getElementById('shoppingCartDropDown');
			cartObj.className = cartObj.className + " hand";
			EnableViewCartDropDown();
		}
		ShowMessage(messageControl, successClassName, result.Message);
	}
	else
	{
		// set message to error style
		messageControl.className = errorClassName;
		ShowMessage(messageControl, errorClassName, result.Message);
	}
	
	EnableATC(result.ButtonControl);
}

function AddToCartCompleteError(msgControl, btnCaller)
{
	var messageControl = window.document.getElementById(msgControl);
	
	messageControl.className = errorClassName;
	messageControl.innerHTML = 'Error adding to cart';
	fadeInControl(messageControl);
	
	EnableInputs(btnCaller);
}

var TotalFadeTime = 300.0;
var DisplayTime = 1000.0;
var FadeInterval = 33.0;
//var FadeState = null;
//var FadeTimeLeft = 0.0;
var timer = null;
//var lastTick = null;
var fadeInTimer = null;
		
function fadeInControl(control)
{
	if (control)
	{		
		if (fadeInTimer)
		{
			clearTimeout(fadeInTimer);
		}
		control.style.opacity = '0.0';
		control.style.filter = 'alpha(opacity=0)';
		control.style.visibility = 'visible';
		control.style.display = 'block';
		var settings = {
			FadeState : 'in',
			FadeTimeLeft : TotalFadeTime,
			lastTick : new Date().valueOf()
		};
		timer = setTimeout(function() { animateFade(control, settings) }, FadeInterval);		
	}	
}

function animateFade(control, settings)
{		
	var currentTick = new Date().valueOf();
	var elapsedTicks = currentTick - settings.lastTick;
	settings.lastTick = currentTick;

	settings.FadeTimeLeft -= elapsedTicks;
				
	if (settings.FadeTimeLeft <= 0)
	{
		if (settings.FadeState == 'in')
		{
			control.style.opacity = '1.0';
			control.style.filter = 'alpha(opacity=100)';
			settings.FadeState = 'wait';
			settings.FadeTimeLeft = DisplayTime;
		}
		else if (settings.FadeState == 'wait')
		{
			settings.FadeState = 'out';
			settings.FadeTimeLeft = TotalFadeTime;
		}
		else
		{
			control.style.opacity = '0.0';
			control.style.filter = 'alpha(opacity=0)';
			settings.FadeTimeLeft = 0;
			control.style.visibility = 'hidden';
			control.style.display = 'none';
		}
	}

	if (settings.FadeTimeLeft > 0 )
	{
		if (settings.FadeState != 'wait')
		{
			var newOpacity = settings.FadeTimeLeft/TotalFadeTime;
			if (settings.FadeState == 'in')
			{
				newOpacity = 1 - newOpacity;
			}
						
			control.style.opacity = newOpacity;
			control.style.filter = 'alpha(opacity=' + Math.floor(newOpacity * 100) + ')';
		}
		timer = setTimeout(function() { animateFade(control, settings) }, FadeInterval);
	}
	
}

function GetRadioButtonValue(id)
{
	var retVal = '';
	var radio = window.document.getElementById(id);
	if (radio)
	{
		var list = radio.getElementsByTagName('input');
		for (var i = 0; i < list.length; ++i)
		{
			if (list[i].checked)
			{
				retVal = list[i].value;
				break;
			}
		}
	}
	return retVal;
}

function GetDropDownValue(id)
{
	var retVal = '';
	var dd = window.document.getElementById(id);
	if (dd)
	{
		for (var i = 0; i < dd.options.length; ++i)
		{
			if (dd.options[i].selected)
			{
				retVal = dd.options[i].value;
				break;
			}
		}
	}
	return retVal;
}

function FindLocations(url, mode, partCode, zip, proximity, city, state, country, errorElement, e)
{
	var err = window.document.getElementById(errorElement);
	if (window.document.getElementById(partCode))
	{
		partCode = GetDropDownValue(partCode);
	}
	else if (!partCode)
	{
		partCode = ''; // make it empty string if it's null
	}
	
	if (window.document.getElementById(mode))
	{
		mode = window.document.getElementById(mode).value;
	}
	
	if (window.document.getElementById(partCode))
	{
		partCode = GetDropDownValue(partCode);
	}
	if (window.document.getElementById(zip))
	{
		zip = window.document.getElementById(zip).value;
	}
	if (window.document.getElementById(city))
	{
		city = window.document.getElementById(city).value;
	}
	if (window.document.getElementById(state))
	{
		state = GetDropDownValue(state);
	}
	if (window.document.getElementById(country)) 
	{
		country = GetDropDownValue(country);
	}
		
	if (mode == 'Zip')
	{
		if (zip && zip.length > 4 && (country != "271" || parseInt(zip, 10)))
		{
			window.location = url + '?p=' + partCode + '&z=' + zip + '&prx=' + proximity + '&ctry=' + country;
		}
		else
		{
			err.innerHTML = 'Please check your entry and try again';
		}		
	}
	else
	{
		if (city && city.length > 0 && state && state.length)
		{
			window.location = url + '?p=' + partCode + '&cty=' + city + '&st=' + state + '&ctry=' + country;
		}
		else
		{
			err.innerHTML = 'Please check your entry and try again';
		}
	}
	
	if (e != null)
    {
		if (e.preventDefault)
		{
			e.preventDefault();
		}
		else
		{
			e.returnValue = false;
		}
	}
}

var searchUrl;
var currentSearchText;
var currentResultPane;
var currentDisplayHideTime;
var displayTimer;
var selectedRecommendation;

function CheckDoSearch(control, e)
{
	var key = GetKeyPress(e);

	if (key == 13)	// enter
	{
		if (control.value.length > 0)
		{
			Search(control.id);
		}
	}

}

function SearchTextChanged(control, siteId, rows, resultDiv, btnSearch, displayTime, e)
{
	var searchButton = window.document.getElementById(btnSearch);
	if (searchButton)
	{
		if (searchButton.disabled=true && control.value.length > 0)
		{
			searchButton.disabled=false;
		}			
		else
		{
			searchButton.disabled=true;
		}
	}

	currentSearchText = control;
	var searchText = currentSearchText.value;
	if (currentResultPane != null && currentResultPane != window.document.getElementById(resultDiv))
	{
		HideSearchSuggestions(currentResultPane);
	}
	currentResultPane = window.document.getElementById(resultDiv);
	currentDisplayHideTime = displayTime;

	var key = GetKeyPress(e);

	if (key == 13)	// enter
	{
		if (selectedRecommendation != null && selectedRecommendation.length > 0)
		{
			HideSearchSuggestions(currentResultPane);
		}
		
		if (control.value.length > 0)
		{
			Search(control.id);
		}
	}
	else if (key == 38 && currentResultPane.style.visibility == 'visible')  // up
	{
		// move selection up
		var items = currentResultPane.getElementsByTagName('div');
		
		var foundSelected = -1;
		for (var i = 0; i < items.length; ++i)
		{
			if (items[i].selected == true)
			{
				foundSelected = i;
				break;
			}
		}
		
		if (foundSelected > 0) // if it's 0, it can't go up anymore
		{
			UnHighliteRecommendation(items[foundSelected]);
			HighliteRecommendation(items[foundSelected - 1]);
			currentSearchText.value = UnBold(items[foundSelected - 1].innerHTML);
		}
	}
	else if (key ==40 && currentResultPane.style.visibility == 'visible')  // down
	{
		// move selection down
		var items = currentResultPane.getElementsByTagName('div');
		
		var foundSelected = -1;
		for (var i = 0; i < items.length; ++i)
		{
			if (items[i].selected == true)
			{
				foundSelected = i;
				break;
			}
		}
		
		if (foundSelected < 0)
		{
			HighliteRecommendation(items[0]);
			currentSearchText.value = UnBold(items[0].innerHTML);
		}
		else if (foundSelected >= 0 && foundSelected < (items.length - 1)) // if it's 0, it can't go up anymore
		{
			UnHighliteRecommendation(items[foundSelected]);
			HighliteRecommendation(items[foundSelected + 1]);
			currentSearchText.value = UnBold(items[foundSelected+1].innerHTML);
		}
	}
	else
	{
		if (searchText.length > 2)
		{
			SearchService.GetSearchSuggestions(searchText, siteId, rows, SearchCompleted);
		}
		else
		{
			HideSearchSuggestions(currentResultPane);
		}
		
		ClearDisplayTimer();
	}
}

function SearchCompleted(result)
{
	if (result && result.length > 0)
	{
		currentResultPane.style.visibility = 'visible';
		currentResultPane.innerHTML = '';
		
		for (var i = 0; i < result.length; ++i)
		{
			currentResultPane.innerHTML += '<div class=\'hand\' onmouseover=\'HighliteRecommendation(this)\' onmouseout=\'UnHighliteRecommendation(this)\' onclick=\'currentSearchText.value=UnBold(this.innerHTML); Search(currentSearchText.id);\'>' + BoldSearch(result[i]) + '</div>';
		}
		StartDisplayTimer();
	}
}

function BoldSearch(value)
{
	var startIndex = value.toLowerCase().indexOf(currentSearchText.value.toLowerCase());
	if (startIndex >= 0)
	{
		var length = currentSearchText.value.length;
		var endIndex = startIndex + length;
		return value.substr(0, startIndex) + '<b>' + value.substr(startIndex, length) + '</b>' + value.substr(endIndex);
	}
	else
	{
		return value;
	}
}

function HighliteRecommendation(control)
{
	var items = currentResultPane.getElementsByTagName('div');
	for (var i = 0; i < items.length; ++i)
	{
		if (items[i].selected == true)
		{
			UnHighliteRecommendation(items[i]);
		}
	}

	selectedRecommendation = control.innerHTML;
	control.style.backgroundColor='#8AB0FF';
	control.selected = true;
	ClearDisplayTimer();
}
function UnHighliteRecommendation(control)
{
	selectedRecommendation = '';
	control.style.backgroundColor='';
	control.selected = false;
	StartDisplayTimer();
}

function HideSearchSuggestions(control)
{
	control.style.visibility = 'hidden';
	selectedRecommendation = null;
}

function UnBold(value)
{
	return value.replace('<B>', '').replace('<b>', '').replace('</B>', '').replace('</b>', '');
}

function StartDisplayTimer()
{
	displayTimer = setTimeout(function() { HideSearchSuggestions(currentResultPane);}, currentDisplayHideTime * 1000);
}

function ClearDisplayTimer()
{
	if (displayTimer)
	{
		clearTimeout(displayTimer);
	}
}

function IsInputEnter(e)
{
	return GetKeyPress(e) == 13;
}	

function GetKeyPress(e)
{
	var key;
	if (window.event)
	{
		key = window.event.keyCode;
	}
	else
	{
		key = e.keyCode;
	}	;
	
	return key;
}

function Search(element, defaultSearchText, e) 
{
	var searchText = document.getElementById(element).value;
	if (searchText != defaultSearchText && searchText.length > 0 && searchUrl != null && searchUrl.length > 0)
	{
		window.location = searchUrl + '?st=' + escape(document.getElementById(element).value.replace(':', ''));
    }
    
    if (e != null)
    {
		if (e.preventDefault)
		{
			e.preventDefault();
		}
		else
		{
			e.returnValue = false;
		}
	}
}

var lstPricingOptions = new Object();

function onPricingOptionChange(partCode, UoM, priceLabel, backorderLabel)
{
	document.getElementById(priceLabel).innerHTML = lstPricingOptions[partCode + '_' + UoM]["price"];
	document.getElementById(backorderLabel).innerHTML = lstPricingOptions[partCode + '_' + UoM]["backorder"];
}
// Generic OnLoad Event Loader.
//
// Allows multiple OnLoad javascript
// events to be handled correctly.
// Usage:
// addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
// addLoadEvent(function() { /* more code to run on page load */ });

var loadEvents = new Array();
function addLoadEvent(func) {
    if (loadEvents.length==0 && typeof window.onload=='function')
        loadEvents.push(window.onload);

    loadEvents.push(func);

    window.onload = function () {
        while (loadEvents.length > 0) {
            var event = loadEvents.pop();
            if (typeof event == 'function') {
                event();
            }
        }
    }
}

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;

/*end of flash player object */


/*Global properties*/
var currentModalID;
var isModalDisplayed;

// Search Form TextBox Clear
// use in code behind:  txtBox.Attributes.Add("onFocus", "clearSearch(this)");
function clearSearch(obj)
{
    obj.value="";
}


//
// Featured Rotator
//

var fA = new Array();
var fI = 1;
var rBtnIds=new Array();

function fRInit(){
    for (var i=0;i<fA.length-1;i++){
        rBtnIds[i] = 'rotatorOption' + (i+1);
    }

    rotF();
    startRT();
    initRE();
}

function initRE(){
    var clickAdv = typeof fRotClickChange!='undefined' && fRotClickChange;

    for (var i=0;i<rBtnIds.length;i++)
    {
        var c = document.getElementById(rBtnIds[i]);
        switch (i){
            case 0: c.onmouseover = function(){rotMO(1,!clickAdv);}; break;
            case 1: c.onmouseover = function(){rotMO(2,!clickAdv);}; break;
            case 2: c.onmouseover = function(){rotMO(3,!clickAdv);}; break;
            case 3: c.onmouseover = function(){rotMO(4,!clickAdv);}; break;
        }

        if (clickAdv){
            switch (i){
                case 0: c.onclick = function(){rotMO(1,true);}; break;
                case 1: c.onclick = function(){rotMO(2,true);}; break;
                case 2: c.onclick = function(){rotMO(3,true);}; break;
                case 3: c.onclick = function(){rotMO(4,true);}; break;
            }
            
            c.onmouseout = function(){rotMO(activeF(),false);startRT();};
        }
    }
}

function activeF(){return fI==0?fA.length:fI-1;}

function startRT(){rTID = setInterval('rotF()',8000);}

function stopRT(){clearInterval(rTID);}

function rotMO(i,advMain){
    stopRT();
    if (advMain)
    {
        actF(i);
        fI=i+1;
    }
    else
    {
        clearAF();
        var newActive = 'rotatorOption'+i;
        document.getElementById(newActive).setAttribute("class", "rotatorButtonActive");
        document.getElementById(newActive).setAttribute("className", "rotatorButtonActive");
    }
}

function rotF(){
    var len = fA.length;
    if(fI >= len)
        fI = 1;
    actF(fI);
    fI++;
}

function rotFBak(){
    var len=fA.length;
    fI=fI-2;
    if(fI<1)
        fI=len-1;
    actF(fI);
    fI++;
}

function clearAF(){
    var len = rBtnIds.length;
	for (var i=0;i<rBtnIds.length;i++){
		document.getElementById(rBtnIds[i]).setAttribute("class", "rotatorButton");
		document.getElementById(rBtnIds[i]).setAttribute("className", "rotatorButton");

	}
}

function actF(i){
    clearAF();
    this.index = i;
    var newActive = 'rotatorOption'+i;
    document.getElementById(newActive).setAttribute("class", "rotatorButtonActive");
    document.getElementById(newActive).setAttribute("className", "rotatorButtonActive");
    document.getElementById('featuredRotatorLeft').innerHTML = fA[this.index];
}

function makeF(u,i,a,wt,tr){
    this.url = u;
    this.img = i;
    this.alt = a;
    this.wt = wt;
    this.tr = tr;
    this.write = writeF;
}

function writeF(){
    var str = '';
    str += '<a href="' + this.url;
    if (this.wt != "")
        if (this.url.indexOf("?") > -1)
            str += '&';
        else
            str += '?';
    str += this.wt + '" target="' + this.tr + '">';
    str += '<img src="' + this.img + '" alt="' + this.alt + '"></a>';
    return str;
}

function ShowModal(modalPopupName) {
    var modal = $find(modalPopupName); //the modalPopup var is declared in code-behind.

    currentModalID = modalPopupName;
    isModalDisplayed = true;
    modal.show();
}

function writeAF(u,wt,t,tr) {
    var str = '<a href="' + u;
    if (wt != "")
        if (u.indexOf("?") > -1)
        str += '&';
    else
        str += '?';
    str += wt + '" target="' + tr; 
    str += '">' + t + '</a>';
    return str;
} 
function ShowTPConfirm(siteName, url) {
    var answer = confirm("Disclaimer: This action links you to a third party website which is not " + siteName + ". These links are provided only as a service to those interested in additional information.");
    if (answer)
        window.location = url;
}
function CtrlLength(nLength,cId) 
{
    if (event.srcElement.value.length == nLength)
            document.all(cId).focus();
}
    
var phone_field_length=0;
function TabNext(obj,event,len,next_field) 
{
	if (event == "down") 
	{
		phone_field_length=obj.value.length;
    }
	else if (event == "up") 
	{
		if (obj.value.length != phone_field_length) {
			phone_field_length=obj.value.length;
			if (phone_field_length == len) {
				next_field.focus();
			}
		}
	}
}

// If enter pressed, calls trimR
function trimREnter(e, text)
{
    var keynum;

    if(window.event) // IE
      keynum = e.keyCode;
    else if(e.which) // Netscape/Firefox/Opera
      keynum = e.which;

    if (keynum==13) // enter pressed
        trimR(text);
}

// Trims one whitespace char from the right of a textbox object
function trimR(text)
{
    text.value=text.value.replace(/\s$/, '');
}

function showCtl(c)
{
    document.getElementById(c).style['display']='';
}

function hideCtl(c)
{
    document.getElementById(c).style['display']='none';
}

var brws =
{
    vrsn: function() {
        var v = 999;
        if (navigator.appVersion.indexOf("MSIE") != -1)
            v = parseFloat(navigator.appVersion.split("MSIE")[1]);
        return v;
    }
}

//alert(brws.vrsn());

if (brws.vrsn() < 7) {

    // Horizontal Nav Menu IE6 Hover Support
    // finds all LI tags in 'topNav' elements 
    // and replaces their class name on hover

    //sfHover = function() {
    //	var sfEls = document.getElementById("topNav").getElementsByTagName("LI");
    //	for (var i=0; i<sfEls.length; i++) {
    //		sfEls[i].onmouseout=function() {
    //			this.className=this.className.replace(new RegExp("\\s?sfhover\\b"), "");
    //		}
    //	    sfEls[i].onmouseover=function() {
    //		    this.className+=" sfhover";
    //	    }
    //	}
    //}

    sfHover = function() {
        //alert("sfHover fired");
        // Support the standard nav without a class of nav.
        var el = document.getElementById("menuElem");

        if (el == null) // no menu - just bail
            return;

        if (!/\bnav\b/.test(el.className) && el.tagName == "UL")
            setHover(el);

        // Find all unordered lists.
        var ieNavs = document.getElementsByTagName('ul');
        for (i = 0; i < ieNavs.length; i++) {
            //alert(ieNavs[i]);
            var ul = ieNavs[i];
            // If they have a class of nav add the menu hover.
            if (/\bnav\b/.test(ul.className))
                setHover(ul);
        }
    }

    function setHover(nav) {
        //alert("setHover fired");

        var ieULs = nav.getElementsByTagName('ul');
        if (navigator.appVersion.substr(22, 3) != "5.0") {
            // IE script to cover <select> elements with <iframe>s
            for (j = 0; j < ieULs.length; j++) {
                //alert(ieULs[j]);
                var ieMat = document.createElement('iframe');
                if (document.location.protocol == "https:")
                    ieMat.src = "javascript:'<html></html>'";
                else if (window.opera != "undefined")
                    ieMat.src = "";
                else
                    ieMat.src = "javascript:false";
                ieMat.scrolling = "no";
                ieMat.frameBorder = "0";
                ieMat.style.width = ieULs[j].offsetWidth + "px";
                ieMat.style.height = ieULs[j].offsetHeight + "px";
                ieMat.style.zIndex = "-1";
                ieULs[j].insertBefore(ieMat, ieULs[j].childNodes[0]);
                ieULs[j].style.zIndex = "101";
            }
            // IE script to change class on mouseover
            var ieLIs = nav.getElementsByTagName('li');
            for (var i = 0; i < ieLIs.length; i++) if (ieLIs[i]) {
                // Add a sfhover class to the li.
                ieLIs[i].onmouseover = function() {
                    if (!/\bsfhover\b/.test(this.className))
                        this.className += " sfhover";
                }
                ieLIs[i].onmouseout = function() {
                    if (!this.contains(event.toElement))
                        this.className = this.className.replace(' sfhover', '');
                }
            }
        } else {
            // IE 5.0 doesn't support iframes so hide the select statements on hover and show on mouse out.
            // IE script to change class on mouseover
            var ieLIs = document.getElementById('nav').getElementsByTagName('li');
            for (var i = 0; i < ieLIs.length; i++) if (ieLIs[i]) {
                ieLIs[i].onmouseover = function() { this.className += " sfhover"; hideSelects(); }
                ieLIs[i].onmouseout = function() { this.className = this.className.replace(' sfhover', ''); showSelects() }
            }
        }
    }

    // If IE 5.0 hide and show the select statements.
    function hideSelects() {
        var oSelects = document.getElementsByTagName("select");
        for (var i = 0; i < oSelects.length; i++)
            oSelects[i].className += " hide";
    }

    function showSelects() {
        var oSelects = document.getElementsByTagName("select");
        for (var i = 0; i < oSelects.length; i++)
            oSelects[i].className = oSelects[i].className.replace(" hide", "");
    }

    //if (window.attachEvent) window.attachEvent("onload", sfHover);
    addLoadEvent(sfHover);

}

//for drop down content div

var dropdowncontent = {
    disableanchorlink: true, //when user clicks on anchor link, should link itself be disabled (always true if "revealbehavior" above set to "click")
    hidedivmouseout: [true, 200], //Set hiding behavior within Drop Down DIV itself: [hide_div_onmouseover?, miliseconds_before_hiding]
    ajaxloadingmsg: "Loading content. Please wait...", //HTML to show while ajax page is being feched, if applicable
    ajaxbustcache: true, //Bust cache when fetching Ajax pages?

    getposOffset: function(what, offsettype) {
        return (what.offsetParent) ? what[offsettype] + this.getposOffset(what.offsetParent, offsettype) : what[offsettype]
    },

    isContained: function(m, e) 
				{
					var ev = window.event || e
					var c = ev.relatedTarget || ((ev.type == "mouseover") ? ev.fromElement : ev.toElement)
					while (c && c != m) 
					{
						try { 
							c = c.parentNode 
						} 
						catch (ex) { 
							c = m 
						}
					}
					
					if (c == m)
						return true
					else
						return false
				},

    show: function(anchorobj, subobj, e) {
        if (!this.isContained(anchorobj, e) || (e && e.type == "click")) {
            var e = window.event || e
            
            if (e.type == "click" && subobj.style.visibility == "visible") {
                subobj.style.visibility = "hidden"
                return
            }
            var horizontaloffset = (subobj.dropposition[0] == "left") ? -(subobj.offsetWidth - anchorobj.offsetWidth) : 0 //calculate user added horizontal offset
            var verticaloffset = (subobj.dropposition[1] == "top") ? -subobj.offsetHeight : anchorobj.offsetHeight //calculate user added vertical offset

            subobj.style.left = this.getposOffset(anchorobj, "offsetLeft") + horizontaloffset + "px"
            subobj.style.top = this.getposOffset(anchorobj, "offsetTop") + verticaloffset + "px"
            subobj.style.clip = (subobj.dropposition[1] == "top") ? "rect(auto auto auto 0)" : "rect(0 auto 0 0)" //hide drop down box initially via clipping
            subobj.style.visibility = "visible"
            subobj.startTime = new Date().getTime()
            subobj.contentheight = parseInt(subobj.offsetHeight)
            if (typeof window["hidetimer_" + subobj.id] != "undefined") //clear timer that hides drop down box?
                clearTimeout(window["hidetimer_" + subobj.id])
            this.slideengine(subobj, (subobj.dropposition[1] == "top") ? "up" : "down")
        }
    },

    curveincrement: function(percent) {
        return (1 - Math.cos(percent * Math.PI)) / 2 //return cos curve based value from a percentage input
    },

    slideengine: function(obj, direction) {
        var elapsed = new Date().getTime() - obj.startTime //get time animation has run
        if (elapsed < obj.glidetime) { //if time run is less than specified length
            var distancepercent = (direction == "down") ? this.curveincrement(elapsed / obj.glidetime) : 1 - this.curveincrement(elapsed / obj.glidetime)
            var currentclip = (distancepercent * obj.contentheight) + "px"
            obj.style.clip = (direction == "down") ? "rect(0 auto " + currentclip + " 0)" : "rect(" + currentclip + " auto auto 0)"
            window["glidetimer_" + obj.id] = setTimeout(function() { dropdowncontent.slideengine(obj, direction) }, 10)
        }
        else { //if animation finished
            obj.style.clip = "rect(0 auto auto 0)"
        }
    },

    hide: function(activeobj, subobj, e) {
        if (!dropdowncontent.isContained(activeobj, e)) {
            window["hidetimer_" + subobj.id] = setTimeout(function() {
                subobj.style.visibility = "hidden"
                subobj.style.left = subobj.style.top = 0
                clearTimeout(window["glidetimer_" + subobj.id])
            }, dropdowncontent.hidedivmouseout[1])
        }
    },

    hidediv: function(subobjid) {
        document.getElementById(subobjid).style.visibility = "hidden"
    },

    ajaxconnect: function(pageurl, divId) {
        var page_request = false
        var bustcacheparameter = ""
        if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
            page_request = new XMLHttpRequest()
        else if (window.ActiveXObject) { // if IE6 or below
            try {
                page_request = new ActiveXObject("Msxml2.XMLHTTP")
            }
            catch (e) {
                try {
                    page_request = new ActiveXObject("Microsoft.XMLHTTP")
                }
                catch (e) { }
            }
        }
        else
            return false
        document.getElementById(divId).innerHTML = this.ajaxloadingmsg //Display "fetching page message"
        page_request.onreadystatechange = function() { dropdowncontent.loadpage(page_request, divId) }
        if (this.ajaxbustcache) //if bust caching of external page
            bustcacheparameter = (pageurl.indexOf("?") != -1) ? "&" + new Date().getTime() : "?" + new Date().getTime()
        page_request.open('GET', pageurl + bustcacheparameter, true)
        page_request.send(null)
    },

    loadpage: function(page_request, divId) {
        if (page_request.readyState == 4 && (page_request.status == 200 || window.location.href.indexOf("http") == -1)) {
            document.getElementById(divId).innerHTML = page_request.responseText
        }
    },

    init: function(anchorid, pos, glidetime, revealbehavior) {
        var anchorobj = document.getElementById(anchorid)
        var subobj = document.getElementById(anchorobj.getAttribute("rel"))
        var subobjsource = anchorobj.getAttribute("rev")
        if (subobjsource != null && subobjsource != "")
            this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel"))
        subobj.dropposition = pos.split("-")
        subobj.glidetime = glidetime || 1000
        subobj.style.left = subobj.style.top = 0

		// No longer want the dropdown to control the anchor
		// Separate javascript will fire off the anchor and notify the dropdown to show
        if (typeof revealbehavior == "undefined" || revealbehavior == "mouseover") 
        {
//            anchorobj.onmouseover = function(e) {dropdowncontent.show(this, subobj, e)}
			anchorobj.onmouseout = function(e) { dropdowncontent.hide(subobj, subobj, e) }
			if (this.disableanchorlink) 
				anchorobj.onclick = function() { return false }
        }
//        else
//            anchorobj.onclick = function(e) { dropdowncontent.show(this, subobj, e); return false }
        
        if (this.hidedivmouseout[0] == true) //hide drop down DIV when mouse rolls out of it?
            subobj.onmouseout = function(e) { dropdowncontent.hide(this, subobj, e) }
    }
}

function revealModal(divID) {
    window.onscroll = function () { document.getElementById(divID).style.top = document.body.scrollTop; };
    document.getElementById(divID).style.display = "block";
    document.getElementById(divID).style.top = document.body.scrollTop;
}

function hideModal(divID) {
    document.getElementById(divID).style.display = "none";
}

