
function switchTab(idouter, idinner, outerclass, innerclass)
{
    var elouter=document.getElementById(idouter);
    var elinner=document.getElementById(idinner);
    
    if ((elouter != null) && (elinner != null)) {
        elouter.className = outerclass; 
        elinner.className = innerclass; 
    }
}

function switchImage(elementid, src)
{
    var el=document.getElementById(elementid);
    if (el != null) {
      el.src = src;
    }
}

function DoSwitchElement(id, showElement, switchElementID, styleDeselected, styleSelected)
{
    var el=document.getElementById(id);
    
    if (el != null) { 
        if (showElement) {
            el.style.display="block"; 
        } else {
            el.style.display="none"; 
        }
        
        var es=document.getElementById(switchElementID);
        if (es != null) {
            if (showElement) {
                es.className = styleSelected;
            } else {
                es.className = styleDeselected;
            }
        }
        
        
        return true;
    } else {
        return false;
    }
}


function ShowDiv(switchElement, id)
{
    if (DoSwitchElement(id, true)) {
        switchElement.style.display="none"; 
    }
    return;
}


function switchContentTab(id, highlight, selected, forceSelection)
{
    var idouter = id + "_outer";
    var idinner = id + "_inner";
    var styleclassinner = "switchtabinner";
    var styleclassouter = "switchtabouter";
    if (highlight) {
        styleclassinner += "highlight";
        styleclassouter += "highlight";
    } else if (selected) {
        styleclassinner += "selected";
        styleclassouter += "selected";
    } else {
        styleclassinner += "normal";
        styleclassouter += "normal";
    }

    var elouter=document.getElementById(idouter);
    var elinner=document.getElementById(idinner);
    
    if ((elouter != null) && (elinner != null)) {
        if (forceSelection || (elouter.className.indexOf("selected") == -1)) {
            elouter.className = styleclassouter; 
            elinner.className = styleclassinner; 
        }
    }
}

function FindTabSetForId(id)
{
    var result = null;
    var s;
    for (s = 0; s < switchTabIds.length; s++) {
        var tabset = switchTabIds[s];
        for (i = 0; i < tabset.length; i++) {
            if (id == tabset[i]) {
                result = tabset;
                break;
            }
        }
        
        if (result != null)
            break;
    }
    return result;
}

function SelectSwitchTab(id)
{     
    var tabset = FindTabSetForId(id);
    if (tabset == null)
        return;
        
    var i;
    for (i = 0; i < tabset.length; i++) {
        var selected = (id == tabset[i]);
        var tabId = "tab" + tabset[i];
        switchContentTab(tabId, false, selected, true);
        DoSwitchElement(tabset[i], selected, tabId, "switchtabdeselected", "switchtabselected"); 
    }
}

function getStringVar(varname)
{
    var searchstr = document.location.search;
    var varidx = searchstr.indexOf(varname);

    if (varidx >= 0) {
        var startpos = varidx + varname.length +1;
        searchstr = searchstr.substring(startpos, searchstr.length);

        var nextpos = searchstr.length;
        if (searchstr.indexOf('&') >= 0) {
            nextpos = searchstr.indexOf('&');
        }

        searchstr = searchstr.substring(0, nextpos);
    } else {
        searchstr = '';
    }

    return unescape(searchstr);
}

function doOnBodyLoad()
{
    var tab = getStringVar("tab");
    if (tab != "") {
        SelectSwitchTab(tab);
    }
}

function trimStr(s) {
    s = s.replace( /^\s+/g, "" );
    s = s.replace( /\s+$/g, "" );
    return s;
}

function GetClassname(currentClassname, error)
{
    // remove the Error suffix if it is there
    var s = currentClassname.replace( /Error$/, "");
    if (error) {
        s = s + "Error";
    }
    
    return s;
}

function SetElementClass(element, error)
{
    if (element != null) {
        element.className = GetClassname(element.className, error);
    }
}

function DoCheckFormValue(formElement, showMessage)
{
    if (formElement != null) {
        var captionElement = document.getElementById(formElement.id + "Caption");
        var nameElement = document.getElementById(formElement.id + "Name");
        var valueElement = document.getElementById(formElement.id + "Value");
        
        var isempty = (trimStr(formElement.value) == "");

        SetElementClass(captionElement, isempty);
        SetElementClass(nameElement, isempty);
        SetElementClass(valueElement, isempty);

        if (isempty) {
            if (showMessage && (captionElement != null)) {
                alert("Please enter a value in field '" + captionElement.innerHTML + "'.");
            }
            
            formElement.focus();
        }
        
        return (!isempty);
    } else {
        return true;
    }
}

function CheckFormValue(formElement)
{
    DoCheckFormValue(formElement, false);
    return true;
}

function CheckFormValues(ids)
{
    var result = true;
    var i = 0;
    while ((i < ids.length) && result) {
        result = DoCheckFormValue(ids[i], true);
        i++;
    }
    return result;
}

function deProtMl(s,cs)
{
  var i;
  var u = "";
  for (i=0; i < s.length; i++) {
    u = u + String.fromCharCode(s.charCodeAt(i) - cs);
  }
  return u;
}

function ProtMl(s)
{
  var m = deProtMl("~rz}\x85\x80K", 17);
  var a = deProtMl(s, 17);
  var d = deProtMl("Q\x85\x80\x80}\x84wrt\x85\x80\x83\x8A?t\x80~", 17);
  window.open(m + a + d, "");
}

function enableButton(id, state) 
{
    var btn = document.getElementById(id);
    if (btn != null) {
        btn.disabled = !state;
    }
}

function setElementText(id, html)
{
  var e = document.getElementById(id);
  if (e != null) {
    e.innerHTML = html;
  }
}

function doDownloadFile(url) 
{
    window.open(url, "");
}

var http_request = false;
function makePOSTRequest(url, parameters, requestHandler) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        // set type accordingly to anticipated content type
        //http_request.overrideMimeType('text/xml');
        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  
  http_request.onreadystatechange = requestHandler;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.send(parameters);
  return true;
}

function alertContents() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        result = http_request.responseText;
        var element = document.getElementById('postResult');
        if (element != null) {
           element.innerHTML = result;
           element.style.display = "block";
        }
     } else {
        alert('There was a problem with the request (' + http_request.status + ')');
     }
  }
}

var forwardFunction = null;

function alertContentsForward() {
  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
        result = http_request.responseText;
        forwardFunction(result);
     } else {
        forwardFunction("There was a problem with the request (" + http_request.status + ")");
     }
  }
}

function urlencode(str) {
   str = escape(str);
   str = str.replace(/\+/g, '%2B');
//       str = str.replace('%20', '+');
   str = str.replace(/\*/g, '%2A');
   str = str.replace(/\//g, '%2F');
   str = str.replace(/\@/g, '%40');
   str = encodeURI(str);
   return str;
}



