//version 1.0 070318
function toggle(elemId) {
	var top = document.getElementById(elemId+'_top');
	var title = document.getElementById(elemId+'_title');
	var content = document.getElementById(elemId+'_content');
	var text = document.getElementById(elemId+'_title_text');
	var expanded;
	
	if (top.className=='sidebar_topleft') {
	
		top.className = 'sidebar_closed_corner';
		title.className = 'sidebar_closed_title';
		text.className = 'sidebar_closed_title_text';
		content.style.display='none';
		document.getElementById(elemId+'_bottom_corner').style.display='none';
		document.getElementById(elemId+'_bottom_border').style.display='none';
		
		expanded = "false";
	
	} else {
	
		top.className = 'sidebar_topleft';
		title.className = 'sidebar_title';
		text.className = 'sidebar_title_text';
		content.style.display='';
		document.getElementById(elemId+'_bottom_corner').style.display='';
		document.getElementById(elemId+'_bottom_border').style.display='';
		
		expanded = "true";
	}	
	
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var toggleUpdated = function(content) {
		//no operation
	}	
	var handlerFunction = getReadyStateHandler(req, toggleUpdated);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/setModuleState.ascx");
	addHeader(req,'moduleid',elemId);
	addHeader(req,'expanded',expanded);
	req.send(null);	

}
window.onload = function(){
    sidebar_init();
}
var SB_MG_OL_Timeout = 10000;
var SB_RSS_Timeout = 3000000;
var SB_EVENTS_Timeout = 60000;
var SB_FA_Timeout = 60000;
var MAXIMUM_WAITING_TIME = 200; // Maxtid att vänta på svar från servern
//var DOWNLOAD_PAGE = "http://w2srv98h.zone.mah.se/sidebarWebService2/downloadFile.aspx?sid=";
var DOWNLOAD_PAGE = "http://w2srv98h.zone.mah.se/sidebarWebService/downloadFile.aspx?sid=";
var MESSENGER_SERVICE = "http://195.178.228.28/SideBarMessenger/messenger/messengerindex.aspx?id=";

function sidebar_init() {
	setTimeout('SB_MG_Timer()', SB_MG_OL_Timeout);
	setTimeout('SB_RSS_Timer()', 200);
    setTimeout('SB_Events_Timer()', 150);
    setTimeout('SB_FA_Timer()', SB_FA_Timeout);
}

// SideBar module functions

function GetSideBarHandlerPath(){
    return "../Sidebar/SidebarHandler.ashx";
}
// Messenger functions


function SB_MG_Timer(){
    SB_MG_UpdateViewer();
    setTimeout('SB_MG_Timer()', SB_MG_OL_Timeout);
}
function SB_MG_UpdateViewer() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		if(content.indexOf("<incoming>") >= 0){
		    var senderStart = content.indexOf("<incoming>")+10;
		    var senderLength = (content.indexOf("</incoming>") - (content.indexOf("<incoming>")+10));
		    var sender = content.substr(senderStart, senderLength);
		    var args = sender.split(":");
		    SB_MG_BeginNewConversation(args[1],args[0]);
		    var exclude = "<incoming>" + sender + "</incoming>";
		    content = content.replace(exclude, ' ');
		}
		var elem = document.getElementById('Messenger_content_text');
		if (elem) {	
			elem.innerHTML=content;
		}
	
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/messenger/viewer.ascx");
	req.send(null);	
}

function SB_MG_OpenSettings() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		document.getElementById('sidebar_settings').innerHTML=content;
		document.getElementById('sidebar_settings').style.display='';
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/messenger/settings.ascx");
	req.send(null);	
}

function SB_MG_SaveSettings(value, action) {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {		
		SB_MG_UpdateViewer();
		SB_MG_OpenSettings();
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/messenger/savesettings.ascx");
	addHeader(req,'context',value);
	addHeader(req,'useraction',action);
	req.send(null);	
}

function SB_MG_SaveVariables(value) {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {		
		SB_MG_UpdateViewer();
		SB_MG_OpenSettings();
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/messenger/changeReceive.ascx");
	addHeader(req,'answer',value);
	req.send(null);	
}

function SB_MG_BeginNewConversation(recID, sid){
    var isOpen = false;
    window.open(MESSENGER_SERVICE+recID+"&sid="+sid,recID,"toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=no, width=600, height=430");
}

// Rss functions

function SB_RSS_Timer(){
    SB_RSS_UpdateViewer();
    setTimeout('SB_RSS_Timer()', SB_RSS_Timeout);
}
function SB_RSS_UpdateViewer() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
		var printContent = function(content) {
		var elem = document.getElementById('RSS_content_text');
		if (elem) {	
			elem.innerHTML=content;
		}
		
		
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/rss/viewer.ascx");
	req.send(null);	
}

function SB_RSS_OpenSettings() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		document.getElementById('sidebar_settings').innerHTML=content;
		document.getElementById('sidebar_settings').style.display='';
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/rss/settings.ascx");
	req.send(null);	
}

function SB_RSS_SaveSettings(value) {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {		
		SB_RSS_UpdateViewer();
		SB_RSS_OpenSettings();
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/rss/savesettings.ascx");
	addHeader(req,'linktoadd',value);
	req.send(null);	
}
//Event functions
function SB_Events_Timer(){
    SB_Events_UpdateViewer();
    setTimeout('SB_Events_Timer()', SB_EVENTS_Timeout);
}
function SB_Events_UpdateViewer() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		var elem = document.getElementById('Events_content_text');
		if (elem) {	
			elem.innerHTML=content;
		}	
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/events/viewer.ascx");
	req.send(null);	
}

function SB_Events_OpenSettings() {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		document.getElementById('sidebar_settings').innerHTML=content;
		document.getElementById('sidebar_settings').style.display='';
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/events/settings.ascx");
	req.send(null);	
}

function SB_Events_SaveSettings(projpath, projid, groupid) {
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
	    SB_Events_UpdateViewer();
	    SB_Events_ExpandProject(projid);
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/events/savesettings.ascx");
	addHeader(req,'projectpath',projpath);
	addHeader(req,'projectid',projid);
	addHeader(req,'groupid',groupid);
	req.send(null);	
}
function SB_Events_ExpandProject(projid){
    var req = newXMLHttpRequest(GetSideBarHandlerPath());
	document.getElementById('sidebar_settings').style.display='';
	var printContent = function(content) {
		document.getElementById('sidebar_settings').innerHTML=content;
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/events/settings.ascx");
	addHeader(req,'expandedproject',projid);
	req.send(null);
}
function SB_Events_ClearEvents(projid){
    var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
	    SB_Events_UpdateViewer();
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/events/clearevents.ascx");
	addHeader(req,'projectid',projid);
	req.send(null);	
}
// File archive javascript file
var SB_FA_activeFileName;
var SB_FA_currentPath = '';
var SB_FA_hideFilePU;

function SB_FA_Timer(){
    SB_FA_UpdateViewer();	
    setTimeout('SB_FA_Timer()', SB_FA_Timeout);		
}

function SB_FA_UpdateViewer() {
	//alert("update viewer files");
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	var printContent = function(content) {
		document.getElementById('FileStore_content_text').innerHTML=content;
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/filestore/viewer.ascx");
	addHeader(req,'currentpath',SB_FA_currentPath);
	req.send(null);	
}
function SB_FA_OpenSettings(){
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
	
	var printContent = function(content) {
	    document.getElementById('sidebar_settings').innerHTML=content;
	    document.getElementById('sidebar_settings').style.display='';
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/filestore/settings.ascx");
	addHeader(req,'currentpath',SB_FA_currentPath);
	req.send(null);	
}
function SB_FA_navigate(navTo){
	var req = newXMLHttpRequest(GetSideBarHandlerPath());
    var printContent = function(content) {
		document.getElementById('FileStore_content_text').innerHTML=content;
		SB_FA_currentPath = navTo;
	}	
	var handlerFunction = getReadyStateHandler(req, printContent);
	req.onreadystatechange = handlerFunction;	
	req.setRequestHeader("usercontrol", "~/controls/filestore/viewer.ascx");
	addHeader(req,'currentpath',navTo);
	req.send(null);	
}

function SB_FA_deleteFile(name, action){
    input_box=confirm("Deletes "+action+" "+name);
    if (input_box==true){  
	    var req = newXMLHttpRequest(GetSideBarHandlerPath());
    	var printContent = function(content) {
		    document.getElementById('FileStore_content_text').innerHTML=content;
		    SB_FA_currentPath = navTo;
	    }	
	var handlerFunction = getReadyStateHandler(req, printContent);
	    req.onreadystatechange = handlerFunction;	
	    req.setRequestHeader("usercontrol", "~/controls/filestore/delete.ascx");
	    addHeader(req,'currentpath',name);
	    addHeader(req,'action',action);
	    req.send(null);	
	    SB_FA_UpdateViewer();
	    //ge filen lite tid att hinna över på disk
        setTimeout('SB_FA_Timer()', 50);
    }
    else
    {
      	//alert ("You clicked cancel");
    }	
    
}

function SB_FA_setActiveFileName(fileName){
    SB_FA_activeFileName = fileName;
}
function SB_FA_downloadFile(sid,name,path){
    //alert("Download "+sid + " " + name + " " + path);
    //window.open("http://w2srv98h.zone.mah.se/sidebarWebService/downloadFile.aspx?sid="+sid+"&cpath="+path+"&Filename="+name);
    //location.href = "http://w2srv98h.zone.mah.se/sidebarWebService/downloadFile.aspx?sid="+sid+"&cpath="+path+"&Filename="+name;
    location.href = DOWNLOAD_PAGE+sid+"&cpath="+path+"&Filename="+name;
}
function SB_FA_hideFilePopUp(){
    SB_FA_hideFilePU = true;
    setTimeout('SB_FA_hideFilePopUpExt()', 500);
}
function SB_FA_showFilePopUpExt(){
    SB_FA_hideFilePU = false;
    document.getElementById('filesPopUp').style.visibility = 'visible';
}
function SB_FA_hideFilePopUpExt(){
    if(SB_FA_hideFilePU == true){
        document.getElementById('filesPopUp').style.visibility = 'hidden';
    }
}
function SB_FA_ShowCreateDir(){
    document.getElementById('sb_newdir').innerHTML = '<input id="sb_newdir_text" name="sb_newdir_text" type="text"><input type="button" value="Ok" onclick="SB_FA_CreateDir();" >';
}
function SB_FA_CreateDir(){
    if(document.getElementById('sb_newdir_text').value != ''){
        var currentPath = document.getElementById('sb_currentpath').value;
        var newdir = document.getElementById('sb_newdir_text').value;
        var req = newXMLHttpRequest("../Sidebar/SidebarHandler.ashx");
		var printContent = function(content) {
		    document.getElementById('sidebar_settings').innerHTML=content;
		    SB_FA_UpdateViewer();
	    }	
	    var handlerFunction = getReadyStateHandler(req, printContent);
	    req.onreadystatechange = handlerFunction;	
	    req.setRequestHeader("usercontrol", "~/controls/filestore/savesettings.ascx");
	    addHeader(req,'currentpath',currentPath);
	    addHeader(req,'newdirname',newdir);
	    req.send(null);	
    }
}

function CloseUpload(){
    SB_FA_UpdateViewer();
    setTimeout('SB_FA_Timer()', 50);
    document.getElementById('sidebar_settings').style.display='none';
}

//end FileStore scripts
function CloseSidebarSettings(){
    document.getElementById('sidebar_settings').style.display='none';
}



function newXMLHttpRequest(controltype ) {

  var xmlreq = false;

  if (window.XMLHttpRequest) {

    // Create XMLHttpRequest object in non-Microsoft browsers
    xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {

    // Create XMLHttpRequest via MS ActiveX
    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e1) {

      // Failed to create required ActiveXObject

      try {
        // Try version supported by older versions
        // of Internet Explorer

        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

        // Unable to create an XMLHttpRequest with ActiveX
      }
    }
  }
  
	// Open an HTTP POST connection.
	// Third parameter specifies request is asynchronous.
	xmlreq.open("GET", controltype, true);

  return xmlreq;
}

/*
 * Returns a function that waits for the specified XMLHttpRequest
 * to complete, then passes its XML response to the given handler function.
 * req - The XMLHttpRequest whose state is changing
 * responseXmlHandler - Function to pass the XML response to
 */
function getReadyStateHandler(req, responseXmlHandler) {

  // Return an anonymous function that listens to the 
  // XMLHttpRequest instance
  return function () {
    var requestTimer = setTimeout(function() {req.abort();}, MAXIMUM_WAITING_TIME); 
    // If the request's status is "complete"
    //LR
        try{
            if (req.readyState != 4)  { return; }
            clearTimeout(requestTimer);
            if (req.status != 200)  {return;}
            responseXmlHandler(req.responseText);
        }catch(e1){}
    //LH
    /*
    if (req.readyState == 4) {
      clearTimeout(requestTimer);
      
      // Check that a successful server response was received
      if (req.status == 200) {
        
        // Pass the XML payload of the response to the 
        // handler function
        responseXmlHandler(req.responseText);
		
      } else {

        // An HTTP problem has occurred
        //alert("HTTP error: "+req.status);
      }
    }
    */
  }
}

/*
 * Returns a function that waits for the specified XMLHttpRequest
 * to complete, then passes its XML response to the given handler function.
 * req - The XMLHttpRequest whose state is changing
 * responseXmlHandler - Function to pass the XML response to
 */
function getXMLReadyStateHandler(req, responseXmlHandler) {

  // Return an anonymous function that listens to the 
  // XMLHttpRequest instance
  return function () {

    // If the request's status is "complete"
    if (req.readyState == 4) {
      
      // Check that a successful server response was received
      if (req.status == 200) {

        // Pass the XML payload of the response to the 
        // handler function
     	responseXmlHandler(req.responseXML);
		
      } else {

        // An HTTP problem has occurred
        alert("HTTP error: "+req.status);
      }
    }
  }
}

function addHeader(request,name,value) {

	if(value.length > 0)
	{
		var textTrimmed = value.replace(/\n/g, '\\n');
		request.setRequestHeader("ajax-"+name, urlEncode(textTrimmed));
	}
		else
	{
		request.setRequestHeader("ajax-"+name, ' ');		
	}	
}

function urlEncode(str) {
	var result = "";
	return encodeURIComponent(str);
}
