/* Copyright © Pluck Corporation 2008. This software code and related intellectual property are the property of Pluck Corporation and are licensed for use solely on designated websites. Any distribution, copying, or other use of this intellectual property other than pursuant to a written agreement with Pluck Corporation is strictly prohibited. All Rights Reserved. */
// THIS FILE IS AUTOGENERATED. DO NOT EDIT THIS FILE DIRECTLY.
if (typeof(slwidgets) === 'undefined') {
  slwidgets = {};
}
if (typeof(slwidgets.addEvent) === 'undefined') {
  // from http://ajaxcookbook.org/event-handling-memory-leaks/
  slwidgets.addEvent = function(instance, eventName, listener){
    var listenerFn = listener;
    if (instance.addEventListener) {
      instance.addEventListener(eventName, listenerFn, false);
    } else 
      if (instance.attachEvent) {
        listenerFn = function(){
          listener(window.event);
        }
        instance.attachEvent("on" + eventName, listenerFn);
      }
  }
}
if (typeof(slwidgets.widgetLoader) === 'undefined') {
  slwidgets.widgetLoader = {};
  (function(){
    // the local variable we'll use to queue up load calls
    var callbacks = [];
    // keeps track of what scripts we've already added
    var addedScripts = {};
    // have we added our onload handler before?
    var onLoadHandlerAdded = false;
    // called to check if every url is loaded
    var onLoadHandler = function(){
      // check that every url is loaded
      for (url in addedScripts) {
        if (addedScripts[url] == false) {
          // found a url that hasn't loaded, so call us again in 100 mills
          setTimeout(onLoadHandler, 100);
          return;
        }
      }
      // every url is loaded, so call all the callbacks
      for (var callbackIndex = 0; callbackIndex < callbacks.length; callbackIndex++) {
        callbacks[callbackIndex]();
      }
    };
    
    var addUrlHandler = function(url) {
        // check to see if we've added this script before
        if (url in addedScripts) {
          // we've added it before, short circuit adding the script node to the head
          return;
        }
        // we've added the script, but haven't loaded it yet
        addedScripts[url] = false;
        // there should only be one head node
        var headNode = document.getElementsByTagName("head")[0];
        // make the script node
        var scriptNode = document.createElement("script");
        scriptNode.setAttribute("src", url);
        // if we're using Internet Explorer, use the onreadystatechange event; otherwise, use onload
        if ((/msie/i).test(navigator.userAgent)) {
          scriptNode.onreadystatechange = function(){
            if (this.readyState === 'loaded' || this.readyState === 'complete') {
              slwidgets.widgetLoader.requestComplete(url);
            }
          };
        } else {
          scriptNode.setAttribute("onload", "javascript:slwidgets.widgetLoader.requestComplete('" + url + "');");
        }
        headNode.appendChild(scriptNode);
    };
    
    slwidgets.widgetLoader.load = function(urls, callback){
        if (typeof(urls).length === 'undefined') {
            urls = [urls];
        }
        for (var i=0; i < urls.length; i++) {
            addUrlHandler(urls[i]);
        }
        
        // add the callback to our list of callbacks
        callbacks.push(callback);;
    };
    
    slwidgets.widgetLoader.requestComplete = function(urlThatFinished){
      // set this url to loaded so our onload handler can check to make sure everything was loaded  before calling the callbacks
      addedScripts[urlThatFinished] = true;
    }
    slwidgets.widgetLoader.addWidgetDiv = function(){
      var id = "widgetDiv-" + Math.random() + '-' + Math.random();
      document.write('<div id="' + id + '"><\/div>');
      return id;
    };
    // add our onload listener that will check that the urls are finished loading
    if (!onLoadHandlerAdded) {
      onLoadHandlerAdded = true;
      slwidgets.addEvent(window, "load", onLoadHandler);
    }
  })();
}
if (typeof window.slMessageBox == 'undefined') {
	slMessageBox = function() { }
};

(function(){
	
	slwidgets.widgetLoader.load(['' + dlabs.settings.urls.siteLifeBase + '/content/widgets/globalOptions.js'], function() {
	    if (typeof slMessageBox.__code === 'undefined') {

		    slMessageBox.__code = true;
slMessageBox.prototype = new slwidgets.slWidgetBase();

slMessageBox.prototype.template = '<div style="display:none;"\>\r\n\t<div class="slModal slMessageBox" id="${uniqueModalId}"\>\r\n\t\t<div class="slModalTR"\></div\><div class="slMessageBoxModalTL"\></div\>\r\n\t\t<div class="slModalCL"\><div class="slModalCR"\>\r\n\t\t\t<div class="slReplyTitle"\><div id="${uniqueMessageId}"\></div\></div\>\r\n\t\t    <div class="slForm"\>\r\n\t\t\t    <div class="slButtons slFLC"\>\r\n\t\t\t\t    {if options.notification}\r\n\t\t\t\t\t\t<a href="#" onclick="javascript: WIDGETINSTANCE.okClicked();" class="slButton1"\><span class="slButton1_Right"\>Ok</span\></a\>\r\n\t\t\t\t\t{else}\r\n\t\t\t\t\t\t<a href="#" onclick="javascript: WIDGETINSTANCE.yesClicked();" class="slButton1"\><span class="slButton1_Right"\>Yes</span\></a\>\r\n\t\t\t\t\t    <a href="#" onclick="javascript: WIDGETINSTANCE.noClicked();" class="slButton1"\><span class="slButton1_Right"\>No</span\></a\>\r\n\t\t\t\t\t{/if}\r\n\t\t\t    </div\>\r\n\t\t    </div\>\r\n\t\t</div\></div\>\r\n\t\t<div class="slModalBR"\></div\><div class="slMessageBoxModalBL"\></div\>\r\n\t</div\>\r\n\t<div class="slModalBg"\></div\>\r\n</div\>\r\n\r\n\r\n\r\n';

slMessageBox.prototype.addRequests = function() {
	this.context.uniqueModalId = PluckSlWidgetHelper.createUniqueId('modal');
	this.context.uniqueMessageId = PluckSlWidgetHelper.createUniqueId('modal');
};

slMessageBox.prototype.buildContextFromResponses = function(responses) {
};

slMessageBox.prototype.show = function(positiveCallback, negativeCallback) {
	var modalElem = document.getElementById(this.context.uniqueModalId);
	
	// Make the PARENT visible (includes dialog and background)
	modalElem.parentNode.style.display = 'block';		
	
	//Position box in the center of the screen.
	var newLeft = Math.floor(document.documentElement.scrollLeft + (document.documentElement.clientWidth/2) - (modalElem.clientWidth/2));
	var newTop = Math.floor(document.documentElement.scrollTop + (document.documentElement.clientHeight/2) - (modalElem.clientHeight/2));
	if(newLeft < 0) newLeft = 0;
	if(newTop < 0) newTop = 0;
	modalElem.style.left = newLeft + "px";
	modalElem.style.top = newTop + "px";
	
	if (positiveCallback) {
		this.positiveCallback = positiveCallback;	
	}
	if (negativeCallback) {
	    this.negativeCallback = negativeCallback;
	};
	
	return false;
};

slMessageBox.prototype.hide = function() {
	var modalElem = document.getElementById(this.context.uniqueModalId);
	//modalElem.setAttribute("style", "display:none;");
	modalElem.parentNode.style.display = 'none';
};

slMessageBox.prototype.okClicked = function() {
	this.hide();
	if (this.positiveCallback) {
		this.positiveCallback();
	}
};

slMessageBox.prototype.yesClicked = function() {
	this.hide();
	if (this.positiveCallback) {
		this.positiveCallback();
	}
};

slMessageBox.prototype.noClicked = function() {
	this.hide();
	if (this.negativeCallback) {
	    this.negativeCallback();
	}
};

slMessageBox.prototype.setDialogMessage = function(displayMessage) {
	document.getElementById(this.context.uniqueMessageId).innerHTML = displayMessage;	
};};
	    
    });
})();
if (typeof window.slReportAbuseWidget == 'undefined') {
	slReportAbuseWidget = function() { }
};

(function(){
	
	slwidgets.widgetLoader.load(['' + dlabs.settings.urls.siteLifeBase + '/content/widgets/globalOptions.js'], function() {
	    if (typeof slReportAbuseWidget.__code === 'undefined') {

		    slReportAbuseWidget.__code = true;
slReportAbuseWidget.prototype = new slwidgets.slWidgetBase();

slReportAbuseWidget.prototype.template = '{if !options.abuseReported}\r\n<a href="javascript:void(0)" class="slIcon_Abuse" onclick="WIDGETINSTANCE.reportAbuse(event, \'${options.keyType}\', \'${options.keyId}\')"\>Report Abuse</a\>\r\n{else}\r\n<div class="slIcon_AbuseReported"\>Abuse Reported</div\>\r\n{/if}';

slReportAbuseWidget.prototype.addRequests = function() {
    this.autoRender = false;
};

slReportAbuseWidget.prototype.buildContextFromResponses = function(responses) {
};

slReportAbuseWidget.prototype.finalizeContext = function() {
    this.rerender();
};

slReportAbuseWidget.prototype.reportAbuse = function(event, keyType, keyId) {
    // preserve this for the callback
    var me = this;
    this.context.options.reportAbuseClicked(event, keyType, keyId, function() {
        me.context.options.abuseReported = true;
        me.rerender();
    });
};};
	    
    });
})();
if (typeof window.slReportAbuseDialogWidget == 'undefined') {
	slReportAbuseDialogWidget = function() { }
};

(function(){
	
	slwidgets.widgetLoader.load(['' + dlabs.settings.urls.siteLifeBase + '/content/widgets/globalOptions.js'], function() {
	    if (typeof slReportAbuseDialogWidget.__code === 'undefined') {

		    slReportAbuseDialogWidget.__code = true;
slReportAbuseDialogWidget.prototype = new slwidgets.slWidgetBase();

slReportAbuseDialogWidget.prototype.template = '<div class="slReportAbuseDialog" id="${dialogId}" style="display:none;"\>\r\n\t<form action="#" method="get" class="slForm" accept-charset="utf-8" id="${formId}"\>\r\n\t\t<input type="hidden" name="keyType" value="${options.keyType}" id="keyType" /\>\r\n\t\t<input type="hidden" name="keyId" value="${options.keyId}" id="keyId" /\>\r\n\t\t<div class="slFormField"\>\r\n\t\t\t<label for="reason"\>Reason</label\>\r\n\t\t\t<select name="reason"\>\r\n\t\t\t\t<option value="Obscenity or vulgarity"\>Obscenity or vulgarity</option\>\r\n\t\t        <option value="Hate speech"\>Hate speech</option\>\r\n\t\t        <option value="Personal attack"\>Personal attack</option\>\r\n\t\t        <option value="Advertising or Spam"\>Advertising or Spam</option\>\r\n\t\t        <option value="Copyright or Plagiarism"\>Copyright or Plagiarism</option\>\r\n\t\t        <option value="Other"\>Other</option\>\r\n\t\t\t</select\>\r\n\t\t</div\>\r\n\t\t<div class="slFormField"\>\r\n\t\t\t<label for="description"\>Description</label\>\r\n\t\t\t<textarea name="description" rows="8" cols="40"\></textarea\>\r\n\t\t</div\>\r\n\t\t<div class="slButtons"\>\r\n\t\t\t<a class="slButton1" href="#" onclick="WIDGETINSTANCE.reportAbuse(); return false;"\><span class="slButton1_Right"\>Report Abuse</span\></a\><a href="javascript:void(0)" onclick="WIDGETINSTANCE.cancel()" class="slCancel"\>Cancel</a\>\r\n\t\t</div\>\r\n\t</form\>\r\n</div\>\r\n';

slReportAbuseDialogWidget.prototype.addRequests = function() {
    this.context.formId = PluckSlWidgetHelper.createUniqueId('reportAbuseForm');
    this.context.dialogId = PluckSlWidgetHelper.createUniqueId('reportAbuseDialog');
}

slReportAbuseDialogWidget.prototype.buildContextFromResponses = function(responses) {
};

slReportAbuseDialogWidget.prototype.getDialog = function() {
    return document.getElementById(this.context.dialogId);
};

slReportAbuseDialogWidget.prototype.show = function(x, y, keyType, keyId) {
    this.context.options.keyType = keyType;
    this.context.options.keyId = keyId;
    this.rerender();
    var dialog = this.getDialog();
    dialog.style.display = "block";
    dialog.style.position = "absolute";
    y = y/2;
    dialog.style.top = y + "px";
    dialog.style.left = x + "px";
    var widget = document.getElementById(this.divId);
    widget.style.display = "block";
};

slReportAbuseDialogWidget.prototype.hide = function() {
    var dialog = this.getDialog();
    dialog.style.display = "none";
    var widget = document.getElementById(this.divId);
    widget.style.display = "none";
};

// the function called when the user reports abuse
slReportAbuseDialogWidget.prototype.reportAbuse = function() {
    var form = document.getElementById(this.context.formId);
    var keyType = form.elements['keyType'].value;
    var keyId = form.elements['keyId'].value;
    var reportThisKey = this.createDaapiKey(keyType, keyId);
    var reportAbuseAction = new ReportAbuseAction(reportThisKey, form.elements['reason'].value,
        form.elements['description'].value);
    var me = this;
    this.sendRequests([reportAbuseAction], function(batchResponse) {
        me.hide();
        if (batchResponse && batchResponse.Messages.length === 1 && batchResponse.Messages[0].Message === 'ok') {
            me.context.options.success();
        }
    });
};

// the function that is called when a user cancels the dialog
slReportAbuseDialogWidget.prototype.cancel = function() {
    this.hide();
    this.context.options.cancel();
};};
	    
    });
})();

var PLUCKSL_WIDGET_OPTIONS_DEFAULT = {"urls":false,"userKey":"","templateId":"","confirmationBox":{"notification":false,"templateId":""},"reportAbuseWidget":{"abuseReported":false,"keyType":"","keyId":"","reportAbuseClicked":function(event, keyType, keyId, reportCallback) { alert('Abuse reported on key ' + keyId + ' of type ' + keyType); reportCallback(); },"templateId":""},"reportAbuseDialogWidget":{"success":function() { alert('Successfully reported abuse');},"cancel":function() { alert('Cancelled');},"keyType":"","keyId":"","templateId":""}};
if (typeof window.slEHowProfileStatus == 'undefined') {
	slEHowProfileStatus = function() { }
};

(function(){
	var widgetId = slwidgets.widgetLoader.addWidgetDiv();
var localOptions = {};
if (typeof(PLUCKSL_WIDGET_OPTIONS) !== 'undefined') { localOptions = PLUCKSL_WIDGET_OPTIONS; }
var localDefaultOptions = PLUCKSL_WIDGET_OPTIONS_DEFAULT;
	slwidgets.widgetLoader.load(['' + dlabs.settings.urls.siteLifeBase + '/content/widgets/globalOptions.js'], function() {
	    if (typeof slEHowProfileStatus.__code === 'undefined') {

		    slEHowProfileStatus.__code = true;
slEHowProfileStatus.prototype = new slwidgets.slWidgetBase();

slEHowProfileStatus.prototype.template = '<div class="ProfileStatus"\>\r\n\t<hr /\>\r\n\t{if getCurrentUser().UserKey.Key != "anonymous"}\r\n\t\t{if isExpert == "0"}\r\n\t\t\t<p\><a href="${urls.privateMessaging.composeWithTo(options.userKey)}"\>Send a message</a\></p\>\r\n\t\t{/if}\r\n\t\t{if status == "NotFriend"}\r\n\t\t\t<p\><a href="#" onclick="WIDGETINSTANCE.addFriend(); return false;"\>Add as a friend</a\></p\>\r\n\t\t{elseif status == "Pending"}\r\n\t\t\t<p\>Friendship Pending</p\>\r\n\t\t{elseif status == "Friend"}\r\n\t\t\t<p\>\r\n\t\t\t\tYou are friends<br/\>\r\n\t\t\t\t&nbsp;(<a href="#" onclick="WIDGETINSTANCE.removeFriend(); return false;"\>Remove Friendship</a\>)\r\n\t\t\t</p\>\r\n\t\t{/if}\r\n\t\t{if isExpert == "0"}\r\n\t\t\t{var hasReported = (user.CurrentUserHasReportedAbuse == "True") }\r\n\t\t\t<p\>${showReportAbuse("UserKey", user.UserKey.Key, hasReported)}</p\>\r\n\t\t\t${reportAbuseDialogWidget}\r\n\t\t{/if}\r\n\t{else}\r\n\t\t<a href="${PLUCKSL_GLOBAL_OPTIONS.loginUrl}"\>Login</a\> to add as a friend\t\r\n\t{/if}\r\n\t<hr /\>\r\n\t<input type="hidden" id="${removeFriendId}" value="Are you sure you want to remove ${user.DisplayName} as a friend?" /\>\r\n</div\>\r\n${confirmationBox}\r\n';

slEHowProfileStatus.prototype.addChildWidgets = function() {
	this.addChildWidget("slReportAbuseDialogWidget", "reportAbuseDialogWidget");
	this.reportAbuseDialog = this.child['reportAbuseDialogWidget'];
	this.addConfirmationBoxAsChild();
};

slEHowProfileStatus.prototype.addRequests = function() {
	this.context.removeFriendId = PluckSlWidgetHelper.createUniqueId("removeFriend");
	this.autoRender = false;
	this.makeRequest();
};

slEHowProfileStatus.prototype.buildRequests = function() {
	var requests = new Array();
	requests.push(new UserKey(this.context.options.userKey));
	requests.push(new IsFriend(new UserKey(this.context.options.userKey), new UserKey(this.getCurrentUser().UserKey.Key)));
	return requests;
};

slEHowProfileStatus.prototype.makeRequest = function() {
	var requests = this.buildRequests();
	var me = this;
	this.sendRequests(requests, function(data) {
		me.buildContextFromResponses(data);
		me.autoRender = true;
		me.processTemplates();
		me.render();
	});
};

slEHowProfileStatus.prototype.buildContextFromResponses = function(data) {
	this.context.status = data.Messages[0].Message;
	var responses = data.Responses;
	this.context.user = responses[0].User;
};


slEHowProfileStatus.prototype.addFriend = function() {
	var me = this;
	this.sendRequests([new AddFriendAction(new UserKey(this.context.options.userKey))], function(data) {
		me.execute();
	});
};

slEHowProfileStatus.prototype.removeFriend = function() {
	var me = this;
	this.showConfirmation(this.context.removeFriendId, function() {
		me.sendRequests([new RemoveFriendAction(new UserKey(me.context.options.userKey))], function(data) {
			me.execute();
		});
	});	
};
};
	    PluckSlWidget.runWidget('slEHowProfileStatus', widgetId, localDefaultOptions, localOptions);
    });
})();

