﻿/***************************************************************************************************

    GLOBALE VARIABELN

***************************************************************************************************/
var xmlDoc_PATTERN;
var xmlDoc_Kategorie;
var xmlDoc_Rubrik;
var xmlDoc_Unterrubrik;
var xmlDoc_Content;
var xmlDoc_Data;
var xmlDoc_Adresse;
var xmlDoc_Benutzer;
var xmlDoc_Firmen;
var xmlDoc_LOG;







/***************************************************************************************************

    GUI FUNKTIONEN

***************************************************************************************************/
function loadingGrafic(aShowLoading)
    {
    if (aShowLoading)
        {
        if (aShowLoading == true)
            {
            //Wartezustand starten
            if (window.event.button != 2)
                {//nur, wenn kein Rechtsklick gemacht wurde!
                setTimeout("document.getElementById('divMain').style.display = 'none';", 500);
                setTimeout("document.getElementById('divLoading').style.display = '';", 500);
                setTimeout("document.getElementById('divMain').style.display = '';", 120000); //Wartezustand nach 2 Minuten wieder deaktivieren!
                setTimeout("document.getElementById('divLoading').style.display = 'none';", 120000); //Wartezustand nach 2 Minuten wieder deaktivieren!
                }
            }
        else
            {
            //Wartezustand beenden
            setTimeout("document.getElementById('divMain').style.display = '';", 500);
            setTimeout("document.getElementById('divLoading').style.display = 'none';", 500);
            }
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
/***************************************************************************************************

    ASYNCHRONE AJAX-FUNKTIONEN

***************************************************************************************************/

////////////////////////////////////////////// START: BEISPIEL-PATTERN /////////////////////////////
function SAMPLE_PATTERN(args, divPanel)
    {

        window.status = 'AJAX-SAMPLE_PATTERN: START INFO...'
        
        try
            {
            document.getElementById(divPanel).innerHTML = document.getElementById('divLoading').innerHTML;
            }
         catch  (e)
            {//Sanduhr kann nicht angezeigt werden!
            }
         finally
            {
            }
        
        var myProcess_Answer_Asynch = true;
        var myXML = '<mCMS>' 
                        + '\n' + '  <Job><![CDATA[' + 'Name der zu rufenden XML-Daten' + ']]></Job>'
                        + '\n' + '  <ARGUMENT_1><![CDATA[' + args + ']]></ARGUMENT_1>'
                        + '\n' + '  <ARGUMENT_x><![CDATA[' + args + ']]></ARGUMENT_x>'
                        + '\n' + '</mCMS>'

    
        if (window.ActiveXObject)
          {
            xmlDoc_PATTERN = new ActiveXObject("Microsoft.XMLHTTP")
            xmlDoc_PATTERN.onreadystatechange = SAMPLE_PATTERN_processing;
            xmlDoc_PATTERN.open("GET", "ajaxXML.aspx", myProcess_Answer_Asynch);
            xmlDoc_PATTERN.send(myXML);
          }
        else if (window.XMLHttpRequest)
          {
            xmlDoc_PATTERN = new XMLHttpRequest()
            xmlDoc_PATTERN.onreadystatechange = SAMPLE_PATTERN_processing;
            xmlDoc_PATTERN.open("POST", "ajaxXML.aspx", myProcess_Answer_Asynch)
            xmlDoc_PATTERN.send(myXML);
          }
        else
          {
            window.status = 'AJAX-SAMPLE_PATTERN: Browser does not support XML-HTTP...'
          }  

    }        
    
function SAMPLE_PATTERN_processing()
    {
        if (xmlDoc_PATTERN)
            {
            
            if (xmlDoc_PATTERN.readyState == 4)
              {// if "OK"
              
              if (xmlDoc_PATTERN.status == 200)
                {//Wenn die Response ein XML ist, bitte dieses verarbeiten!
                
                try
                    {
                    
                    var doIt = false;


                    if (window.ActiveXObject)
                        {
//IE
                        var doc = new ActiveXObject("Microsoft.XMLDOM");
                        doc.async = "false";
                        doc.loadXML(xmlDoc_PATTERN.responseText);
                        
                        if (doc)
                            {
                            doIt = true;
                            }
//ENDE: IE
                        }
                        
                        
                    else if (window.XMLHttpRequest)
                        {
//not IE
                        var parser = new DOMParser();
                        try
                            {
                            doc = parser.parseFromString(xmlDoc_PATTERN.responseText, "text/xml");
                            }
                        catch (e)
                            {
                            alert('AJAX-SAMPLE_PATTERN: Parser-Error: ' + e.message);
                            }                        

                        if (doc)
                            {
                            doIt = true;
                            }
//ENDE: not IE              
                        }
                        
                        
                        
//START: XML-Antwort verarbeiten
                        if (doIt == true)
                            {

                            var docElement = doc.documentElement;

                            var Filter = '';
                            var myFehler = '';
                            try
                                {
                                Filter = '/mCMS/Fehler';
                                myFehler = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;
                                }
                            catch (e)
                                {
                                //alert(e.message);
                                }


                            if (myFehler.length == 0)
                                {//kein Fehler vom AJAX-Service erhalten
                                    
                                try
                                    {
                                    
                                    Filter = '/mCMS/RETURN_ARGUMENT_1';
                                    var myReturn_Arg_1 = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;

                                    //irgendetwas mit den Daten aus myReturn_Arg_1 anstellen
                                    alert('Datem vom AJAX-Service erhalten: ' + myReturn_Arg_1)
                                    
                                    }
                                catch (e)
                                    {
                                    //
                                    }
                                   
                                                                                
                                }
                            else
                                {//ajaxXML.aspx hat einen Fehler ausgegeben!
                                window.status = 'AJAX-SAMPLE_PATTERN: ' + myFehler;
                                }
                            }
//ENDE: XML-Antwort verarbeiten
                    
                     }
                 catch (e)
                    {//Antwort ist vermutlich kein XML!
                    window.status = 'AJAX-SAMPLE_PATTERN: ' + e.message;
                    }
                 finally
                    {
                    setTimeout('window.status = \'\'', 3000);
                    }
                    
                    
                }
                
              else if (xmlDoc_PATTERN.status == 404)
                {
                window.status = 'AJAX-SAMPLE_PATTERN: URL not found!';
                }
                
              else
                {
                window.status = 'AJAX-SAMPLE_PATTERN: missing Server-Response!';
                }

              }
           }
        else
           {
           //window.status = 'AJAX-SAMPLE_PATTERN: missing xml Object!');
           }

    }
////////////////////////////////////////////// ENDE: BEISPIEL-PATTERN /////////////////////////////
    
    
    
    

////////////////////////////////////////////// START: getObject_Data /////////////////////////////
function getObject_Data(objectID, aDataType_Name, aID_Sprache, convertTXTtoHTML, divPanel_Id, ShowAsMouseFlagContainer)
    {

        if (!xmlDoc_Data)
            {

            window.status = 'Objektdaten laden...'
            
            try
                {
                document.getElementById(divPanel_Id).innerHTML = document.getElementById('divLoading').innerHTML;
                }
             catch  (e)
                {//Sanduhr kann nicht angezeigt werden!
                }
             finally
                {
                }
            
            try
                {
                if (!ShowAsMouseFlagContainer)
                    {
                    ShowAsMouseFlagContainer = false;
                    }            
                }
            catch (e)
                {
                ShowAsMouseFlagContainer = false;
                }
            
            var myProcess_Answer_Asynch = true;
            var myXML = '<mCMS>' 
                            + '\n' + '  <Job><![CDATA[' + 'data.getObjectData' + ']]></Job>'
                            + '\n' + '  <objectID><![CDATA[' + objectID + ']]></objectID>'
                            + '\n' + '  <DataType_Name><![CDATA[' + aDataType_Name + ']]></DataType_Name>'
                            + '\n' + '  <ID_Sprache><![CDATA[' + aID_Sprache + ']]></ID_Sprache>'
                            + '\n' + '  <convertTXTtoHTML><![CDATA[' + convertTXTtoHTML + ']]></convertTXTtoHTML>'
                            + '\n' + '  <returnDivPanel_Id><![CDATA[' + divPanel_Id + ']]></returnDivPanel_Id>'
                            + '\n' + '  <returnShowAsMouseFlagContainer><![CDATA[' + ShowAsMouseFlagContainer + ']]></returnShowAsMouseFlagContainer>'
                            + '\n' + '</mCMS>'
        
            if (window.ActiveXObject)
              {
                xmlDoc_Data = new ActiveXObject("Microsoft.XMLHTTP")
                xmlDoc_Data.onreadystatechange = getObject_Data_processing;
                xmlDoc_Data.open("GET", "ajaxXML.aspx", myProcess_Answer_Asynch);
                xmlDoc_Data.send(myXML);
              }
            else if (window.XMLHttpRequest)
              {
                xmlDoc_Data = new XMLHttpRequest()
                xmlDoc_Data.onreadystatechange = getObject_Data_processing;
                xmlDoc_Data.open("POST", "ajaxXML.aspx", myProcess_Answer_Asynch)
                xmlDoc_Data.send(myXML);
              }
            else
              {
                window.status = 'getObject_Data: Browser does not support XML-HTTP...'
              }
          }
      else
          {
          //es löuft gerade eine Anfrage!
          }
          

    }        
    
function getObject_Data_processing()
    {
        if (xmlDoc_Data)
            {
            
            if (xmlDoc_Data.readyState == 4)
              {// if "OK"
              
              if (xmlDoc_Data.status == 200)
                {//Wenn die Response ein XML ist, bitte dieses verarbeiten!
                
                try
                    {
                    
                    var doIt = false;


                    if (window.ActiveXObject)
                        {
//IE
                        var doc = new ActiveXObject("Microsoft.XMLDOM");
                        doc.async = "false";
                        doc.loadXML(xmlDoc_Data.responseText);
                        
                        if (doc)
                            {
                            doIt = true;
                            }
//ENDE: IE
                        }
                        
                        
                    else if (window.XMLHttpRequest)
                        {
//not IE
                        var parser = new DOMParser();
                        try
                            {
                            doc = parser.parseFromString(xmlDoc_Data.responseText, "text/xml");
                            }
                        catch (e)
                            {
                            alert('getObject_Data_processing: Parser-Error => ' + e.message);
                            }                        

                        if (doc)
                            {
                            doIt = true;
                            }
//ENDE: not IE              
                        }
                        
                        
                        
//START: XML-Antwort verarbeiten
                        if (doIt == true)
                            {

                            var docElement = doc.documentElement;

                            var Filter = '';
                            var myFehler = '';
                            try
                                {
                                Filter = '/mCMS/Fehler';
                                myFehler = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;
                                }
                            catch (e)
                                {
                                //alert(e.message);
                                }


                            if (myFehler.length == 0)
                                {//kein Fehler vom AJAX-Service erhalten
                                    
                                try
                                    {
                                    
                                    Filter = '/mCMS/returnDivPanel_Id';
                                    var myDivPanel_Id = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;

                                    Filter = '/mCMS/value';
                                    var myValue = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;

                                    Filter = '/mCMS/returnShowAsMouseFlagContainer';
                                    var myShowAsMouseFlagContainer = doc.selectNodes(Filter)[0].childNodes[0].nodeValue;

                                    //irgendetwas mit den Daten aus myReturn_Arg_1 anstellen
                                    var myPanel = document.getElementById(myDivPanel_Id);
                                    if (myPanel)
                                        {
                                        if (myValue)
                                            {
                                            if (myShowAsMouseFlagContainer == 'true')
                                                {
                                                initContainerOnMouseCursor(document.all.divContainerOnMouseCursor);
                                                showContainerOnMouseCursor(myValue);
                                                myPanel.innerHTML = myValue;
                                                myPanel.visibility = '';
                                                setTimeout("hideContainerOnMouseCursor();", 15000); //nach 15 Sekunden auf jeden Fall wieder ausblenden!
                                                }
                                            else
                                                {
                                                myPanel.innerHTML = myValue;
                                                myPanel.visibility = '';
                                                }
                                            }
                                        else
                                            {
                                            if (myShowAsMouseFlagContainer == 'true')
                                                {
                                                initContainerOnMouseCursor(document.all.divContainerOnMouseCursor);
                                                showContainerOnMouseCursor('');
                                                hideContainerOnMouseCursor();
                                                }
                                            myDivPanel_Id.innerHTML = '';
                                            myDivPanel_Id.visibility = 'hidden';
                                            }
                                        }
                                    
                                    }
                                catch (e)
                                    {
                                    //
                                    }
                                   
                                                                                
                                }
                            else
                                {//ajaxXML.aspx hat einen Fehler ausgegeben!
                                window.status = 'getObject_Data_processing: ' + myFehler;
                                }
                            }
//ENDE: XML-Antwort verarbeiten

                        xmlDoc_Data = null;
                    
                     }
                 catch (e)
                    {//Antwort ist vermutlich kein XML!
                    window.status = 'getObject_Data_processing: ' + e.message;
                    }
                 finally
                    {
                    setTimeout('window.status = \'\'', 3000);
                    }
                    
                    
                }
                
              else if (xmlDoc_PATTERN.status == 404)
                {
                window.status = 'getObject_Data_processing: URL not found!';
                }
                
              else
                {
                window.status = 'getObject_Data_processing: missing Server-Response!';
                }

              }
           }
        else
           {
           //window.status = 'getObject_Data_processing: missing xml Object!');
           }

    }
////////////////////////////////////////////// ENDE: getObject_Data /////////////////////////////



    

/***************************************************************************************************

    HILFS FUNKTIONEN: XML-Unterstützung für nicht IE-Browser

***************************************************************************************************/

/*
Prefix-correcting evaluate statement from http://www.faqts.com/knowledge_base/view.phtml/aid/34022/fid/119
*/
if( document.implementation.hasFeature("XPath", "3.0") ){
 XMLDocument.prototype.selectNodes = function(cXPathString, xNode){
  if( !xNode ) {
   xNode = this;
  }
    
  var defaultNS = this.defaultNS;

  var aItems = this.evaluate(cXPathString, xNode,{
   normalResolver:
    this.createNSResolver(this.documentElement),
        lookupNamespaceURI : function (prefix) {
           switch (prefix) {
             case "dflt":
                return defaultNS;
             default:
                return this.normalResolver.lookupNamespaceURI(prefix);
           }
        }
      },XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);

  var aResult = [];
  for( var i = 0; i < aItems.snapshotLength; i++){
           aResult[i] =  aItems.snapshotItem(i);
  }
  return aResult;
 }

 Element.prototype.selectNodes = function(cXPathString){
  if(this.ownerDocument.selectNodes){
   return this.ownerDocument.selectNodes(cXPathString, this);
  }else{
   throw "For XML Elements Only";
  }
 }

 /* set the SelectionNamespaces property the same for NN or IE: */
 XMLDocument.prototype.setProperty = function(p,v){
  if(p=="SelectionNamespaces" && v.indexOf("xmlns:dflt")==0){
   this.defaultNS = v.replace(/^.*=\'(.+)\'/,"$1");
  }
 }

 XMLDocument.prototype.defaultNS;

}
    
    
    
    
    
    
    
    
    
    
    
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// OLD FUNCTIONS /////////////////////////////////////////////////////////////////////   
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



//***********************************************************************************
// AJAX Funktionen
var mContainer_for_getContent_HTML;
var mData_from_getContent_HTML;

function ajaxGetContent_HTML(aContent_ID, Container)
    {
      mContainer_for_getContent_HTML = Container;
      redMSoftware.WebAppl.mCMS.Content_Handler.ajaxGetContent_HTML(aContent_ID, ajaxGetContent_HTML_callback);  // asynchronous call
    }

function ajaxGetContent_HTML_callback(res)
    {
      myValue = res.value;
      if (myValue != null)
        {
        mData_from_getContent_HTML = myValue;
        if (mContainer_for_getContent_HTML)
            {
            if (myValue.length > 0)
                {
                mContainer_for_getContent_HTML.innerHTML = myValue;
                }
            else
                {
                mContainer_for_getContent_HTML.innerHTML = '';
                mContainer_for_getContent_HTML.visibility = 'hidden';
                }
            }
        }
      else
        {
        if (mContainer_for_getContent_HTML)
            {
            mData_from_getContent_HTML = '<!-- AJAX ajaxGetContent_HTML FAIL: ' + 'keine Daten erhalten -->';
            mContainer_for_getContent_HTML.innerHTML = '<!-- AJAX ajaxGetContent_HTML FAIL: ' + 'keine Daten erhalten -->';
            mContainer_for_getContent_HTML.innerHTML = '';
            mContainer_for_getContent_HTML.visibility = 'hidden';
            }
        }
    }



var mContainer_for_ajaxGetData;
var mData_from_ajaxGetData;

function ajaxGetData(objectID, DataType_Name, Sprache_ID, convertTXTtoHTML, Container)
    {
      mContainer_for_ajaxGetData = Container;
      //redMSoftware.WebAppl.mCMS.Content_Handler.ajaxGetData(objectID, DataType_Name, Sprache_ID, convertTXTtoHTML, ajaxGetData_callback);  // asynchronous call
    }

function ajaxGetData_callback(res)
    {
      myValue = res.value;
//alert('Value = ' + myValue);
      if (myValue != null)
        {
        mData_from_ajaxGetData = myValue;
        if (mContainer_for_ajaxGetData)
            {
            if (myValue.length > 0)
                {
                mContainer_for_ajaxGetData.innerHTML = myValue;
                }
            else
                {
                mContainer_for_ajaxGetData.innerHTML = '';
                mContainer_for_ajaxGetData.visibility = 'hidden';
                }
            }
        }
      else
        {
        if (mContainer_for_ajaxGetData)
            {
            mData_from_ajaxGetData = '<!-- AJAX ajaxGetData FAIL: ' + 'keine Daten erhalten -->';
            mContainer_for_ajaxGetData.innerHTML = '<!-- AJAX ajaxGetData FAIL: ' + 'keine Daten erhalten -->';
            mContainer_for_ajaxGetData.innerHTML = '';
            mContainer_for_ajaxGetData.visibility = 'hidden';
            }
        }
    }




//***********************************************************************************
// Diverse Funktionen
function nextImageInLoop(aIntervall, aImgName, aFinishStatusText)
    {
            
    var myImg = document.getElementById(aImgName)
    //var myDebug = document.getElementById('divDebug');
            
    if (myImg)
        {
        var s = 0;
        var mySRC = myImg.src
        var mySplit = mySRC.split("&");
        mySRC = '';
        /*
        if (myDebug)
            {
            myDebug.innerHTML = myDebug.innerHTML + '<br />' + 'Split-length: ' + mySplit.length;
            }
        */
        do 
            {
            /*
            if (myDebug)
                {
                myDebug.innerHTML = myDebug.innerHTML + '<br />' + s + '.) ' + mySplit[s];
                }
            */
            if (s > 0)
                {
                mySRC = mySRC + '&' + mySplit[s];
                }
            else
                {
                mySRC = mySplit[s];
                }
            s = s + 1;
            } while (s <= mySplit.length -2);
       
        mySRC = mySRC + '&' + (new Date);
        myImg.src = mySRC;
        setTimeout('nextImageInLoop(' + aIntervall + ', \'' + aImgName + '\', \'' + aFinishStatusText + '\');', aIntervall);            
        }
    if (aFinishStatusText)
        {
        setTimeout('window.status=\'' + aFinishStatusText + '\'', 1000);
        }
    }
        
function getIndexOf(aObject)
    {/* Index eines bestimmten Objektes finden */
    
    //alert('Name: ' + aObject.name);
    //alert('ID: ' + aObject.id);
    
    if (aObject)
        {
        if (document.getElementsByName(aObject.name).length > 0)
            {//mit dem Namen suchen
//alert('per Name');
            for (i = 0; document.getElementsByName(aObject.name).length -1; i++)
                if (document.getElementsByName(aObject.name)[i] == aObject)
                    {
                    break;
                    }
                return i
            }
            
        if (document.getElementsById(aObject.id).length > 0)
            {//mit der ID probieren
//alert('per ID');
            for (i = 0; document.getElementsById(aObject.id).length -1; i++)
                if (document.getElementsByName(aObject.id)[i] == aObject)
                    {
                    break;
                    }
                return i
            }
        }
        
    }


function fCheckNumField(objField, pvMinValue, pvMaxValue, pvLastValue, pvNurGanzeZahlen)
	{//Überprüft Nummerische Felder auf den Inhalt und setzt das Feld zurück, wenn es ungültig ist

		objField.value = fReplace(objField.value, ' ', '');
		vValue = objField.value;
		
		if (vValue == '')
			{//ist leer => geht nicht => rücksetzen
				objField.value = pvLastValue;
			}
		else if (isNaN(vValue))
			{//ist nicht Nummerisch => geht nicht => rücksetzen
				objField.value = pvLastValue;
			}
		else
			{//Ist numerisch => prüfen, ob Wert grösser als Minimum ist
				
				if (vValue < pvMinValue)
					{//Wert ist kleiner als Minimum => zurücksetzen
						objField.value = pvLastValue;
					}
				else
					{//OK, Wert ist grösser als Minimum => prüfen ob er auch kleiner als Maximum ist
				
						if (vValue > pvMaxValue)
							{//Wert ist grösser als Maximum => zurücksetzen
								objField.value = pvLastValue;
							}
						else
							{//OK, Wert ist kleiner als Maximum => prüfen ob nur ganz Zahlen zugelassen sind
							
								if (pvNurGanzeZahlen == false)
									{//Es sind tatsächlich nur ganze Zahlen zugelassen => auf Dezimalstellen checken
										
										vValue = fReplace(vValue, ',', '.');
										vFound = vValue.indexOf('.');
										if (vFound == -1)
											{//keine Dezimalzahl => so lassen

											}
										else
											{//Dezimalzahl => zurücksetzen
												objField.value = pvLastValue;
											}

										
									}
								else
									{//Auch Dezimnalzahlen sind zugelassen => es ist alles OK
										
									}
							}				
					}
			}				
	}

function fReplace(vString, vSearch, vReplace)
	{
		vNewString = vString;
		x = vNewString.indexOf(vSearch);
		while (x > -1)
			{
			vNewString = vNewString.replace(vSearch, vReplace);
			x = vNewString.indexOf(vSearch);
			}
		return vNewString;
	}

function open_Window(width, height, url, name) 
	{//Fenster mit Artikelbild öffnen
		if (window.open)
			{
			
			vSizable = 'yes'
			vScroll = '1'
			
			//Breite Checken
				if (width == 0)
					{//keine Breite angeben
						vWidth = '';
					}
				else
					{//Breite Angeben
						vWidth = ',width=' + width;
						vSizable = 'no';
						vScroll = '0';
					}

			//Höhe Checken
				if (height == 0)
					{//keine Höhe angeben
						vHeight = ''
					}
				else
					{//Höhe Angeben
						vHeight = ',height=' + height
						vSizable = 'no';
						vScroll = '0';
					}

			//so, jetzt neues Fenster öffnen
			redMWin = window.open(url, name,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=' + vSizable +',resizable=' + vSizable + vWidth + vHeight + '');
			}
	}
	
	



//***********************************************************************************
function open_hilfe(width, height, url, name) 
	{//Fenster mit Artikelbild öffnen
		if (window.open)
			{
			
			vSizable = 'yes'
			vScroll = 'yes'
			
			//Breite Checken
				if (width == 0)
					{//keine Breite angeben
						vWidth = '';
					}
				else
					{//Breite Angeben
						vWidth = ',width=' + width;
						vSizable = 'yes';
					}

			//Höhe Checken
				if (height == 0)
					{//keine Höhe angeben
						vHeight = ''
					}
				else
					{//Höhe Angeben
						vHeight = ',height=' + height
						vSizable = 'yes';
					}

			//so, jetzt neues Fenster öffnen
			redMWin = window.open(url, name,'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=' + vSizable +',resizable=' + vSizable + vWidth + vHeight + '');
			}
	}
