﻿////Notification- Author: Adeel
var choiceDialogRef;
var Notification = Class.create({   initialize: 
    function() { 
        this.notificationExpertID = 'this//';
        this.notificationVisitorID = '';            
        this.notificationUserID = '';            
        this.notificationMessage = '';
        this.checkForNotificationInterval = 30000;      
        
    } 
 }); 
 
 
 Notification.addMethods({   setNotificationMessage : function(notMsg) {
    this.notificationMessage = notMsg;
}
});

Notification.addMethods({   getNotification : function() {
    alert(this.notificationMessage);
}
});

Notification.addMethods({   fetchNotifications : function() {
    var visitorID= this.notificationVisitorID;
    var url = baseURL + '/ajaxHandler.ashx'; 
    var params = 'action=notification';    
    new Ajax.Request(url, {  
         method: 'post', postBody: params,   onSuccess: function(transport) { 
            var p = transport.responseJSON;
            if(typeof p.length == 'undefined' || p.length==0)
                return;
            
            var multipleAlerts = false;
            if(p.length >1)
                multipleAlerts = true;
                        
            var questionTitle = "Live Chat Alert!"; 
            var body =  "<div class='block-brbg-purple'>";            
            for(var i=0;i<p.length;i++){            
                if(p[i].ntype == "QuestionPostedAlert"){   
                    var questionId = p[i].qid;
                    var userType = p[i].utype;    
                    var userOrVisitorID = p[i].uorvid; 
                    var questionText =  p[i].questionText;    
                    var questionLink = p[i].questionLink;                        
                    body+="<div class='expertise' id=\"notificationAlertDiv"+i+"\"><span>The question "+questionText+ " asked by "+ p[i].From+".</span><input class=\"button\" type=\"button\" value=\"Ignore\" onclick=\"ignoreQuestion('notificationAlertDiv"+i+"',"+questionId+",'"+questionLink+"','"+userType+"',"+userOrVisitorID+")\" /><input class=\"button\" type=\"button\" class=\"add-update-button\" style=\"background-color:#FEB956; width:65px;border-color:#F18416\" value=\"Chat Now\" onclick=\"joinChat('notificationAlertDiv"+i+"',"+questionId+",'"+questionLink+"','"+userType+"',"+userOrVisitorID+")\" /><div style='clear: both;'></div></div>";                                     
                }
                else if(p[i].ntype == "QuestionPostedAlertResponse"){                    
                    var status = p[i].status;
                    var fromUser = p[i].From;
                    var questionText = p[i].questionText;
                    var questionURL = p[i].questionLink;
                    if(status == "rejected"){
                        showAlert("Alert","<b>"+fromUser +"</b> is not available for chat on question  <a href=\""+questionURL+"\" target=\"_blank\">"+questionText+"</a>");
                        return;
                    }
                    else if(status == "accepted"){
                        body+="<div class='expertise' id=\"notificationAlertDiv"+i+"\"><span><b>"+fromUser+"</b> is available for chat on question <a href=\""+questionURL+"-livechat#StartChat\" target=\"_blank\">"+questionText+"</a>.</span><a class='button' style=\"background-color:#FEB956; width:65px;border-color:#F18416\" href=\""+questionURL+"-livechat#StartChat\" target=\"_blank\">Chat Now</a><div style='clear: both;'></div></div>";                 
                    }
                            
                }
            }
            if(visitorID == '')
                body+="</div><div style='padding:10px;'>Donot disturb me for <span id=\"spanHr\"></span> <span id=\"spanMin\"></span> <a class=\"fs12\" href=\"#\" onclick=\"return postUserDisturbSettings();\"><b>Submit</b></a></div>"
            openChoiceDialog(questionTitle,body);
            populateNotDisturbHoursAndMinutes();
            } });
       }});        
       
function openChoiceDialog(title,text) {      
    choiceDialogRef=new Dialog({
	handle:'#dialogChoice',
	title:title,
	content:"<div class='block-brbg-orange' style='padding:10px'>"+text+"</div>",	
	width:690,
	height:150,
	close:{
		link:true,
		overlay:false,
		esc:false
	},
	padding:0,
	margin:50
});
choiceDialogRef.open();
//also play a sound alert
if(mySound)
    mySound.play();
    
//also blink tab
    titlebarTextAlert();    
}
 
function populateNotDisturbHoursAndMinutes(){    
    var objSpanHr = document.getElementById("spanHr");    
    if(objSpanHr == null){        
        setTimeout("populateNotDisturbHoursAndMinutes();",1000);
        return;
    }    
    var objSpanMin = document.getElementById("spanMin");
    var selectHrStr = "<select id=\"NDHr\" name=\"NDHr\">";
    for(var i=0;i<24;i++){
        selectHrStr += "<option value=\""+i+"\">"+i+" hour</option>";
    }
    selectHrStr+="</select>";
    objSpanHr.innerHTML = selectHrStr;
    
    var selectMinStr = "<select id=\"NDMin\" name=\"NDMin\">";
    for(var i=0;i<59;i++){
        selectMinStr += "<option value=\""+i+"\">"+i+" minute</option>";
    }
    selectMinStr+="</select>";
    objSpanMin.innerHTML = selectMinStr;
    
 }
 
 function postUserDisturbSettings(){
    var objHour = document.getElementById("NDHr");
    var objMin = document.getElementById("NDMin");
    if(objHour.value == 0 && objMin.value == 0){
        alert("Both hours and minutes do not have the 0 value.");
        return false;
    }
    
    var url = baseURL + '/ajaxHandler.ashx'; 
    var date = new Date();
    var timeStamp = date.getYear() + '' + date.getMonth() + '' + date.getDay() + '' + date.getHours() + '' + date.getMinutes() + '' + date.getSeconds() + date.getMilliseconds();
    var params = 'action=dndsetting&ts='+timeStamp+'&hr='+objHour.value+"&min="+objMin.value;
    new Ajax.Request(url, {  
         method: 'post', postBody: params,   onSuccess: function(transport) {     
            alert("Your setting "+objHour.value+" hour and "+objMin.value+" minute has been saved.");
            } });
           
    
    
    if(choiceDialogRef != null)
        choiceDialogRef.close();
 }
   


function ignoreQuestion(parentDiv,questionId,questionLink, userType, userOrVisitorID){
    var url = baseURL + '/ajaxHandler.ashx'; 
    var params = 'qid='+questionId+'&uorvid='+userOrVisitorID+'&utype='+userType+'&action=addNotification&response=ignore';
    new Ajax.Request(url, {  
         method: 'post', postBody: params,   onSuccess: function(transport) { 
            
            } });
            
            //End    

    var parDiv = document.getElementById(parentDiv);
    parDiv.innerHTML="";//Remove
    var span = document.createElement("span");
    span.id="rejChat"+questionId+userOrVisitorID+userType;
    span.innerHTML = "User is notified that you are unavailable for chat.";
    span.style.display="block";
    span.style.float="none";
    parDiv.appendChild(span);
    
    var divClear= document.createElement("div");
    divClear.style.clear= "both";
    parDiv.appendChild(divClear);
}

function joinChat(parentDiv,questionId,questionLink, userType, userOrVisitorID){    
    var url = baseURL + '/ajaxHandler.ashx'; 
    var params = 'qid='+questionId+'&uorvid='+userOrVisitorID+'&utype='+userType+'&action=addNotification&response=join';
    
    new Ajax.Request(url, {  
         method: 'post', postBody: params,   onSuccess: function(transport) { 
            //alert(transport.responseText);
            var parDiv = document.getElementById(parentDiv);
            parDiv.innerHTML="";
            
            var span = document.createElement("span");
            span.id="accChat"+questionId+userOrVisitorID+userType;
            span.innerHTML = "User has been notified. You can now chat on a newly opened window.";
            span.style.display="block";
            span.style.float="none";
            parDiv.appendChild(span);
            
            var divClear= document.createElement("div");
            divClear.style.clear= "both";
            parDiv.appendChild(divClear);
      } });
            
            //End    

    
    
    
    window.open(questionLink+"-livechat#StartChat");

    
}


//Title alerter
var titleSwitchCount = 0;
var titleSwitchLimit = 5;
var titleOriginalText = document.title;
var titleText = "You have a new alert!";
var titleDelay = 800;

function titlebarTextAlert() {
// Failsafe
if( titleSwitchCount) return;

titlebarSwitch();
}

function titlebarSwitch() {

if( document.title == titleOriginalText) {
// New message text
document.title = titleText;
titleSwitchCount++;

} else {
// Original text
document.title = titleOriginalText;
if( titleSwitchCount == titleSwitchLimit) titleSwitchCount = 0;
}

// If count is 0 then we must have just reset it
if( titleSwitchCount) setTimeout( "titlebarSwitch();", titleDelay);
}

