// Top navigation menu control for IE6
topNav = function() {
	if ((document.all) && (document.getElementById) && (document.getElementById('nav'))) {
		cssdropdownRoot = document.getElementById('nav').getElementsByTagName('li');
		for (x=0; x<cssdropdownRoot.length; x++) {
			node = cssdropdownRoot[x];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {this.className+=" over";}
				node.onmouseout=function() {this.className=this.className.replace(" over", "");}
			}
		}
	}
}
// Country select menu control for IE6
countryNav = function() {
	if ((document.all) && (document.getElementById) && (document.getElementById('countryMenu'))) {
		cssdropdownRoot = document.getElementById('countryMenu').getElementsByTagName('li');
		for (x=0; x<cssdropdownRoot.length; x++) {
			node = cssdropdownRoot[x];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {this.className+=" over";}
				node.onmouseout=function() {this.className=this.className.replace(" over", "");}
			}
		}
	}
}

// clear field value function: removes the default value onfocus, and adds back if nothing entered 
function fieldClear(obj) {
	if(obj.Val) {
		if (obj.value == '') { 
			obj.value = obj.Val;
			obj.Val = null;
			obj.first = null;
		} 
		else {
			obj.Val = null;
		}
	} else if (!obj.first) { 
		obj.Val = obj.value;
		obj.value = ''; 
		obj.first = 'true';
	} 
}

// Instantiates an instance of the modal window
function modalWindow() {
	var cH = Math.max($(window).height(),$(document).height());
	$("#pop_curtain").css({ opacity:0, height:cH, width:$(window).width() });
	$(".close_box").click( function() { closeModal($(this).parents(".pop_item")); } );
}
// Primary Modal window function
function showModal(pItem) {
	var cH = Math.max($(window).height(),$(document).height());
	$("#pop_curtain").css({ height:cH, width:$(window).width() })
	.show()
	.fadeTo("slow", 0.5, function() {
		displayItem($(pItem));
	} );
	$("select").css("visibility","hidden");
	$("body").addClass("print_modal");
	//	stop playing video in the Learning Center if any
	if($("#video_inline").length > 0) {
		selectImg($(".active_crs"));
	}
}
// Modal window positioning and effects
function displayItem(pItem) {	
	var pT = ($(window).height()-$(pItem).height())/2;
	var pL = ($(window).width()-$(pItem).width())/2;
	pT = (pT < 0) ? $(window).scrollTop() : pT+$(window).scrollTop();
	pL = (pL < 0) ? 0 : pL;
	//	adjust top for closebox negative position
		pT += 8;
	$(pItem).css({ top:pT, left:pL, position:"absolute" }).show();
	$("#pop_curtain").css({ height:$(document).height(), width:$(window).width() });
}
// Close Modal window function
function closeModal(pItem) {
	$(pItem).hide();
	$("#pop_curtain").fadeTo("slow", 0, function() {
		$(this).hide().css({ height:1, width:1 });
		$("select").css("visibility","visible");
		$("body").removeClass("print_modal");
	} );
	//	stop playing video in the Product Gallery if any
	if($("#video_preview").length > 0) {
		scrollToFirst();
	}
}

// Controls the hide show functionality of Recently Viewed Dropdown Menu
recentlyViewed = function () {
	$("#breadcrumbs .recently_viewed").hover(function() {
		$(this).addClass("active");
		$("#breadcrumbs .recently_viewed a").addClass("active");
	}, function(){
		$(this).removeClass("active");
		$("#breadcrumbs .recently_viewed a").removeClass("active");
	})

}

// Controls the jumping functionality for iems inside scrollable div
initJumping = function() {
	$("#jumpto_container li").mouseup( function() {
		var selString = $(this).attr("id");
		var selVal = selString.substring( ("jumpto_input_").length );
		doJump(selVal);
	} );
}
function doJump(selVal) {
	$(".serial-div").scrollTop(0);
	var offset_val = $(".serial-div").position();
	var pos_val = $("#"+selVal).position();
	var parBorder = 1;
	var scrollDivOffsetTop = offset_val.top + parBorder;
	//$(".serial-div").scrollTop(pos_val.top - scrollDivOffsetTop);						//- DEV NOTES: no animation version
	$(".serial-div").animate({scrollTop: (pos_val.top - scrollDivOffsetTop)}, "slow");	//- DEV NOTES: animated version
}

// Executes the functions to style all checkboxes (& radio buttons) appropriately
setCheckboxes = function () {
	$().cssCheckbox();
}
// Replaces default checkboxes (& radio buttons) with styled checkboxes.
jQuery.fn.cssCheckbox = function () {
	var allCheckRadio = $("input[@type='checkbox'] + label").add("input[@type='radio'] + label");
	jQuery(allCheckRadio, this)
		.each( function(){
			if ( jQuery(this).prev()[0].checked )
				jQuery(this).addClass("checked");
		})
		.hover( 
			function() { jQuery(this).addClass("over"); },
			function() { jQuery(this).removeClass("over"); }
		)
		.click( function() {
			jQuery(this)
				.toggleClass("checked")
					.prev()[0].click();
					if (jQuery(this).prev()[0].type == "radio") {
						var radioName = $(this).prev()[0].name;
						$(":radio[name='"+radioName+"'] + label").removeClass("checked");
						$(this).addClass("checked");
					}
		})
		.prev().hide();
}

// Executes the functions to style all selectboxes appropriately for external "jquery.selectbox-0.5.js"
setSelectboxes = function() {
	if($('.resortbox').length>0) {$('.resortbox').selectbox();}
	//==	Fix for IE dropdown over another dropdown
	$(".selectbox-wrapper").each(function(i){
		var z = parseInt($(this).css("z-index"));
		$(this).css("z-index", z+i);
		$(this).parent(".dropdown_div").css("z-index", z-i);
	});
}


// Manages sub tab control for hide/shows
jQuery.fn.tabSelect = function(options) {
	var settings = jQuery.extend({
		cont_group: "*",
		classe: "active"
	}, options);
	var tab_group = $(this);
	$(this).click( function() {
		$(tab_group).removeClass(settings.classe);
		$(this).addClass(settings.classe);
		var indx = $(tab_group).index($(this));
		$(settings.cont_group).removeClass(settings.classe);
		$(settings.cont_group).eq(indx).addClass(settings.classe);
	} );
}

// Activates accordion functionality
setAccordion = function () {
	$(".vr-accordion li .vr-accordion-header:has(div.vr-accordion-button)").
	accordion({
		cont_group: ".vr-accordion .acc_content"
	});
}
// Controls desired accordion effects
var prev_acc_indx = 0;
jQuery.fn.accordion = function(options) {
	var settings = jQuery.extend({
		cont_group: ".acc_content",
		classe: "active"
	}, options);
	var acc_tab_group = $(this);
	$(this).click( function() {
		$(acc_tab_group).removeClass(settings.classe);
		$(this).addClass(settings.classe);
		var indx = $(acc_tab_group).index($(this));
		accTabAction(indx, prev_acc_indx, $(settings.cont_group));
		prev_acc_indx = indx;
	} );
}
// Controls desired slide
function accTabAction(indx, prev_acc_indx, gr) {
	if (indx != prev_acc_indx) {
		$(gr).eq(prev_acc_indx).slideUp("fast",function(){
			$(gr).eq(indx).slideDown("fast");
		});
	}
}

// Activates tooltip functionality
setTooltips = function () {
	$(".tt_btn").
	toolTip({
		//- DEV NOTES: default settings - change as needed
		//classe: "tt_class",
		//xOff: 4,
		//yOff: -4,
		//hasHTML: false
	});
}
// Manages tooltips
jQuery.fn.toolTip = function(options) {
	var settings = jQuery.extend({
		classe: "tt_class",
		xOff: 4,
		yOff: -4,
		hasHTML: false
	}, options);
	var maxH = $(window).height();
	var maxW = $(window).width();
	$(this).hover(function(event){
		var scrollFromTop = $(window).scrollTop();
		$('<div id="tt_tip">&nbsp;</div>').appendTo("body").hide().addClass(settings.classe);
		if (settings.hasHTML) {
			$("#tt_tip").html($(this).next(".tthtml").html());
		} else {
			$("#tt_tip").text($(this).next(".tthtml").html());
		}
		var e = ($.browser.msie) ? window.event : event;
		var ttY = e.clientY + scrollFromTop - $("#tt_tip").outerHeight();
		var ttX = e.clientX + $(document.body).scrollLeft();
		ttY = (ttY < scrollFromTop) ? scrollFromTop : ttY + settings.yOff;
		ttX = ((ttX + $("#tt_tip").outerWidth()) >= maxW) ? (ttX - $("#tt_tip").outerWidth() - settings.xOff) : ttX + settings.xOff;
		var maxWidth = parseInt($("#tt_tip").css("max-width"));
		var ttW = ($("#tt_tip").width() > maxWidth) ? maxWidth : "auto";
		$("#tt_tip").css({left:ttX, top:ttY, width:ttW});
		$("#tt_tip").fadeIn("slow");
	},function(){
		$("#tt_tip").remove();
	});
}

// Disable PNG fix for IE6 only. Targets embedded IMGs
enablePNGprinting = function () {
	$("img[src$='blank.gif']").each(function(i){
		if ($(this).parent().css("position") != "absolute") {
			$(this).parent().css("position", "relative");
		}
		var fltrStr = $(this).css("filter");
		var b = fltrStr.indexOf('\"');
		var e = fltrStr.indexOf('\",');
		var fltrSrc = fltrStr.substring(b+1,e);
		var printImgStr = "<img src='"+fltrSrc+"' class='img_png' />";
		$(this).after(printImgStr);
	});
}

// Enable Sifruss for printing
enableSifrussPrinting = function () {
	$(".sifruss").each(function(i){
		$(this).parent("h1").after('<h1 class="print_only">'+$(this).text()+'</h1>');
	});
}

// Pop-up Window  Functions
var newWin = null;
function popWindow(contURL,winName,tb,mb,lc,st,sb,rs,w,h,l,t) {
	var chasm = screen.availWidth;
	var mount = screen.availHeight;
    wipeOut();
    newWin = this.open(contURL, winName, 'toolbar=' + tb + ',menubar=' + mb + ',location=' + lc + ',status=' + st + ',scrollbars=' + sb + ',resizable=' + rs + ',width=' + w + ',height=' + h + ',left=' + ((chasm - w - 20)*l+l) + ',top=' + ((mount - h - 80)*t+t) + '');
    newWin.focus();
}
function wipeOut() {
    if (newWin && !newWin.closed) {
        newWin.close();
        newWin = null;
    }
}
function popSmallWindow(url,winName) {
	popWindow(url,winName,'no','no','no','no','no','yes',516,360,0.5,0.5);
}
// Controls the hide show functionality on the Vision page 
function toggleArticle(lnk) {
	$(lnk).parents("li").children(".more_article").scrollTop(0);
	$(lnk).parents("li").toggleClass("expanded");
}
// Controls the hide show functionality on the About Linksys Biography page 
function toggleBio(button, executive) {
	$(button).toggleClass("expanded");
	$("#" + executive + "_bio").toggle();
}
function clickBio(executive) {
	document.getElementById(executive).scrollIntoView();
	if ($("#" + executive + "_bio").css("display") != "block") {
		$("#" + executive).click();
	}
}
// Controls the hide show functionality on the Solution Configurator page 
function toggleDetails(button) {
	$(button).toggleClass("less");
	$(button).parents("tr").prev().toggle();
	$(button).children("span").toggle();
}

// Controls special offers rotationfunctionality on the home page  
function revolve(revolveStep) {
	revolveCount += revolveStep;
	var rLength = $(".special_offers .revolve").length;
	if (revolveCount >= rLength) {revolveCount = 0;}
	if (revolveCount < 0) {revolveCount = rLength + revolveStep;}
	$(".special_offers .revolve").hide();
	$(".special_offers .revolve").eq(revolveCount).show();
	$(".special_offers .revolve").eq((revolveCount+1)).show();
}

// Body Onload Functions
$(document).ready(function() {
	topNav(); // Global Navigation control for IE6
	countryNav(); // Country select menu control for IE6
	modalWindow(); // Global Modal window control
	setCheckboxes(); // Global replacement of default HTML checkboxes (& radio buttons)
	setSelectboxes(); //Global replacement of Default HTML selectboxes
	setAccordion(); // Controls accordion functionality in side modules
	setTooltips(); // Controls tooltip functionality
	enablePNGprinting(); // Enable PNG printing for IE
	enableSifrussPrinting(); // Enable Sifruss for printing
	initJumping();		// Initialize jumping functionality
	recentlyViewed();	// Enable hide show functionality of Recently Viewed Dropdown Menu
});
