
/*****************************************************
 * IT & Design Solutions GmbH   AJAX Library         *
 * written by Moritz Kobel <moritz.kobel@itds.ch>    *
 *****************************************************/


function ajaxSelectBoxInit(id,name,provider,attrib,start,gosub,element,defValue,defText,onChange)
{
    var html = '<div class="ajaxSelectBox">';
    html += '<input type="hidden" name="'+name+'" value="'+defValue+'" id="ajaxSelectBox_Value_'+name+'">';
    html += '<span id="ajaxSelectBox_Text_'+name+'" class="ajaxSelectBox_Text">'+defText+'</span>';
    html += '<div id="ajaxSelectBox_List_'+name+'" class="ajaxSelectBox_List"></div>';
    html += '<img src="icons/arrow_down.png"  id="ajaxSelectBox_ddIM_'+name+'" ';
    html += " onClick=\"ajaxSelectBoxOpen('"+name+"','"+provider+"','"+attrib+"','"+start+"','"+gosub+"','"+element+"','"+onChange+"')\"";
    html += " alt=\"Click!\" class=\"ajaxSelectBox_ddIM\" border=\"0\">";
    html += '</div>';
    document.getElementById(id).innerHTML = html;
}

function ajaxSelectBoxOpen(name,provider,attrib,start,gosub,element,onChange)
{
    var namesp = document.getElementById("ajaxSelectBox_Text_"+name);
    var seldiv = document.getElementById("ajaxSelectBox_List_"+name);
    var hff = document.getElementById("ajaxSelectBox_Value_"+name);   
    var im = document.getElementById("ajaxSelectBox_ddIM_"+name);  
    var current_value = hff.value;
    
    if ( seldiv.style.display != 'block' )
    {
        im.src = 'icons/arrow_up.png';
        seldiv.innerHTML = '<div class="ajaxSelectBox_Row" id="ajaxSelectBox_Row_'+name+'_0"><img src="icons/loading.gif" alt="loading..."></div>';
        seldiv.style.display = 'block';       
        ajax_request(provider+'?'+attrib+'='+start,'ajaxSelectBoxFill',new Array(name,provider,attrib,gosub,element,onChange,'',0));   
    } else {
        im.src = 'icons/arrow_down.png';
        seldiv.style.display = 'none';
        
    }
}


function ajaxSelectBoxChange(name,onChange,id,text)
{
     var seldiv = document.getElementById("ajaxSelectBox_List_"+name);
     seldiv.style.display = 'none';
     var hff = document.getElementById("ajaxSelectBox_Value_"+name);   
     hff.value = id;
     var textsp = document.getElementById("ajaxSelectBox_Text_"+name);   
     textsp.innerHTML = text; 
     var im = document.getElementById("ajaxSelectBox_ddIM_"+name);  
     im.src = 'icons/arrow_down.png';
     eval(onChange+"(name,id,text);");
     
}

function ajaxSelectBoxFill(req,name,provider,attrib,gosub,element,onChange,prefix,id)
{
    var current_value = document.getElementById("ajaxSelectBox_Value_"+name).value; 

    var seltd = document.getElementById("ajaxSelectBox_Row_"+name+"_"+id);
    
    var data = req.responseXML.getElementsByTagName("xml")[0];
    
    var option;
    var rid;
    var rname;

    var html = '';
    
    for ( var tmp = 0; tmp < data.getElementsByTagName(element).length; tmp++ )
    {
    	option = data.getElementsByTagName(element)[tmp];
	    rid = option.getElementsByTagName("id")[0].childNodes[0].nodeValue;
	    rname = option.getElementsByTagName("name")[0].childNodes[0].nodeValue;
	    html += '<div ';
	    
	    if ( current_value == rid )
	    {
	        html += ' class="ajaxSelectBox_selectedRow"';
	    } else {
	        html += ' class="ajaxSelectBox_Row"';
	    }
	    html += '><span class="jsLink" onClick="ajaxSelectBoxChange(\''+name+'\',\''+onChange+'\','+rid+',\''+prefix+rname+'\')">'+rname+'</span></div>';
	    if ( gosub == 'true' )
	    {
	        html += '<div class="ajaxSelectBox_Row" id="ajaxSelectBox_Row_'+name+'_'+rid+'"><img src="icons/loading.gif" alt="loading..."></div>';
    	    ajax_request(provider+'?'+attrib+'='+rid,'ajaxSelectBoxFill',new Array(name,provider,attrib,gosub,element,onChange,prefix+rname+'/',rid));   
    	}
    }  
    
    html += '';
    seltd.innerHTML = html;
}


function ajaxDropDownTextareaInit(id,name,rows,cols,defText)
{
    var shortDefText;
    if ( defText != null && defText.length > 14 )
    {    
        shortDefText = defText.substr(0,13) + '...';
    } else {
        shortDefText = defText;
    }

    var html = '<div class="ajaxDropDownTextarea">';
    html += '<input type="hidden" name="'+name+'" value="'+defText+'" id="ajaxDropDownTextarea_Value_'+name+'">';
    html += '<span id="ajaxDropDownTextarea_Text_'+name+'" class="ajaxDropDownTextarea_Text">'+shortDefText+'</span>';
    html += '<div id="ajaxDropDownTextarea_AreaDiv_'+name+'" class="ajaxDropDownTextarea_AreaDiv"></div>';
    html += '<img src="icons/arrow_down.png"  id="ajaxDropDownTextarea_ddIM_'+name+'" ';
    html += " onClick=\"ajaxDropDownTextareaOpen('"+name+"','"+rows+"','"+cols+"')\"";
    html += " alt=\"Click!\" class=\"ajaxDropDownTextarea_ddIM\" border=\"0\">";
    html += '</div>';
    document.getElementById(id).innerHTML = html;   
}
function ajaxDropDownTextareaOpen(name,rows,cols)
{
    var namesp = document.getElementById("ajaxDropDownTextarea_Text_"+name);
    var seldiv = document.getElementById("ajaxDropDownTextarea_AreaDiv_"+name);
    var hff = document.getElementById("ajaxDropDownTextarea_Value_"+name);   
    var im = document.getElementById("ajaxDropDownTextarea_ddIM_"+name);  
    var content = hff.value;
    
    if ( seldiv.style.display != 'block' )
    {
        im.src = 'icons/arrow_up.png';
        var html = '<textarea id="ajaxDropDownTextarea_Area_'+name+'" class="ajaxDropDownTextarea_Area" name="'+name+'" rows="'+rows+'" cols="'+cols+'" wrap="word">'+content+'</textarea>';
        html += '<center><img src="icons/arrow_up.png"  id="ajaxDropDownTextarea_duIM_'+name+'" ';
        html += " onClick=\"ajaxDropDownTextareaOpen('"+name+"','"+rows+"','"+cols+"')\"";
        html += " alt=\"Click!\" class=\"ajaxDropDownTextarea_ddIM\" border=\"0\"></center>";
        seldiv.innerHTML = html;
        seldiv.style.display = 'block';       
        
    } else {
        im.src = 'icons/arrow_down.png';
        seldiv.style.display = 'none';
        content = document.getElementById("ajaxDropDownTextarea_Area_"+name).value;
        var shortText;
        if ( content != null && content.length > 14 )
        {    
            shortText = content.substr(0,13) + '...';
        } else {
            shortText = content;
        }
        namesp.innerHTML = shortText;
        hff.value = content;
    }    
}


/*  Optionen bei einer Selectbox hinzufügen */
function crm_ajax_selectPopulate(myreq,optname,name)
{
    var opt = document.getElementById(name).options;   
    
    var data = myreq.responseXML.getElementsByTagName("xml")[0];
       
    var option;
    var id;
    var name;
    var newopt;
    var subopts;
    var subopt;
    var subid;
    var subname;
    
    while ( opt.length > 0 )
    {
        document.getElementById(name).remove(0);
    }
    
    for ( var tmp = 0; tmp < data.getElementsByTagName(optname).length; tmp++ )
    {
    	option = data.getElementsByTagName(optname)[tmp];
	    id = option.getElementsByTagName("id")[0].childNodes[0].nodeValue;
	    name = option.getElementsByTagName("name")[0].childNodes[0].nodeValue;
	    subopts = option.getElementsByTagName("sub"+optname)[0];
	    
	    newopt = new Option(name, id, false, false);
	    opt[opt.length] = newopt;  
	    
	    if ( subopts != null )
	    {
    	    for ( var t2 = 0 ; t2 < subopts.getElementsByTagName(optname).length; t2++ )
    	    {
    	        subopt = subopts.getElementsByTagName(optname)[t2];
    	        
                subid = subopt.getElementsByTagName("id")[0].childNodes[0].nodeValue;
                subname = subopt.getElementsByTagName("name")[0].childNodes[0].nodeValue;
                newopt = new Option('     '+subname, subid, false, false);
                opt[opt.length] = newopt;  
        	  
    	    }
	    }
	    
	}    
}


/* AJAX-Request...  ( Quelle: ITDS SimpleCRM )
  url:          XML-Request an den Server
  callback:     führt zum Aufruf callback(myreq,opt1,opt2,..);
  callbackopts: new Array('opt1','opt2',...);
*/
function ajax_request(url,callback,callbackopts)
{
   var myreq;
   // XML-Request vorbereiten
   if (window.XMLHttpRequest) {
       myreq = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
       myreq = new ActiveXObject("Microsoft.XMLHTTP");
   } else {
       alert("Your Browser does probably not support XMLHTTP-Requests\nThis application requires XMLHTTP-Requests.");
       return null;
   }  
   
   // Abfrage senden
   myreq.open("GET", url, true);
   
   // Funktion erstellen, welche die Resultate verarbeitet
   myreq.onreadystatechange = function() {
        // state kontrollieren
        if (myreq.readyState == 4) {
            // wenn alles klappt gibt's ein HTTP-200
            if (myreq.status == 200) {
            
                // argumente zusammenbasteln
                var fstring = "";
                for ( var i = 0; i<callbackopts.length; i++ )
                {
                    fstring += ",\""+callbackopts[i]+"\"";
                }

                // funktion zusammensetzen & ausführen
                eval(callback+"(myreq"+fstring+");");
              
                    
            } else {
    		        alert("Ooups... AJAX Error:\nCould not read XML-Data: "+myreq.status);
	        }
        }
   };
   myreq.send(null);
}

function ajax_copyFromXML2innerHTML(request,element,name,id)
{
    ajax_request(request,'ajax_copyFromXML2innerHTMLdo',new Array(element,name,id));
}
function ajax_copyFromXML2innerHTMLdo(req,element,name,id)
{
    var xml = req.responseXML.getElementsByTagName("xml")[0];
    var elementdata = xml.getElementsByTagName(element)[0];   
    var data = elementdata.getElementsByTagName(name)[0].childNodes[0].nodeValue;   
    document.getElementById(id).innerHTML = data;
}
function ajax_copyFromXML2value(request,element,name,id)
{
    ajax_request(request,'ajax_copyFromXML2valueDo',new Array(element,name,id));
}
function ajax_copyFromXML2valueDo(req,element,name,id)
{
    var xml = req.responseXML.getElementsByTagName("xml")[0];
    var elementdata = xml.getElementsByTagName(element)[0];   
    var data = elementdata.getElementsByTagName(name)[0].childNodes[0].nodeValue;   
    document.getElementById(id).value = data;
}


function createCookie(name,value,days) {
   
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function ereaseCookie(name) {
	createCookie(name,"",-1);
}

function replaceAll(input,from,to)
{
    var tmp = input;
    input = '';
    while ( tmp != input ) 
    {    
        input = tmp;
        tmp = input.replace(from,to);
    }
    return tmp;
}


