

/*****************************************************
 * 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>';  // span with default Text
    html += '<div id="ajaxSelectBox_List_'+name+'" class="ajaxSelectBox_List"></div>';  // empty selectbox
    html += '<img src="/icons/arrow_down.png"  id="ajaxSelectBox_ddIM_'+name+'" ';  // openicon
    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';     
        
        var as = '?';
        if ( provider.indexOf('?') != -1 )
            as = '&';  
            
        ajax_request(provider+as+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';
     
     if ( onChange != null && onChange != 'null')
         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>';
	        
	        var as = '?';
            if ( provider.indexOf('?') != -1 )
                as = '&';  
	        
    	    ajax_request(provider+as+attrib+'='+rid,'ajaxSelectBoxFill',new Array(name,provider,attrib,gosub,element,onChange,prefix+rname+'/',rid));   
    	}
    }  
    
    html += '';
    seltd.innerHTML = html;
}

function ajaxTypeSelectBoxInit(id,name,provider,attrib,element,defValue,onChange)
{
    var ontc = "ajaxTypeSelectBoxType('"+name+"','"+provider+"','"+attrib+"','"+element+"','"+onChange+"')";
    var html = '<div class="ajaxSelectBox">';
    html += '<input type="hidden" name="'+name+'" value="'+defValue+'" id="ajaxSelectBox_Value_'+name+'">';
    html += '<input type="text" id="ajaxSelectBox_Text_'+name+'" onkeypress="'+ontc+'" class="ajaxSelectBox_Text" autocomplete="off" />';
    html += '<img src="/icons/error.png"  id="ajaxSelectBox_ddIM_'+name+'" ';
    html += " alt=\"Icon\" class=\"ajaxSelectBox_ddIM\" border=\"0\">";
    html += '<div id="ajaxSelectBox_List_'+name+'" class="ajaxSelectBox_List"></div>';
    html += '</div>';
    document.getElementById(id).innerHTML = html;
}
function ajaxTypeSelectBoxType(name,provider,attrib,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 = namesp.value;
    
    if ( current_value.length > 3 )
    {
        im.src = '/icons/loading.gif';
        seldiv.innerHTML = '<div class="ajaxSelectBox_Row" id="ajaxSelectBox_Row_'+name+'_0"><img src="/icons/loading.gif" alt="loading..."></div>';
        seldiv.style.display = 'block';     
        
        var as = '?';
        if ( provider.indexOf('?') != -1 )
            as = '&';  
          
        ajax_request(provider+as+attrib+'='+current_value,'ajaxTypeSelectBoxFill',new Array(name,provider,attrib,element,onChange,'',0));   
    } else {
        im.src = '/icons/error.png';
        seldiv.style.display = 'none';
    }
}

function ajaxTypeSelectBoxChange(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.value = text; 
     var im = document.getElementById("ajaxSelectBox_ddIM_"+name);  
     im.src = '/icons/accept.png';
     
     if ( onChange != null && onChange != 'null')
         eval(onChange+"(name,id,text);");
     
}

function ajaxTypeSelectBoxFill(req,name,provider,attrib,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="ajaxTypeSelectBoxChange(\''+name+'\',\''+onChange+'\','+rid+',\''+prefix+rname+'\')">'+rname+'</span></div>';
    }  
    
    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 ijwaf_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 {
            	if ( myreq.status != 0 )
    		        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)
{
    try {
        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;
    } catch ( e )
    {
    }
}
function ajax_copyFromXML2value(request,element,name,id)
{
    ajax_request(request,'ajax_copyFromXML2valueDo',new Array(element,name,id));
}
function ajax_copyFromXML2valueDo(req,element,name,id)
{
    try {
        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;
    } catch ( e )
    {
    }
}


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;
}


function lightboxVFSloader(elementID,baseurl)
	{
		if ( (document.location+"").search("roller-ui/authoring") != -1 )
			return;

		var d = document.getElementById(elementID);
		d.innerHTML = '<img src="/icons/loading.gif" /> Loading gallery';
		ajax_request('/jwa/vfs-xml'+baseurl,'lightboxVFSloaderDo',new Array(elementID,baseurl));

	}




	function lightBoxIEHack()
	{
		var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;

		

		if ( IE6 )
		{
			var d =  document.getElementById("lightbox-overlay");
			
			if ( d != null )
			{
				d.style.backgroundColor = 'white';
				d.style.width = '1px';
				d.style.height = '1px';
				d.style.opacity = 0.1;
				d.style.filter = 'alpha(opacity=0.1)';

				//alert("V1");
				setTimeout(function() { lightBoxIEHack(); } ,1000);
				
			}
		} 

	}


	function lightboxVFSloaderDo(myreq,elementID,baseurl)
	{

		var thumbsize = 450;
		var previewsize = 'nanothumb';
		var show_name = true;
		var show_description = true;
		try {
			if ( lightbox_max_img_size != null ) thumbsize = lightbox_max_img_size;
		} catch ( e ) {}
		try {
			if ( lightbox_preview_img_size != null ) previewsize = lightbox_preview_img_size;
		} catch ( e ) {}
		try {
			if ( lightbox_hide_name != null ) show_name = !lightbox_hide_name;
		} catch ( e ) {}
		try {
			if ( lightbox_hide_description != null ) show_description = !lightbox_hide_description;
		} catch ( e ) {}
		
		var d = document.getElementById(elementID);
		var data = myreq.responseXML.getElementsByTagName("xml")[0];
		var files = data.getElementsByTagName("file");

		var nhtml = '<div id="gallery_'+elementID+'" class="lightboxGallery">';

		nhtml += '<ul>';

		var orig ="";
		var preview="";
		var thumb="";
		var fname = "";

		var urlpostfix = "";
		
		if ( baseurl.split('?token=').length = 2 )
		{
			urlpostfix = 'token='+baseurl.split('?token=')[1];
		}
		
		var fistimageHTML = "";

		for ( var fi = 0 ; fi < files.length ; fi++ )
		{
				var file = files[fi];
	   			var id = file.getElementsByTagName("id")[0].childNodes[0].nodeValue;
	   			fname = file.getElementsByTagName("name")[0].childNodes[0].nodeValue;
				var description = "";
				try {
					description = file.getElementsByTagName("description")[0].childNodes[0].nodeValue;
				} catch (e){}


				orig = '/jwa/VFS-DFA-'+id+'-'+fname;
				preview = orig+'?resizeTo='+previewsize+'&'+urlpostfix;
				thumb = orig+'?resizeTo='+thumbsize+'&'+urlpostfix;

				nhtml += '<li><a  rel="lightbox-myGroup" href="'+thumb+'" title="';

				if ( show_name ) nhtml += fname;
				if ( show_name && show_description ) nhtml += ': ';
				if ( show_description ) nhtml += description;

				nhtml += '">';
				nhtml += '<img src="'+preview+'" alt="'+fname+'"/>';
				nhtml += '</a></li>';

		}

		nhtml += '</ul><div>';

		d.innerHTML = nhtml ;

		
			
		jQuery(document).ready(function(){ jQuery('#gallery_'+elementID+' a').lightbox();});
		
		jQuery(document).ready( function() { lightBoxIEHack();} );

	}
	
	





