﻿
//global var to check if the locker div is visible or not, so, we won't terminate it if it's visible
var locker_isLocked = 0;

//Create the Reminder Object
var Reminder = {
    Version: "1.0.0",
    Build: "1",
    ReleaseDate: "June 11, 2009",
    LastModifiedDate: "November 16, 009",
    Projects: "CRM|Altair|AptecOnline",
    
    Constants: {
        url:'./Reminder/Reminder.aspx',
        method: 'get',
        async: true
    },
    
    Temp: {
        rQueryString: "",
        RemID: 0,
        RemDate: ""
        //rTime: $('Time_').value
    },
    
    Ajax: {
        getTransport: function() {
          return Try.these(
            function() {return new XMLHttpRequest()},
            function() {return new ActiveXObject('Msxml2.XMLHTTP')},
            function() {return new ActiveXObject('Microsoft.XMLHTTP')}
          ) || false;
        },
        
        sendRequest: function(obj) {//sendRequest({"_do":"get_data","remID":123834753497})
            //parse parameters if found
            p = Reminder.Utilities.objectToQueryString(obj);
            
            http.open( Reminder.Constants.method , Reminder.Constants.url + p , Reminder.Constants.async );
            http.onreadystatechange = function(){ Reminder.Ajax.handleResponse() };
	        http.send( null );
        },
        
        handleResponse: function(){
            if(http.readyState == 4 && http.status == 200){
                start = http.responseText;
			    //alert(start);
			    
			    //if(start != 0 || start != 1){alert(typeof start);
			        //eval JSON
			        if( start == '' || start == 'NULL' || start == null ){
				        response = '';
			        }else{
				        response = eval('('+start+')');
			        }
                     
                    if( response != '' && (response != 0 && response != 1) ) {
                        //check if the popup is already there 
                        if($('content').style.display != 'block')
                        {
                            //open popup
                            Reminder.UI.toggleDiv('content','open');
                            //add new data
                            var Msg = response.Message;
                            var TaskName = response.TaskName;
                            var RemID = response.ReminderID;
                            var RemDate = response.RDate;
                            var Sound = response.Sound;
                            
                            Reminder.UI.addDataBlock(Msg , TaskName , RemDate);
                            //add sound
                            var bgs = document.createElement('bgsound');
                            bgs.setAttribute("id" , "bgs_");
                            bgs.setAttribute("src" , Sound);

                            $('data').appendChild(bgs);
                            //$('bgs_').play();
                            
                            //assign RemID && RemDate to the Temp variable
                            Reminder.Temp.RemID = RemID;
                            Reminder.Temp.RemDate = RemDate;
                        }
                        
		            }else Reminder.UI.toggleDiv('content' , 'close');
		            //call data again
                    setTimeout( function(){
                        Reminder.Ajax.sendRequest({"_do":"get_data"});
                    },
                    5000
                    );
		        }
	        }
    },
    
    //Page specific objects
    UI: {
        toggleDiv: function(id , action){
            if(action.toLowerCase() == 'open'){
                if($(id).style.display != 'block' ) locker_isLocked += 1;
                $(id).style.display = 'block';
                $('cbg').style.display = 'block';
                
            }
            if(action.toLowerCase() == 'close'){
                if($(id).style.display == 'block') locker_isLocked -= 1;
                $(id).style.display = 'none';
                if(locker_isLocked == 0) $('cbg').style.display = 'none';
            }
            //alert(locker_isLocked);
        },
        
        showDiv: function(id){
            $(id).style.display = 'block';
            $('cbg').style.display = 'block';
        },
        
        hideDiv: function(id){
            $(id).style.display = 'none';
            $('cbg').style.display = 'none';
        },
        addDataBlock: function(Msg , TaskName , RemDate){
            $('data').innerHTML = '<div class="div-row align-center"><table><tr><td class="align-right">Message: </td><td></td><td class="align-left">' + Msg + '</td></tr><tr><td class="align-right">Task Name: </td><td></td><td class="align-left">' + TaskName + '</td></tr><tr><td class="align-right">Reminder Date: </td><td></td><td class="align-left">' + RemDate + '</td></tr></table></div>';
            
        }
    },
    
    Error: {},
    
    Utilities: {
        $: function() {
            var elements = new Array();
            for (var i = 0 ; i < arguments.length ; i++) {
                var element = arguments[i];
                if ( typeof element == 'string' ) element = document.getElementById(element);
                if ( arguments.length == 1 ) return element;
                elements.push( element );
            }
            return elements;
        },
        
        objectToQueryString: function(obj){
            if(obj || typeof obj === 'object'){
                //add ?
                Reminder.Temp.rQueryString = '?';
                
                for (var key in obj){
                    //build query string
                    Reminder.Temp.rQueryString += key + '=' + obj[key] + '&';
                }
                //slice the last &
                Reminder.Temp.rQueryString = Reminder.Temp.rQueryString.substring(0, Reminder.Temp.rQueryString.length-1);
            }
            return Reminder.Temp.rQueryString;
        }
    }
    
    //execute directly without pending [self-executable function]
    /*
    init: (function(){
        //setInterval( function(){
        setTimeout( function(){
            Reminder.Ajax.sendRequest({"_do":"get_data"});
        },
        5000
        );
    })()
    */
};

function $(){
    var elements = new Array();
    for (var i = 0 ; i < arguments.length ; i++) {
        var element = arguments[i];
        if ( typeof element == 'string' ) element = document.getElementById(element);
        if ( arguments.length == 1 ) return element;
        elements.push( element );
    }
    return elements;
}