// Retrieves particular cookie
function getCookie(cookieName)
{
   var cookieFoundAt;
   var cookieValue;
 
   // find start position in cookie string
   cookieFoundAt = document.cookie.indexOf(cookieName + "=");
   
   if (cookieFoundAt < 0)
      {
         cookieValue = "";
      }
   else
      {
         // move to actual start of cookie's data
         cookieFoundAt = document.cookie.indexOf("=",cookieFoundAt);
         cookieFoundAt++;
         
         // find end position of cookie's data
         cookieEnd = document.cookie.indexOf(";", cookieFoundAt);
         if (cookieEnd == -1)
            {
             cookieEnd = document.cookie.length - 1;
            }
         cookieValue =document.cookie.substring(cookieFoundAt,cookieEnd  );
      }
   return cookieValue;
}

/**
 * adds trim method to strings
 *
 * @param {String} delim A list of characters to remove from beginning and end
 *				         of the current string; default is whitespace
 */
String.prototype.trim = function(delim) {
	return this.replace(new RegExp("^[\\s" + delim + "]+"),'').replace(new RegExp("[\\s" + delim + "]+$"), '');
}

/***
 * Sets textbox input state to blur/focus styles
 *
 * @param	o		DOMObject	The input object to style
 * @param	action	string		The action to style
 */
function formatInput(o, action) {
	switch(action) {
		case "blur":
			o.className = "blur";
			break;
		case "focus":
			o.className = "focus";
			break;
		default:
			break;
	}
}

/**
 * Provides generic form validation.
 *
 * Usage:
 * 1. Add to form: onsubmit="return(fmValidate(this))"
 * 2. Add required="true" attribute to desired inputs
 * 2a. Add validate="email" to input that needs email format verification
 *
 */
function fmValidate(theForm) {
	var hlColor = "#fc3";
	var hlMark = "&raquo;"
    var isValid = true;
	
	var els = theForm.elements;
    var emailRegex = /^[A-Za-z0-9\_\-\.]+@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,}$/;
	var firstBad = false;
    for(var i=0; i < els.length; i++) {
		var el = els[i];
		if(el.getAttribute("required") == "true") {
	        if(el.value == "") {
	            el.style.background = hlColor;
	            isValid = false;
				fmToggleMark(el.id, true);
				if(!firstBad) {
					el.focus();
					firstBad = true;
				}
	        } else {
	            el.style.background = "none";
				fmToggleMark(el.id, false);
	        }				
		}
		if(el.getAttribute("validate") == "email" && !emailRegex.test(el.value)) {
            el.style.background = hlColor;
            isValid = false;
			fmToggleMark(el.id, true);
		}
    }
    
    if(!isValid) alert("You need to fill in the required fields,\nwhich are marked in yellow.");
    return isValid;
}

/**
 * Toggles the error chevron on form inputs.
 *
 */
function fmToggleMark(inputId, turnOn) {
	var mk = document.getElementById(inputId + "_Err");
	if(!turnOn && mk != null) {
		mk.parentNode.removeChild(mk);
	} else if(turnOn && mk == null){
		mk = document.createElement("span");
		mk.id = inputId + "_Err";
		mk.className = "mark";
		mk.appendChild(document.createTextNode("»"));
		var inp = document.getElementById(inputId);
		inp.parentNode.insertBefore(mk, inp);
	}
}


function getElementsByClassName(node, classname)
{
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}

function flipPanel(caller, panelId) {
	$("." + caller.className).removeClass('selected');
	$(caller).addClass('selected');
	
	$("." + $("#" + panelId).attr('class')).hide();
	$("#" + panelId).css('display','block');
	
}

var gRotatePanelsPid = 0;
function rotatePanels(panelClass, panelContainer, selectedIndex, timeout) {

	var ACTIVE_CLASS_NAME = 'activePanel';
	
	// kill any lingering timers
   //clearTimeout(gRotatePanelsPid);

    // set defaults
    if(!selectedIndex) selectedIndex = 0;
    if(!timeout) timeout = 5000;
    
    // get DOMs
    var domContainer = $(panelContainer);
	var domPanels = getElementsByClassName(domContainer, panelClass);
	var panelCount = domPanels.length;
    
    // determine next panel to show
    var nextIndex = (selectedIndex + 1) % panelCount;
    var activeIndex = 0;
	
	// hide all panels
	for(var i=0; i<panelCount; i++) {
	    if(Element.hasClassName(domPanels[i], ACTIVE_CLASS_NAME)) {
	        activeIndex = i;        
	        break;
	    }
	}
	

	// hide active panel
    //Element.removeClassName(domPanels[activeIndex], ACTIVE_CLASS_NAME);
    
	// show new one
	Element.addClassName(domPanels[selectedIndex], ACTIVE_CLASS_NAME);
	
	// schedule next rotation
	//gRotatePanelsPid = setTimeout('rotatePanels("' + panelClass + '","' + panelContainer + '",' + nextIndex + ',' + timeout + ')', timeout);
	
	return true;
    
}




function openDemo2(demoname){
		
	// define where we'll go
	var	gotoUrl = '';
	
	// set width 
	var width = 800;
	var height = 650;
	

	if (!demoname) return false;
	
	// see who they're trying to get
	if (demoname == 'chris'){
		gotoUrl = '/web_assets/screencastdemos/chris_mcdaniel/reardendemo.html';
		width = 875;
		height = 640;
	}
	if (demoname == 'corey'){
		gotoUrl = '/web_assets/screencastdemos/corey_shields/corey2.html';
		width = 1000;
		height = 550;
	}
	if (demoname == 'brent'){
		gotoUrl = '/web_assets/screencastdemos/brent_chapman/brentdemo.html';
		width = 875;
		height = 640;
	}
	if (demoname == 'matthew'){
		gotoUrl = '/web_assets/screencastdemos/matthew_zeier/mozilla.html';
		width = 900;
		height = 655;
	}
	
	if (demoname == 'steve'){
		gotoUrl = '/web_assets/screencastdemos/steve_loyd/index.html';
		width = 950;
		height = 650;
	}
	
	if (demoname == 'sneakpeekQT1'){
		gotoUrl = '/web_assets/video/movie1.html';
		width = 660;
		height = 390;
	}
	
	if (demoname == 'sneakpeekQT2'){
		gotoUrl = '/web_assets/video/movie2.html';
		width = 660;
		height = 390;
	}
	
	if (demoname == 'sneakpeekQT3'){
		gotoUrl = '/web_assets/video/movie3.html';
		width = 660;
		height = 390;
	}
	
	if (demoname == 'sneakpeekQT4'){
		gotoUrl = '/web_assets/video/movie4.html';
		width = 660;
		height = 390;
	}
	
	window.open(gotoUrl,'blank','toolbar=no,width=' + width + ',height=' + height);
	
	return false;
}


function openVideo(url,width,height){
		
	// define where we'll go
	var	gotoUrl = '/web_assets/' + url;
	


	if (!url) return false;
	
	
	window.open(gotoUrl,'blank','toolbar=no,width=' + width + ',height=' + height);
	
	return false;
}

function showhide(layer_ref) {
	
	$('#' + layer_ref).slideToggle();
	
	return false;
}



/**
*	do small rounded corners with jquery
***/
$(function(){
	$('.smallRoundedCorners').append('<div class="smallRoundedUL"></div><div class="smallRoundedLL"></div><div class="smallRoundedLR"></div><div class="smallRoundedUR"></div>');
});


/**
*	set an offset to be used when displaying hero modules
**/
var heroModuleTimerOffset = 0;

/**
* 	global pause all hero flag
**/
var pauseAllHeros = 0;



/**
* 	Modal Video popup functions
**/
function showFancyVideoDiv(aid){

	preFancyVideoDiv();
	
	$.getJSON("/index.php/ajax_article_get/" + aid, function(articleAry){
		if (articleAry.embed_html_output != "Empty Article Body" && articleAry.embed_html_output != "Article Not Found"){
			/* $("#FancyVideoDivEmbed").html(articleAry.embed_html_output);*/
			$("#FancyVideoDivTitle").html(articleAry.title);
			$("#FancyVideoDivDescr").html(articleAry.summary);
			$("#FancyVideoDivPermalink").html("<a href=\"/view/" + articleAry.document_id + 
				"\">http://www.splunk.com/view/" + articleAry.document_id + "</a>");
			var so = new SWFObject( articleAry.base_url +  articleAry.flv_url, "FancyVideoDivEmbed", "625", "390", "8", "#ffffff","high");
			so.addParam("wmode", "window");
			so.useExpressInstall('/themes/splunk_com/scripts/js/swfobject1-5/expressinstall.swf');
			so.write("FancyVideoDivEmbed");
			
			positionAndShowFancyVideoDiv();
		} 
	});
}

function hideFancyVideoDiv(){
	$("#FancyVideoDivEmbed").html("");
	$("#FancyVideoDivTitle").html("");
	$("#FancyVideoDivDescr").html("");
	$("#FancyVideoDivPermalink").html("");
	$("#FancyVideoDivOuter").slideUp('fast', function(){
		if($.browser.browser == "Firefox") {
			//and now reposition stupid navHeroItems which get borked for some reason
			$('.heroBottom .heroNavItem').hide().css('display','block');
		}
		$("#modalOpacityLayer").hide(function(){
			//in case they didn't have flash, reinject the 'noflash' html
			$("#FancyVideoDivEmbed").html("<div class='noFlash'><p>You must have Flash installed and Javascript<br /> enabled to play this video.</p><a href='http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash' target='_blank'>Click here</a> if you need to download the free Flash Player.</div>");
		});
	});

	//restart rotation of all hero content mods
	pauseAllHeros = 0;
	
}

function preFancyVideoDiv() {
	//pause rotation of all hero content mods
	pauseAllHeros = 1;

	$("#modalOpacityLayer").css({ height:$(document).height(), width:$(document).width(),display:"block" });

	$(window).resize(function(){
		$("#modalOpacityLayer").css({ width:$(document).width() });
	});
	
	var t = $(window).height()/2 - 50;
	var l = $(window).width()/2 - 50;
	var preLoadHtml = "<div id='FancyPreLoader' style='left:" + l + "px; top:" + t + "px;'></div>";
	$('body').append(preLoadHtml);
}

function positionAndShowFancyVideoDiv() {	
	if ( $(window).height() < 656 ) {
		topOffset = $(window).scrollTop() + 10;
	} else {
		var topOffset = ($(window).height() - $("#FancyVideoDivOuter").height())/2 + $(window).scrollTop(); 
		if ( topOffset < 0 ) {
			topOffset = 10;
		}
	}
	$("#FancyPreLoader").remove();
	$("#FancyVideoDivOuter").css({top: topOffset}).slideDown();
}



function wikiSidebarToggler(){
	$('.wikiSidebarTopicHeader').click(function(){
		$(this).toggleClass('topicOpen');
		$(this).next('ul.wikiSidebarTopicList').slideToggle('fast');
	});
}


/* International sites menu */

$(function(){
    $('#languageSwitcher').click(function(evt){
        orig = evt.target;

        if ( $(orig).attr('id') == "languageSwitcherLink") {
            if ( !$('#languageMenu').is('.menuOpen') ) {
                evt.stopPropagation();
                $('body').trigger('internationalOpen', [1]);
                showInternational();
            }
        }
    });

    $('body').click(function() {
        $('body').trigger("internationalOpen");
    });
    
    $('body').bind('internationalOpen', onInternationalOpen)
       
});

function onInternationalOpen(e, menuFlag) {
    if ( menuFlag == 1 ) {
        return false;
    } else {
        hideInternational();
    }
}

function showInternational() {
    $('#languageMenu').addClass('menuOpen');
}

function hideInternational() {
    $('#languageMenu').removeClass('menuOpen');
}





























