﻿function EventDetail(eventID,culture,flag)
{
    this.eventID=eventID;
    this.culture=culture;
    this.flag=flag;
    
    this.ShowEventDetails = function(div,x,y,iframe, isCalendar, elem, e)
    {
        if(!culture || culture == "") culture="en-US";
         var params = "culture=" + culture + 
                        "&EventID="+ eventID;
         if(flag) params+="&flag=" + flag;
         
         if (isCalendar)
         {
           params+="&calendar=true";
           elem.style.cursor = "wait";
         }
         
         var clientX;
         if (e)
          clientX = e.clientX;         
        
         var outer=this; 

         div.innerHTML = "";

         if (currentReq)
         {
            currentReq.abort();
         }
         
         var req = buildRequest("Handlers/EventDetail.ashx",true,params); //read from config, add auth
         currentReq = req;
         showLoadimg(!isCalendar,x,y);
         req.onreadystatechange = function(){
          try
          {
		    if (req && req.readyState == 4)
		    {
		        if (req.status == 200)
		        {
			        var status_code;
			        var status_text;
			        try
			        {
				        status_code = req.status;
				        status_text = req.statusText;
			        }
			        catch(e) {
                        showLoadimg(false,x,y);
			            reportException(e,div.id);
			            return false;
			        }
			        if (status_code == 200 && req.responseText && req.responseText.indexOf("Error.aspx") == -1)
			        {
			            if(req.responseXML)
			            {
			                try
			                {
			                   var edData = req.responseXML;
                               transformXsl("xsl/EventDetail.xsl",false,div,edData,document); 
                               
                               if (isCalendar)
                               {
                                    if (elem && div)
                                    {
                                        var hide = div.getAttribute("hide");
                                        if (hide == "false")
                                        {
                                            elem.style.cursor = "default";
                                            div.style.display = "block";
                                            outer.RePositionDiv(elem, div, clientX);
                                            var mEventIdDiv = $("meventInfo");
                                            if (mEventIdDiv)
                                            {
                                                mEventIdDiv.innerHTML += div.innerHTML;
                                            }
                                        }
                                    }
                               }
                               else
                                div.style.display = "block";
                               if(iframe) 
                               {
                                    iframe.style.display = "block";
                                    iframe.style.height = div.offsetHeight;
                                }
                           }catch(e){
                                showLoadimg(false,x,y);return false;} 
			            }
	                }
	                else
	                {
                        Reset(isCalendar,elem,x,y);
	                    return false;
	                }
    	            
                    showLoadimg(false,x,y);
	            }
	            else
	            {
	                return false;
	            }        
	          }    
            }
            catch(e){}
            }
   		    req.send(params);   
    }
    
    function Reset(isCalendar, elem, x, y)
    {
        showLoadimg(false,x,y);
        if (isCalendar)
        {
            if (elem)
               elem.style.cursor = "default";
        }
        else
        {
            HideInfoBox(0);
            ShowWWEMessage(AppStrings.unabletoloadeventdetail);
        }
    }
    
    this.RePositionDiv = function(elem, div, clientX)
    {
        var top = findPosY(elem) + elem.offsetHeight;
        var left = findPosX(elem) + elem.offsetWidth;
    
       if(_wweUtils.is_ie){
            ht = [document.body.clientHeight,document.body.scrollTop, div.offsetHeight];
            wl = [document.body.clientWidth,document.body.scrollLeft, div.offsetWidth];
        }
        else{
            ht = [window.innerHeight,window.pageYOffset, div.offsetHeight];
            wl = [window.innerWidth,window.pageXOffset, div.offsetWidth];
        }
    
        div.style.position = "absolute";
        var atop, aleft;
        
        top = findPosY(elem) + elem.offsetHeight;
        
        if ((ht[0] + ht[1]) >  (top + ht[2]))
        atop = top  + 10;
        else
        atop = top - elem.offsetHeight - ht[2] - 10;
        
        
        div.style.top = atop + "px";

        if((wl[0] + wl[1]) > (left + wl[2]))
            aleft = clientX + 10;
         else
            aleft = left - wl[2] - 10 ;

        div.style.left = aleft + "px";
    
    }
    
    
    function showLoadimg(show,x,y)
    {
        if(show)
        {
            var img = $('loadingimg');
            if(!img)
            {
                img = document.createElement('img');
                img.setAttribute('id','loadingimg');
                img.setAttribute('src','./Resources/Images/loading.gif');
                img.style.position="absolute";
                document.body.appendChild(img);
            }
            img.style.left=x+"px";
            img.style.top=y+"px";
            img.style.display = "inline";     
            img.style.zIndex=20;       
        }
        else
        {
            var img = $('loadingimg');
            if(img)
                img.style.display = "none"; 
        }
    }
}

var currentReq = null;