// JavaScript Document


removeAllChildElements = function(id) {
	
        var children = $(id);
        
        for(i = 0; i < children.length; i++) {
            $(id).removeChild(children[i]);
        }

	/*if ( cell.hasChildNodes() )
	{
		while ( cell.childNodes.length >= 1 )
		{
			cell.removeChild( cell.firstChild );       
		} 
	}*/
}

function set_attribute(id, attr, value) {

	if(typeof value == 'undefined') {
		value = '';	
	}

	var obj = document.getElementById(id);
	if(null != obj) {
		obj.setAttribute(attr, value);
	}
}

function reset_form_attributes(id) {
	
	set_attribute(id, 'enctype');
	set_attribute(id, 'target');
	set_attribute(id, 'action', '?mode=step2');
}

function reset_form_password(id) {
	
	set_attribute(id, 'enctype');
	set_attribute(id, 'target');
	set_attribute(id, 'action', '?mode=changepw');
}


function switch_visibility(id) { 

	var obj = document.getElementById(id);
	
	if(null != obj) {
		if(obj.style.visibility == 'hidden') {
			obj.style.visibility = 'visible';
		} else {
			obj.style.visibility = 'hidden';
		}
	}

}

function hide_object(id) {
	
	var obj = document.getElementById(id);
	
	if(null != obj) {
		obj.style.visibility = 'hidden';
	}
}

function alter_height(obj, height) {

	if(null != obj) {
		obj.style.height = height;
	}
}

function set_content(id, content) {
	
	var obj = document.getElementById(id);
	if(null != obj) {
		obj.innerHTML = content;	
	}
}

//ajax stuff (at the moment mainly for registering)
function checkPic(pic) {
	
	var value = document.getElementById(pic);
	
	var payload = {url:value};
	HTML_AJAX.post(globalIncPath+'/include/ajax_request.php', payload, handleResponse);
}

//callbackfunktion for ajax-post
function handleResponse(response) {
	
	if(null != document.getElementById('form_manipulation_message')) {
		document.getElementById('form_manipulation_message').innerHTML = response;
	} else {
		if(null!= $('Growler')) {
			$('Growler').remove();
		}
		var g = new k.Growler();
		g.growl(response, {header: "Info", className: "plain"});
	}
}

function switch_between_uploads(visible_one) {
		
	var obj1 = document.getElementById('own_pic');
	var obj3 = document.getElementById('no_pic');
	
	if(obj1 === visible_one) {
		obj1.style.visibility = 'visible';
		obj1.style.position = 'relative';
		//obj2.style.visibility = 'hidden';
		//obj2.style.position = 'absolute';
		obj3.style.visibility = 'hidden';
		obj3.style.position = 'absolute';
	}else if(obj3 === visible_one) {
		obj1.style.visibility = 'hidden';
		obj1.style.position = 'absolute';
		//obj2.style.visibility = 'hidden';
		//obj2.style.position = 'absolute';
		obj3.style.visibility = 'visible';
		obj3.style.position = 'relative';
	}
}

function show_hide_surveymail() {
	
	checkbox = document.getElementsByName('sendsurveymail');

	if(checkbox[0].checked==true) {
		document.getElementById('email_content').style.visibility = 'visible';
		document.getElementById('email_content').style.position = 'relative';
		document.getElementsByName('includepdf')[0].disabled = false;
	} else {
		document.getElementById('email_content').style.visibility = 'hidden';
		document.getElementById('email_content').style.position = 'absolute';
		document.getElementsByName('includepdf')[0].disabled = true;
	}
			
}

function switch_payment_method(id) {

	elv = document.getElementById('elv_paymentdetails');
	cc = document.getElementById('cc_paymentdetails');

	if(id == 'cc') {
		elv.style.visibility = 'hidden';
		elv.style.position = 'absolute';
		cc.style.visibility = 'visible';
		cc.style.position = 'relative';
	} else {
		elv.style.visibility = 'visible';	
		elv.style.position = 'relative';
		cc.style.visibility = 'hidden';
		cc.style.position = 'absolute';
	}
}

function remove(id) {
	
	//form_div = document.getElementById('form_create');
	//form_div.removeChild(id);		
}

function createoptions() {
	
	count = document.getElementById('optionscount').value;
	
	if(count < 1 || count > 20) {
		alert('Bitte geben Sie eine Zahl zwischen eins und zwanzig ein!');
		return;
	}
	
	form_div = document.getElementById('form_create');	
	
	form_div.innerHTML = "";

	for(i=0;i<count;i++) {
		
		form_div.innerHTML += 'Antwort: <input type="text" id="answer"'+i+' name="answer"'+i+' /><a href="javascript:remove(\'answer'+i+'\')">X</a><br />';
	}
	
}

function createradios() {
	
	count = document.getElementById('radioscount').value;
}

function set_question_type() {

	var type_select = document.getElementById('type_select');
	var type = type_select.value;
		
	form_div = document.getElementById('form_create');
	
	switch(type) {
			
		case 'antwort_zeile':form_div.innerHTML = '';
								break;
		case 'entscheidung':form_div.innerHTML = 'Anzahl: <input type="text" id="optionscount" size="1" onchange="createoptions()" />';
								break;
		case 'auswahl':form_div.innerHTML = 'Anzahl: <input type="text" id="optionscount" size="1" onchange="createoptions()" />';
								break;
		case 'antwort_feld':form_div.innerHTML = '';
								break;
		default:
	}
}

function add_question(userid, formid) {

	var question = document.getElementById('question').value;
	var question_type = document.getElementById('type_select').value;

	//get answers here
	var answers = getelementsByPrefix('answer', document.documentElement);
	
	answer_string = '';

	if(answers.length){
		for(var i=0; i<answers.length; i++){
			//alert(in_elem_array[i].id);
			if(i<(answers.length-1)) {
				answer_string += answers[i].value+'|';
			} else {					//dont append pipe to last one
				answer_string += answers[i].value;	
			}
		}
	} 

	var payload = {frage:question, typ:question_type, userid:userid, fragebogenid:formid, answers:answer_string};
	HTML_AJAX.post(globalIncPath+'/include/ajax_request_forms.php', payload, handleResponse('Frage hinzugef�gt'));
	ajax_form_preview(formid);
}

function getelementsByPrefix(inPrefix,inRoot){
	var elem_array = new Array;
	if(typeof inRoot.firstChild!= 'undefined'){
		var elem = inRoot.firstChild;
		while (elem!= null){
			if(typeof elem.firstChild!= 'undefined'){
				elem_array = elem_array.concat(getelementsByPrefix(inPrefix,elem));
			}
			if(typeof elem.id!= 'undefined'){
				var reg = new RegExp ( '^'+inPrefix+'.*' );
				if(elem.id.match(reg)){
					elem_array.push(elem);
				}
			}
			elem = elem.nextSibling;
		}
	}
	return elem_array;
} 

function open_mail_window(email,firstname,lastname) {
	
	//alert("Mail schreiben an "+email+firstname+lastname);
	document.getElementById('sendmail_div').innerHTML = '<input type="text" disabled="disabled" id="email_address" value="'+email+'" /><input type="text" value="Betreff" id="email_subject" /><a href="javascript:close_mail_window();">X</a><br /><textarea id="email_content" rows="15" cols="50">Sehr geehrte(r) Herr/Frau '+firstname+' '+lastname+'</textarea><br/> <br /><input type="button" value="Absenden" onclick="send_mail()"/>';
	
}

function send_mail() {
	var _email = document.getElementById('email_address').value;
	var _subject = document.getElementById('email_subject').value;
	var _content = document.getElementById('email_content').value;
	
	var payload = {email:_email, subject:_subject, content:_content}
	HTML_AJAX.post(globalIncPath+'/include/ajax_send_email.php', payload, handleResponse('Email an '+_email+' wurde versendet'));
	document.getElementById('sendmail_div').innerHTML = "";
}


function close_mail_window() {
	document.getElementById('sendmail_div').innerHTML = "";
}

var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}

function closecontactwindow(id) {

	//slideup(id);
	var div = document.getElementById(id);
	var div2 = document.getElementById('formfield');
	if(null == div || null == div2) {
		return false;
	}
	div2.removeChild(div);
}

function openSettingsDialog(detailfieldset) {

	switch(detailfieldset) {

		case 'sitedesign':if($('sitedesigndiv').style.display == 'none') {

			$('sitedesignlink').innerHTML = '-';
			$('imagesettingslink').innerHTML = '+';
			$(detailfieldset).morph('height:180px;');
			setTimeout(function () {$('sitedesigndiv').toggle('slide')}, 800);
			$('imagesettingsdiv').style.display = 'none';
		 } else {
			$('sitedesignlink').innerHTML = '+';
			$('sitedesigndiv').toggle('slide');
			$(detailfieldset).morph('height:10px;');
		 }
			$('imagesettings').morph('height:10px;');
		break;
		
		case 'imagesettings':if($('imagesettingsdiv').style.display == 'none') {

			$('imagesettingslink').innerHTML = '-';
			$('sitedesignlink').innerHTML = '+';
			$(detailfieldset).morph('height:275px;');
			setTimeout(function () {$('imagesettingsdiv').toggle('slide')}, 800);
			$('sitedesigndiv').style.display = 'none';
                } else {
			$('imagesettingslink').innerHTML = '+';
			$('imagesettingsdiv').toggle('slide');
			$(detailfieldset).morph('height:10px;');
		}
		$('sitedesign').morph('height:10px;');
		break;
		default:
	}
}

function toggleEditor(id) {

    if(null == id) {
        id = 'contentarea';
    }
    if (!tinyMCE.get(id))
        tinyMCE.execCommand('mceAddControl', false, id);
    else
        tinyMCE.execCommand('mceRemoveControl', false, id);
}

var DragDiv;
 var loadingVisible = false;
 window.onload = function()
 {
  DragDiv = document.getElementById("progressCircle");
 }

 document.onmousemove = function(e)
 {
  if (!e) e = window.event;

  if(loadingVisible) {
    DragDiv.style.left = e.clientX + "px";
    DragDiv.style.top = e.clientY + "px";
  }
 }

var loading_gif_placeholder = null;
var oldContent = '';
var ajaxCallRunningSince = 0;

showProgressBar = function(placeholder) {

	ajaxCallRunning = true;

    if(null != placeholder) {

       // $(placeIn).bottom($('progressCircle'));
       if($(placeholder).innerHTML == $('progressCircle').innerHTML) {

           return;
       }

       oldContent = $(placeholder).innerHTML;
        $(placeholder).update('');
        new Insertion.Bottom($(placeholder), $('progressCircle').innerHTML);
        loading_gif_placeholder = placeholder;
    } else {
        loadingVisible = true;
        $('progressCircle').setStyle({display: 'block'});
    }
}

hideProgressBar = function(placeholder) {

    if(null != placeholder) {

        //alert($(placeholder));
        $(placeholder).update('');
        $(placeholder).update(oldContent);
    } else if(null != $(loading_gif_placeholder)) {
        $(loading_gif_placeholder).remove($('progressCircle'));
    } else {
        $('progressCircle').setStyle({display: 'none'});
        loadingVisible = false;
    }
    loading_gif_placeholder = null;
}

function getRadioValue(idOrName) {
                var value = null;
                var element = document.getElementById(idOrName);
                var radioGroupName = null;

                // if null, then the id must be the radio group name
                if (element == null) {
                               radioGroupName = idOrName;
                } else {
                               radioGroupName = element.name;
                }
                if (radioGroupName == null) {
                               return null;
                }
                var radios = document.getElementsByTagName('input');
                for (var i=0; i<radios.length; i++) {
                               var input = radios[ i ];
                               if (input.type == 'radio' && input.name == radioGroupName && input.checked) {
                                               value = input.value;
                                               break;
                               }
                }
                return value;
}

var updater = Class.create({
    initialize: function(divToUpdate, interval, file) {
        this.divToUpdate = divToUpdate;
        this.interval = interval;
        this.file = file;
        new PeriodicalExecuter(this.getUpdate.bind(this), this.interval);
    },
    
    getUpdate: function() {
        var div = this.divToUpdate;
        var interval = this.interval;
        var file = this.file;            
        var oOptions = {
            method: "POST",
            asynchronous: true,
            parameters: "intervalPeriod="+interval,
            onComplete: function (oXHR, Json) {
				if(null != oXHR.responseText) {
					var  response = oXHR.responseText.evalJSON();
				} else {
					
					return;	
				}
				var htmlResponse = response['online_users'];
				$(div).update(htmlResponse);
				//alert(oXHR.responseText);
				var message = 'Gerade eingelogged:';
				var justloggedin = response['users_logged_in'];
				for (i = 0; i < justloggedin.length; i++) { 
					
					message += '\n\t'+justloggedin[i]['login'];
				}
				if(justloggedin.length > 0) {
					var g = new k.Growler();
					g.growl(message, {header: "Info", className: "plain"});
				}
				
				var onlineusers = response['userlist'];
				for(i = 0; i < onlineusers; i++) {
					htmlResponse += '<a href="writeMessage();">'+onlineusers[i]['username']+'</a>';		
				}
				
            }
        };
        var oRequest = new Ajax.Updater(div, file, oOptions);
    }
});
		
writeShortMessage = function(sender, recipient) {
	
	Modalbox.show('<textarea id="message_text"></textarea><br /><input type="button" onclick="saveShortMessage(\'sender\',\'recipient\')" value="Senden" />', {title: 'Kurznachricht senden', width: 300, height: 300});
}


saveShortMessage = function(sender, recipient) {
	
	var payload = {sender:sender, recipient:recipient, note:$('message_text').innerHTML, mode: 'save'};
	//HTML_AJAX.post(globalIncPath+'include/chart_kampagne.php', payload, chartAusgeben);
    new Ajax.Request(globalIncPath+'/include/ajax_messaging.php', {
                method: 'post',
                parameters: payload,
                onComplete:Modalbox.hide});
}	

document.observe('dom:loaded', function() {  
	var usersOnline = new updater('updater_test', 30, globalIncPath+'include/ajax_users_online.php');  
  // Make first call so we get an immediate update after the page is loaded   
 	usersOnline.getUpdate();  
});

(function(){

  var eventMatchers = {
    'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
    'MouseEvents': /^(?:click|mouse(?:down|up|over|move|out))$/
  }
  var defaultOptions = {
    pointerX: 0,
    pointerY: 0,
    button: 0,
    ctrlKey: false,
    altKey: false,
    shiftKey: false,
    metaKey: false,
    bubbles: true,
    cancelable: true
  }

  Event.simulate = function(element, eventName) {
    var options = Object.extend(defaultOptions, arguments[2] || { });
    var oEvent, eventType = null;

    element = $(element);

    for (var name in eventMatchers) {
      if (eventMatchers[name].test(eventName)) { eventType = name; break; }
    }

    if (!eventType)
      throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported');

    if (document.createEvent) {
      oEvent = document.createEvent(eventType);
      if (eventType == 'HTMLEvents') {
        oEvent.initEvent(eventName, options.bubbles, options.cancelable);
      }
      else {
        oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView,
          options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY,
          options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element);
      }
      element.dispatchEvent(oEvent);
    }
    else {
      options.clientX = options.pointerX;
      options.clientY = options.pointerY;
      oEvent = Object.extend(document.createEventObject(), options);
      element.fireEvent('on' + eventName, oEvent);
    }
    return element;
  }

  Element.addMethods({ simulate: Event.simulate });
})()

function replaceUmlauts(string, index){
	var anArray = new Array(2);
	anArray[0] = new Array("Ö", "ö", "Ä", "ä", "Ü", "ü", "ß");
	anArray[1] = new Array("&Ouml;", "&ouml;", "&Auml;", "&auml;", "&Uuml;", "&uuml;", "szlig;");
		    
	for (var i=0; i<anArray[index].length; i++){
		myRegExp = new RegExp(anArray[index][i],"g");
		string = string.replace(myRegExp, anArray[(index==0?1:0)][i]);
	}
	return string;
}
