// TPM Edit- this is the combined demo functions script

var demoDebugText = "";

function appendDemoDebug(text)
{
	if (demoDebugText.length > 0)
	{
		demoDebugText = demoDebugText + "\n";
	}
	demoDebugText = demoDebugText + text;
}

function showDemoDebugText()
{
	alert(demoDebugText);
}

function demoGetWrappedText(text, wrapAt)
{
	var count = 0;
	var ch = "";
	var result = "";
	for (pos = 0; pos < text.length; pos++)
	{
		ch = text.charAt(pos);
		
		if (ch == "\n")
			count = 0;
		
		if (count >= wrapAt && ch == " ")
		{
			ch = "\n";
			count = 0;
		}
		
		if (ch == "\n")
			ch = "\t\n";		

		result = result + ch;
		++count;
	}
	
	return result
}

function demoAdminBlockedNTAmessage(message)
{
	demoAlert("demo: " + message);
}

function demoAlert(text) {
	var cannedText = " disabled for the online demo.  You can access all administrative"
		+ " features in our free 30-day eval.";
	
	alert(demoGetWrappedText(text + cannedText, 50));
	//var answer = confirm (demoGetWrappedText(text + cannedText, 50));
	//if (answer)
	//	window.open("http://google.com", "DemoOrionDownload");
}

// Abstract function to hijack demo controls
function demoOverrideAlert(selector, message)
{
	var modElement = $(selector);
	
	if (modElement.length > 0)
	{
		appendDemoDebug("override-found:  " + selector);
		try {
			modElement.attr("href", "");
		} catch (err) {
			//nothing
		}

		try {
			modElement.attr("onclick", "");
		} catch (err) {
			//nothing
		}		
		modElement.click(function () { 
			  demoAlert(message); 
			  return false;
		});
	}
	else
	{
		appendDemoDebug("override-absent:  " + selector);
	}
}

// Abstract function to remove demo controls
function demoRemoveElement(selector)
{
	var modElement = $(selector);
	
	if (modElement.length > 0)
	{
		appendDemoDebug("remove-found:  " + selector);
		modElement.remove();
	}
	else
	{
		appendDemoDebug("remove-absent:  " + selector);
	}
}

function demoMainJSinit()
{
	appendDemoDebug("asp->demoUserName:  " + demoUserName);
	appendDemoDebug("asp->demoModuleName:  " + demoModuleName);
	appendDemoDebug("");

	// test not found link
	demoOverrideAlert("doesnotexist", "");

	// Atlas Download link 
	demoOverrideAlert("a[@href=/NetworkAtlas/NetworkAtlas.exe]",
		"The Network Atlas client download has been");

	// Netflow settings
	//demoOverrideAlert("a[@href^=/Orion/TrafficAnalysis/Admin/NetFlowSettings.aspx]",
	//	"NetFlow setting changes are");
	// NetFlow Endpoint edit/lookup
	demoOverrideAlert("a[@href^=/Orion/TrafficAnalysis/Editors/HostnameEdit.aspx]",
		"NetFlow endpoint renaming is");
	demoOverrideAlert("input[@src=images/Button.LookupSec.png]",
		"Endpoint DNS lookup is");

	//NCM policy report update
	demoOverrideAlert("input[@src=/Orion/NCM/Resources/images/Button.UpdateNow.gif]", 
		"Running the NCM policy update is");
		
	demoOverrideAlert("input[@src=/Orion/NCM/Resources/images/Button.SaveScript.gif]", 
		"Script saving is");	
		
	// NCM integration update button
	//demoOverrideAlert("#ctl00_ctl00_ContentPlaceHolder1_MainContentPlaceHolder_UpdateNow",
	//"NCM inventory updates are");

	if (demoUserName != "admin")
	{
		// NCM Credential button    
		demoOverrideAlert("a[@href^=Resources/NCM/Credential.aspx]",
			"NCM setting changes are");
		demoOverrideAlert("a[@href^=NCM/Resources/NCM/Credential.aspx]",
			"NCM setting changes are");
	}
}

// Shows modal popup
function demoShowModalPopup(divId) {
    $("#" + divId).show().dialog({
        width: 659,
        height: 356,
        modal: true,
        overlay: { "background-color": "black", opacity: 0.5 }
    });
}

// Closes the dialog
function demoCloseModalDialog(divId) {
    $("#" + divId).dialog("close");
}

// Opens new window and go to download page
function demoOpenDownloadPage() {    
    window.open("http://www.solarwinds.com/register/index.aspx?Program=607&c=70150000000FKkF&CMP=OTC-X-SWILD-NPM-NPM-DL-BTN-POP");
}

// Creates a cookie
function demoSetCookie(name, value) {
    var exdate = new Date();
    // Set milliseconds, seconds, minutes and hours to zero
    exdate.setMilliseconds(0);
    exdate.setSeconds(0);
    exdate.setMinutes(0);
    exdate.setHours(0);
    // Add one day to the exdate
    exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000);

    document.cookie = name + "=" + escape(value) + ";expires=" + exdate.toGMTString() + ";path=/";
}


function demoGetCookie(name) {
    var theCookie = "" + document.cookie;
    
    var ind = theCookie.indexOf(name);
    if (ind == -1 || cookieName == "") return "";
    
    var ind1 = theCookie.indexOf(';', ind);
    if (ind1 == -1) ind1 = theCookie.length;
    
    return unescape(theCookie.substring(ind + cookieName.length + 1, ind1));
}



// Common function for tracking events
function demoTrack(eventName) {
    try {
        s = s_gi(s_account);  //s_account is set up in s_code.js, which should be called from or included by the demo
        s.linkTrackVars = "events";
        s.linkTrackEvents = eventName;
        s.events = eventName;
        s.tl(this, "o", "demoModal");  //link name doesn’t matter – it’s just a placeholder
    }
    catch (eException) {
    }
}

// When the Modal popup appears 
function demoTrackPopupAppear() {
    demoTrack("event37");
}

// When user clicks on "Download 30-day trial" green button in popup 
function demoTrackPopupDownloadClick() {
    demoTrack("event39");
}

// When user clicks on "No Thanks…." orange button in popup
function demoTrackNoThanksClick() {
    demoTrack("event38");
}

// When user enters the demo site we need to check for the  demo session cookie and registration cookies. If the user does not have either cookie we will set a success event.
function demoTrackNewUser() {
    demoTrack("event36");
}