var xmlHttp = false;
initAjax();

function initAjax () {
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest ();
		xmlHttp.overrideMimeType ("text/xml");
	} catch (e) {
		// Internet Explorer
		try {
			// IE 6.0+
			xmlHttp = new ActiveXObject ("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				// IE 5.5+
				xmlHttp = new ActiveXObject ("Microsoft.XMLHTTP");
			} catch (e) {
			}
		}
	}
}


function vote_poll(poll_id) {
	
	var question_id = poll_id;
	var answer_id ;
	
	options = document.getElementsByName('answer_id');
	index = 0;
	while (index < options['length'] && !options[index].checked)
		index++;
		
	if (index < options['length']) {
		answer_id = options[index].value;
		if(XMLHttpRequestObject) {
		  var obj = document.getElementById('latestpoll'); 
		  XMLHttpRequestObject.open("POST", rootdir + "includes/ajax_vote_poll.php"); 
		  XMLHttpRequestObject.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
		  
		  obj.innerHTML = "<img src='" + rootdir + "images/loading.gif'>";
		  
		  XMLHttpRequestObject.onreadystatechange = function()
		  { 
			if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { 
				obj.innerHTML = XMLHttpRequestObject.responseText;
			} 
		  } 
		  XMLHttpRequestObject.send("question_id="+question_id+"&user_id=" + user_id + "&answer_id=" + answer_id);
		}
	}
}

function vote_profilepoll(poll_id,user_id) {
	var question_id = poll_id;
	var answer_id ;
	var user_id = user_id;
	
	options = document.getElementsByName('answer_id');
	index = 0;
	while (index < options['length'] && !options[index].checked)
		index++;
		
	if (index < options['length']) {
		answer_id = options[index].value;
		if(XMLHttpRequestObject) {
		  var obj = document.getElementById('latestpoll'); 
		  XMLHttpRequestObject.open("POST", rootdir + "includes/ajax_vote_profilepoll.php"); 
		  XMLHttpRequestObject.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		  
		  XMLHttpRequestObject.onreadystatechange = function()
		  { 
			if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { 
				obj.innerHTML = XMLHttpRequestObject.responseText;
			} 
		  } 
		  XMLHttpRequestObject.send("question_id="+question_id+"&user_id=" + user_id + "&answer_id=" + answer_id);
		}
	}
}

function quote (entry_id, post_id, type) {
	initAjax();
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_quote.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById('message').value += "\n" + xmlHttp.responseText + "\n";
				window.location.assign('#postcomment');
			}
		}
		xmlHttp.send("id="+entry_id+"&pid="+post_id+"&type="+type);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}

function deleteUserAction (action_id, profile_id) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_deleteuseraction.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById('user_activity').innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("id="+action_id+"&pid="+profile_id);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}

function getCaretPosition (obj) {
	var CaretPos = 0;	// IE Support
	if (document.selection) {
	obj.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -obj.value.length);
		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (obj.selectionStart || obj.selectionStart == '0') {
		CaretPos = obj.selectionStart;
		alert ("SELECTION START: "+obj.selectionStart);
		alert ("SELECTION END: "+obj.selectionEnd);
	}
	return (CaretPos);
}

function setCaretPosition (obj, pos) {
	if(obj.setSelectionRange)
	{
		obj.focus();
		obj.setSelectionRange(pos,pos);
	}
	else if (obj.createTextRange) {
		var range = obj.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

/*
function selectCode (obj) {
	var code = obj.parentNode.parentNode.lastChild.firstChild;
	code.focus();

	alert(obj.selectionStart);
	
	
}
*/

function selectCode(a) {
	// Get ID of code block
	var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];

	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			var r = document.createRange();
			r.selectNodeContents(e);
			s.removeAllRanges();
			s.addRange(r);
		}
	}
	// Some older browsers
	else if (document.getSelection)
	{
		var s = document.getSelection();
		var r = document.createRange();
		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}
	// IE
	else if (document.selection)
	{
		var r = document.body.createTextRange();
		r.moveToElementText(e);
		r.select();
	}
}

function insertTag (tag, field, var1, var2) {
		
	var obj = document.getElementById(field);
	var bbtags = new Array();
	bbtags['b'] = '[b][/b]';
	bbtags['i'] = '[i][/i]';
	bbtags['u'] = '[u][/u]';
	bbtags['quote='] = '[quote="var1"][/quote]';
	bbtags['quote'] = '[quote][/quote]';
	bbtags['code'] = '[code][/code]';
	bbtags['list='] = '[list=var1][/list]';
	bbtags['list'] = '[list][/list]';
	bbtags['img'] = '[img][/img]';
	bbtags['url='] = '[url=var1][/url]';
	bbtags['url'] = '[url][/url]';
	bbtags['flash='] = '[flash=var1,var2][/flash]';
	bbtags['flash'] = '[flash=650,575][/flash]';
	bbtags['size='] = '[size=var1][/size]';
	bbtags['afbeelding'] = '[afbeelding][/afbeelding]';
	bbtags['itvideo'] = '[itvideo][/itvideo]';
	bbtags['spoiler'] = '[spoiler][/spoiler]';
	bbtags['video='] = '[video width=var1 height=var2][/video]';
	bbtags['video'] = '[video][/video]';
	bbtags['youtube'] = '[youtube][/youtube]';
	bbtags['sound'] = '[sound][/sound]';
	bbtags['audio'] = '[sound][/sound]';
	
	var caretPos = 0;	// IE Support
	/*
	if (document.selection) {
		obj.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -obj.value.length);
		caretPos = Sel.text.length;
	}
	// Firefox support
	else {
	*/
	var start = obj.selectionStart;
	var end = obj.selectionEnd;
	
	var text1 = obj.value.substr(0,start);
	var text2 = (start != end) ? obj.value.substring(start,end) : '';
	var text3 = obj.value.substr(end);
	var new_text = bbtags[tag].replace('var1',var1).replace('var2',var2).replace('][', ']'+ text2 +'[');
	
	obj.value = text1 + new_text + text3;
}


function addText (text, field_id) {
	var obj = document.getElementById(field_id);

	var start = obj.selectionStart;
	var end = obj.selectionEnd;
	var text1 = obj.value.substr(0,start);
	var text2 = obj.value.substr(end);
	if(start===undefined){ //thank you IE
		var text1=obj.value;
		var text2="";
	}
	obj.value = text1 + text + text2;
}

// Encode \ + %20 * / @ ? & = etc.
function urlencode(str) {
	str = escape(str).replace(/\\/g,'%5C').replace(/\+/g,'%2B').replace(/\*/g,'%2A').replace(/\//g,'%2F').replace(/\@/g,'%40').replace(/\?/g,'%3F').replace(/\&/g,'%26').replace(/\#/g,'%23').replace(/\~/g,'%7E').replace(/\=/g,'%3D');
	return str;
}

/*
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
*/


function editComment (entry_id, post_id, type) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_editcomment.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById("reactie_content_"+entry_id).innerHTML = xmlHttp.responseText;
				createEditCommentBottom (entry_id, post_id, type);
			}
		}
		xmlHttp.send("action=edit&id="+entry_id+"&pid="+post_id+"&type="+type);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}

function createEditCommentBottom (entry_id, post_id, type) {
	initAjax();
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_editcomment.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById("comment_actions_"+entry_id).innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("action=editbottom&id="+entry_id+"&pid="+post_id+"&type="+type);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


function saveComment (entry_id, post_id, type) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_editcomment.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById("reactie_content_"+entry_id).innerHTML = xmlHttp.responseText;
				restoreCommentBottom (entry_id, post_id, type);
			}
		}
		var value = urlencode(document.getElementById("edit_comment_"+entry_id).value);
		xmlHttp.send("action=save&id="+entry_id+"&pid="+post_id+"&type="+type+"&value="+value);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


function restoreCommentBottom (entry_id, post_id, type) {
	initAjax();
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir + "includes/ajax_editcomment.php");
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
				document.getElementById("comment_actions_"+entry_id).innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("action=restorebottom&id="+entry_id+"&pid="+post_id+"&type="+type);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}



$(document).ready(function() {
    
    $('[class^=icon_give_karma]').click(function(event) {
        var class_info = $(this).attr('class').replace('icon_give_karma_', '').split('_');
        var comment_id = class_info[0];
        var rating_type = class_info[1];
        $('#karma_reason_'+comment_id+' .karma_rating').val(rating_type);
        $('#karma_reason_'+comment_id).slideToggle();
    });
    
    $('.cancel_send_karma').click(function(event) {
        $(this).parent().slideUp();
    });
    
    $('.submit_karma_reason').click(function(event) {
        if(xmlHttp) {
            var parent = '#'+$(this).parent().attr('id');
            var comment_id = parent.replace('#karma_reason_', '');
            var profile_id = $(parent+' .poster_id').val();
            var karma_rating = $(parent+' .karma_rating').val();
            var type = $(parent+' .type').val();
            var archive = $(parent+' .archive').val();
            var reason = urlencode($(parent+' .reason').val());
//            $(parent).html("<p>parent: "+parent+"</p><p>user_id: "+user_id+"</p><p>poster_id: "+profile_id+"</p><p>karma_rating: "+karma_rating+"</p><p>type: "+type+"</p><p>comment_id: "+comment_id+"</p><p>archive: "+archive+"</p><p>reason: "+reason+"</p>");
            
            if (reason.length < 20) {
                alert('De reden moet minstens 20 tekens bevatten!');
            }
            else {
                $(parent).slideUp();
                $.ajax({
                    type: "POST",
                    url: rootdir + "includes/ajax_useractions.php",
                    data: "uid="+user_id+"&pid="+profile_id+"&karma_rating="+karma_rating+"&type="+type+"&cid="+comment_id+"&reason="+reason+"&archive="+archive,
                    success: function(msg) {
                        $('#comment_actions_'+comment_id).html(msg);
                    }
                });
            }
        }
    });
});



















