﻿
$(document).ready(function() {
    window.name="vimpat_main";
    
    if(!slide_show_on){
        slide_show_on=1;
        setTimeout("slideShow()",10000);
    };
    $("a.trans-link").click(function(){
        if ($(this).next(".transcript").is(":visible")) {
            $(this).next(".transcript").hide();
            $(this).html("<img src='/images/arrows/down_arrow.png' alt='' />Read transcript");
        } else {
            $(this).next(".transcript").show();
            $(this).html("Hide transcript");
        };
        return false;
    });
	
    $("a.share-link").attr('href', function(){
        var service = $(this).attr('href');
        var link = "http://api.addthis.com/oexchange/0.8/forward/" + service + "/offer?url=http://www.vimpat.com&description=Here%2527s%20some%20interesting%20information%20about%20getting%20better%20seizure%20control.";
        return link;
    });
	
	$("a.share-link").click(function(){
	    var svcName = $(this).attr('title');
	    var nevershow=getCookie('nevermore');
	    //alert("0="+nevershow);
	    $("#checkathis").show();
	    if (nevershow!=null && nevershow!="")
	        {
		        //alert(nevershow+"go");
		        var xkcd= $(this).attr('href');
		        return xkcd;

	        }
	    else	
	        {
	            var destination = $(this).attr('href');
        	    
	            showRamp(destination,svcName);
	            return false;}
	        });
    $("a.share-link").attr('target', '_blank');
	$("a[rel|=external]:not(a:has(img))").append('&nbsp;<img src="/images/icons/offsite.gif" alt="" />');
	$("a[rel|=external]").click(function(){
		$("#checkathis").hide();
	    var destination = $(this).attr('href');
	    showRamp(destination);
	    return false;
	});
	
	// Email button
	$("#ut-email a, a.si-email").click(function(){	     
		// add class to assist with tracking
		if ( $(this).parents("#advocatePopup").length ) {
			$('#mailpop').addClass('shared-perspectives');
		}
		showMail();
	    return false;
	});
    // Print button
	$("#ut-print a, a.si-print").click(function(){
	    window.print();
	    return false;
	});
	// Add tracking to email popup "submit" button
	$("#mailsub").click(function() {
		if ( $("#mailpop").hasClass("shared-perspectives") ) {
			pageTracker._trackEvent('Button', 'Click', 'Email');
		} else {
			pageTracker._trackEvent('Share', 'Click', 'Email');
		}
	});
	// Add tracking to Shared Perspectives popup print button
	$("#advocatePopup a.si-print").click(function(){
	    pageTracker._trackEvent('Button', 'Click', 'Print');
	    return false;
	});
    $("#advocatePopup div.isi a").click(function(){
	    pageTracker._trackEvent('Link', 'Click', 'ISI');
	    // Don't return false because we want to actually go to the ISI page
    });
});





var divs = new Array('veronica','heather','alan');
var slide_show_on=0;
var t;
function slideShow(){
    selectedDiv = divs.shift();
    divs.push(selectedDiv);
    
    showSlide(selectedDiv);
    t=setTimeout("slideShow()",10000);
};
function showSlide(name){
    var newSlide = document.getElementById(name);
    $('.slide').fadeOut(1000);
    $(newSlide).fadeIn(1000);
};
function clickSlide(name){
    clearTimeout(t);
    slide_show_on=0;
    showSlide(name);
};

function showRamp(destination,tag)
{   
    closeAll();
    h = $('body').height();
    $("#shadow-layer").height(h);
    $("#shadow-layer").show();
    $("#shadow-layer").one("click",function(){
        closeRamp();
    });
	// Get on with it.
	$("#offramp a#ok").attr('href',destination);
	$("#offramp a#ok").attr('target', '_blank');
	$("#offramp a#ok").unbind().bind("click",function()
	{
	    if (tag!=null){
	        pageTracker._trackEvent('Share', 'Click', tag);
	    }
	    closeRamp();
	    return true;
	});
	
    var viewWidthAndHeight = getWidthAndHeight(); // 0 for width 1 for height
    var viewScrollXY = getScrollXY(); // 0 for X 1 for Y
    var currentX = viewWidthAndHeight[0] + viewScrollXY[0];
    //var currentY = viewWidthAndHeight[1] + viewScrollXY[1];
    
    $("#offramp").css("top",(viewScrollXY[1] + ((viewWidthAndHeight[1]-275)/2)));
    $("#offramp").css("left",(currentX/2 - 306));
    $("#offramp").show();
};

function showMail()
{   
    closeAll();
    h = $('body').height();
    $("#shadow-layer").height(h);
    $("#shadow-layer").show();
    $("#shadow-layer").one("click", function(){
        closeMail();
    });
    
    // Clear popup inputs
    $("#mailpop #email-form input").val("");
    
    // Populate page title in popup
    var pageTitle = $.trim(document.title);
    $("input#pageTitle").val(pageTitle);

    var viewWidthAndHeight = getWidthAndHeight(); // 0 for width 1 for height
    var viewScrollXY = getScrollXY(); // 0 for X 1 for Y
    var currentX = viewWidthAndHeight[0] + viewScrollXY[0];
    //var currentY = viewWidthAndHeight[1] + viewScrollXY[1];
        
	// Show popup
	$("#mailpop").css("top",(viewScrollXY[1] + 100));
    $("#mailpop").css("left",(currentX/2 - 306));
    $("#mailpop #email-form").show();
    $("#mailpop #email-confirm").hide();
    $("#mailpop").show();
};

// availableTopics: semicolon-delimited list of topics available for this advocate (formatted ";topicID.videoID;topicID.videoID;topicID.videoID; ...")
// selectedVideoID: currently selected videoID, if any
function showAdvocate(availableTopics, selectedVideoID)
{   
    closeAll();
    h = $('body').height();
    $("#shadow-layer").height(h);
    $("#shadow-layer").show();
    $("#shadow-layer").one("click", function(){
        closeAdvocate();
    });
    
    var viewWidthAndHeight = getWidthAndHeight(); // 0 for width 1 for height
    var viewScrollXY = getScrollXY(); // 0 for X 1 for Y
    var currentX = viewWidthAndHeight[0] + viewScrollXY[0];
    //var currentY = viewWidthAndHeight[1] + viewScrollXY[1];

    // Delete cloned topic LIs
    $("div#advocateTopics li.clone").remove();
    
    // Reset states - hide and remove classes
    $("div#advocateTopics li").removeClass("show");
    $("div#advocateTopics li").removeClass("active");
    
    // Remove multiple topic numbering
    $("div#advocateTopics li span.duplicateNumber").remove();
    
    // Enable available topics
    if (availableTopics != "") {
        var duplicateTopics = new Array();
        
        var arrTopics = availableTopics.split(";");
        $(arrTopics).each(function(index, topic) {
            if (topic != ""){ 
            
                // Extract topicID and videoID from topic
                // topic will be formatted like:
                // var topic = "topicID.videoID"
                var topicID = topic.split(".")[0];
                var videoID = topic.split(".")[1];

                // Find LIs that contain this topicID
                var li = $("div#advocateTopics li input:hidden[class='hidTopicID'][value='" + topicID + "']").parent("li");
                if (li) {
                
                    // If there is more than one topic already ready to show, reduce the set down to the last one
                    if (li.length > 1) li = li.last();
                    
                    // See if we already have an LI with this topicID
                    if (li.hasClass("show")) {
                        // Yep, clone it and add "clone" class to identify it
                        var clonedLI = li.clone(true).addClass("clone");

                        // Add to list
                        li.before(clonedLI);
                        
                        // Keep track of duplicate topicIDs so we can number them later
                        if ($.inArray(topicID, duplicateTopics) == -1) {
                            duplicateTopics.push(topicID);
                        }
                    } else {
                        // Nope, just mark it so it'll be displayed
                        li.addClass("show");
                    }

                    // Set videoID
                    li.children("input:hidden[class='hidVideoID']").val(videoID);

                    if (videoID == selectedVideoID) {
                        // If this is the selected video, add "active" class
                        li.addClass("active");
                    } else {
                        // Otherwise make sure it's not there
                        li.removeClass("active");
                    }
                }
            } 
        });
        
        // Number the duplicate topics for this advocate
        $(duplicateTopics).each(function(index, topicID) {
        
            // Loop through LIs with this topicID and add numbers to each duplicate topic
            $("div#advocateTopics li input:hidden[class='hidTopicID'][value='" + topicID + "']").parent("li").each(function(index, li) {
                var copy = $(li).find("a.topic").html();
                var number = index + 1;
                
                // Wrap the duplicate numbering in a span so we can find and remove them to reset the popup state
                $(li).find("a.topic").html(copy + "<span class='duplicateNumber'>&mdash;Clip " + number + "</span>");
            });
        });
        
        // Show popup
        $("#advocatePopup").css("top",(viewScrollXY[1] + 50));
        $("#advocatePopup").css("left",(currentX/2 - 365));
        $("#advocatePopup").show();

    } else {
        // Shouldn't get here (no topics = no videos)
        alert("There are no videos available for your selection.");
    }
};

function closeAll()
{
    closeRamp();
    closeMail();
};
function closeRamp()
{
    $("#shadow-layer").hide();
    $("#offramp").hide();
};
function closeMail()
{
	if($("#advocatePopup:visible").length<1){
		$("#shadow-layer").hide();
	};
    $("#mailpop #email-form").hide();
    $("#mailpop #email-confirm").hide();
    $("#mailpop").hide();
};
function closeAdvocate()
{
    $("#shadow-layer").hide();
    $("#advocatePopup").hide();
    $("#advocateVideo").html("");
};

function submitMail(){
    var valid = true;

    // Validate input
    if (!validateInput(validateName, "#senderName",
            "Please enter your name",
            "Please enter a valid name")) {
          valid = false;  
    }
    if (!validateInput(validateEmail, "#senderEmail",
            "Please enter your email address",
            "Please enter a valid email address")) {
          valid = false;  
    }
    if (!validateInput(validateName, "#recipientName",
            "Please enter the recipient's name",
            "Please enter a valid name")) {
          valid = false;  
    }
    if (!validateInput(validateEmail, "#recipientEmail",
            "Please enter the recipient's email address",
            "Please enter a valid email address")) {
          valid = false;  
    }
    
    if (valid) {
        
        var result;
        var pageUrl = "";
        
        // See who's calling this function
        if ($("#advocatePopup").is(":visible")) {
            // If advocatePopup div is visible, then this is being called from a Shared Perspectives video popup        
            var videoID = $("#hidVideoID").val();
            var eh = new SharedPerspectivesEmailHandler();
            
            pageUrl = replaceQueryString(window.location.href,"vid",videoID); //doesn't have any params yet
            
            result = eh.sendEmail({ "senderName": $("#senderName").val(),
                                    "senderEmail": $("#senderEmail").val(),
                                    "recipientName": $("#recipientName").val(),
                                    "recipientEmail": $("#recipientEmail").val(),
                                    "pageTitle": $("#pageTitle").val(),
                                    "pageUrl": pageUrl
                                  });
        } else {
            // Otherwise, this is being called from the regular email popup
            var eh = new ShareEmailHandler();
            result = eh.sendEmail({ "senderName": $("#senderName").val(),
                                    "senderEmail": $("#senderEmail").val(),
                                    "recipientName": $("#recipientName").val(),
                                    "recipientEmail": $("#recipientEmail").val(),
                                    "pageTitle": $("#pageTitle").val(),
                                    "pageUrl": window.location.href
                                  });
        }

        if (ajaxSuccess(result)) {
            // Show confirmation
            $("#mailpop #email-confirm").show();
            $("#mailpop #email-form").hide();
        } else {
            // There was a problem
            alert("Your request could not be completed:\n\n" + result);
        }
    }

};
function replaceQueryString(url, param, value) {  
	var preURL = "";  
	var postURL = "";  
	var newURL = "";  
	  
	var start = url.indexOf(param+"=");  
	if(start > -1){  
		var end = url.indexOf("=", start);  
		preURL=url.substring(0,end) +"="+value;  
		  
		var startRest = url.indexOf("&",start);  
		postURL="";  
		if(startRest > -1){  
			postURL=url.substring(startRest);  
		}  
	}else{  
		var delimeter = "";  
		preURL=url;  
		if (url.indexOf("?") > 0)  
		delimeter = '&';  
		else  
		delimeter = '?';  
		  
		postURL=delimeter+param+"="+value;  
	}  
	newURL = preURL+postURL;  
	var index = newURL.indexOf('id=',0);  
	if(index > -1){  
		var Nurl = newURL.substring(0,index);  
		var EUrl = newURL.substr(index,newURL.length - index);  
		var eIndex = EUrl.indexOf('&',0);  
		if(eIndex > -1)  
		EUrl = EUrl.substr(eIndex, EUrl.length - eIndex);  
		//newURL = newURL.substring();  
		newURL = Nurl + EUrl;  
	}  
	return newURL;  
} 
function getWidthAndHeight(){
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [ myWidth, myHeight ];
}

function getScrollXY() {
    var scrOfX = 0, scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return [ scrOfX, scrOfY ];
}

function searchBox()
{
    var search = document.getElementById("term");
    if(search) {
        if(search.value.toLowerCase() == "search") {
            search.value = "";
        } else {
            search.focus();
            search.select();
        }
    }
}

function SearchRedirect()
{
    var search = document.getElementById("term");
    if(search) {
        var strTerm = search.value;
        
        if(strTerm.toLowerCase() != "search") {
            strTerm = strTerm.replace(" ", "+");
            window.location.href = "/search.aspx?SearchType=all&SearchTerm=" + strTerm;
        }
    }
}

function getCookie(c_name)
{
    if (document.cookie.length>0) {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) {
            c_start=c_start + c_name.length+1;
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return "";
}

function setCookie(c_name,value,expiredays)
{
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function makeCookie() {
  if(document.getElementById('chkthis').checked) {
    var makecookie=setCookie('nevermore');
      if (makecookie==null || makecookie=="") {
	    setCookie('nevermore',true);
	  }
  } else {
     var makecookie=setCookie('nevermore');
      if (makecookie!=null && nevershow!="") {
	    setCookie('nevermore','tmp',-1);
	  }
  }
}

//Font resizer
$(document).ready(function() {

    function setFontSize(newSize) {
        if (newSize) {
        
            //Reset text size links
            $("ul#utility-tools li#ut-textsize a").removeClass("on");
            
            switch (newSize) {
                case "large":
                    $("div#content").css("font-size", "18px");
                    $("div#sidebar").css("font-size", "18px");
                    $("div#topContent").css("font-size", "18px");
                    $("div#leftColumn").css("font-size", "18px");
                    $("a#textSizeLarge").addClass("on");
                    break;
                case "largest":
                    $("div#content").css("font-size", "22px");
                    $("div#sidebar").css("font-size", "22px");
                    $("div#topContent").css("font-size", "22px");
                    $("div#leftColumn").css("font-size", "22px");
                    $("a#textSizeLargest").addClass("on");
                    break;
                default:
                    $("div#content").css("font-size", "15px");
                    $("div#sidebar").css("font-size", "15px");
                    $("div#topContent").css("font-size", "15px");
                    $("div#leftColumn").css("font-size", "15px");
                    $("a#textSizeNormal").addClass("on");
            }
        }
    }
    
    //Set up event handlers
    $("a#textSizeNormal").click(function() {
        $.cookie("fontSize", "normal", {expires: 365} );
        setFontSize("normal");
        return false;
    });
    $("a#textSizeLarge").click(function() {
        $.cookie("fontSize", "large", {expires: 365} );
        setFontSize("large");
        return false;
    });
    $("a#textSizeLargest").click(function() {
        $.cookie("fontSize", "largest", {expires: 365} );
        setFontSize("largest");
        return false;
    });
    
    //Read font size cookie and set font size
    var cookieValue = $.cookie("fontSize");
    setFontSize(cookieValue);

});

////////////////
// Common popup-related code
$(document).ready(function() {

    // Set email option to active if inputs become active
    $("#outputPopup input#popupName").focus(function() {
        $("input#outputEmail").attr("checked", "checked");
    });
    $("#outputPopup input#popupEmail").focus(function() {
        $("input#outputEmail").attr("checked", "checked");
    });
    // Hide error messages when user selects print
    $("#outputPopup input#outputPrint").click(function() {
        $("div#emailInputs li").removeClass("error");
        $("div#emailInputs li div.errorMessage").hide();
    });

});

// Validates input and sets/clears error messages
// validatorFunction: function which takes user input as a parameter and returns true/false
// inputID: ID of the html INPUT tag containing the user input
// emptyMessage: message displayed when user input is empty
// invalidMessage: message displayed when user input is invalid
function validateInput(validatorFunction, inputID, emptyMessage, invalidMessage) {
    var value = $.trim($(inputID).val());
  
    if (validatorFunction(value)) {
        $(inputID)
            .parent("li").removeClass("error")
            .find("div.errorMessage").hide();
        return true;
    } else if (value == "") {
        $(inputID)
            .parent("li").addClass("error")
            .find("div.errorMessage").html(emptyMessage).show();
        return false;
    } else {
        $(inputID)
            .parent("li").addClass("error")
            .find("div.errorMessage").html(invalidMessage).show();
        return false;
    }
}
// Returns whether the input is a valid name
function validateName(value) {
    return /^[0-9a-zA-Z ]+$/.test(value);
}
// Returns whether the input is a valid email address
function validateEmail(value) {
    return /^[0-9a-zA-Z\.\-_]+@([0-9a-zA-Z\.\-_]+\.)+[a-zA-Z]{2,4}$/.test(value);
}


////////////////
// AJAX code for popups
//Used to determine success/failure from AJAX calls
var AJAX_SUCCESS = "SUCCESS";
//Returns boolean indicating whether 'result' is the AJAX success string
function ajaxSuccess(result){
    try {
        if (result.substring(0, AJAX_SUCCESS.length) == AJAX_SUCCESS){
            return true;
        } else {
            return false;
        }
    } catch (e) {
        return false;
    }
}
//Extracts the value returned from our custom AJAX calls
function extractAjaxResult(result){
    return result.substring(AJAX_SUCCESS.length);
}

// Determine if input is a number by trying to convert it to a number and making sure its length is nonzero
function IsNumeric(input) {
    return (input - 0) == input && input.length > 0;
}


