var xmlHttp = false;

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) {
		}
	}
}

$(document).ready(function() {

    // rearrange
    $('.sortable').sortable({
        placeholder: 'ui-state-highlight',
        tolerance: 'pointer',
        items: 'tr.sort-enabled, div.sort-enabled, li.sort-enabled',
        update: function(event, ui) {
            setSortableChanged();
        }
    });

    $('.add-user').hover(
        function() {$(this).addClass('hover');},
        function() {$(this).removeClass('hover');}
    );
/*
    $('select.has-complete-namelist-option').change(function()
    {
        // only perform the action when the option.complete-namelist is selected
        if ($(this).find(':selected').hasClass('complete-namelist'))
        {
            alert($(this).val());
            completeNameList($(this).val());
        }
    });
*/
});

/**
 * Functie om de acties die een select kan hebben te evalueren en uit te voeren bij onchange
 */
function performSelectAction(select) {

    selected = $(select).find(':selected');
    
    if ($(selected).hasClass('complete-namelist'))
    {
        completeNameList($(selected).val());
    }

}

function setSortableChanged() {
    $('.display-on-update').show();
    $('.update-hidden').val(1);
}

/* Datepicker */
//$(function() {
//	$(".datepicker").datepicker();
//});


/*
 *	Functie om speciale tekens te encoderen in AJAX-postdata
 *	\ + %20 * / @ ? & =
 */
function urlencode(str) {
//	return escape(str).replace(/\\/g,'%5C').replace(/%u20AC/g,'%80').replace(/\+/g,'%2B').replace(/%20/g,'+').replace(/\*/g,'%2A').replace(/\//g,'%2F').replace(/\@/g,'%40').replace(/\?/g,'%3F').replace(/\&/g,'%26').replace(/\=/g,'%3D');
    return encodeURIComponent(str);
}


/*
 * 	Functie om tekst (bvb smiley's) in een tekstveld (bvb roddels) in te voegen.
 */
function addText (textfield, value) {
	document.getElementById(textfield).value += value;
}


/*
 * 	Functie om het klassement van de
 * 	bowlstatistieken te sorteren mbv AJAX.
 */
function sortTable (sort_field, sort_type, year) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_sort_bowl_stats.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				document.getElementById('klassement').innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("sort_field="+sort_field+"&sort_type="+sort_type+"&year="+year);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 * 	Functie om nieuwsberichten aan te passen
 */
function setEditable (type, id) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_get_item.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				document.getElementById(type+"_"+id).innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("type="+type+"&id="+id);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 * 	Functie om nieuwsberichten te updaten
 */
function updatePost (type, id) {
	if (xmlHttp) {
		try {
			xmlHttp.open("POST", rootdir+"ajax_update_post.php");
			xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			
			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState == 4) {
					document.getElementById(type+"_"+id).innerHTML = xmlHttp.responseText;
				}
			}
			switch (type) {
				case 'nieuws':
					var title = urlencode(document.getElementById("edit_field_title_"+type+"_"+id).value);
					var value = urlencode(document.getElementById("edit_field_value_"+type+"_"+id).value);
					var link = urlencode(document.getElementById("edit_field_link_"+type+"_"+id).value);
					break;
				case 'kalender':
					var title = urlencode(document.getElementById("edit_field_title_"+type+"_"+id).value);
					var where = urlencode(document.getElementById("edit_field_where_"+type+"_"+id).value);
					var when = urlencode(document.getElementById("edit_field_when_"+type+"_"+id).value);
					var time = urlencode(document.getElementById("edit_field_time_"+type+"_"+id).value);
					var value = urlencode(document.getElementById("edit_field_description_"+type+"_"+id).value);
					var link = urlencode(document.getElementById("edit_field_link_"+type+"_"+id).value);
					var color = urlencode(document.getElementById("edit_field_color_"+type+"_"+id).value);
					var subscribe = urlencode(document.getElementById("edit_field_subscribe_"+type+"_"+id).checked);
					var unsubscribe = urlencode(document.getElementById("edit_field_unsubscribe_"+type+"_"+id).checked);
					var multiple_subscriptions = urlencode(document.getElementById("edit_field_multiple_subscriptions_"+type+"_"+id).checked);
					break;
			}
		} catch (err) {alert(err);}
		finally {
			xmlHttp.send("type="+type+"&id="+id+"&title="+title+"&value="+value+"&link="+link+"&where="+where+"&when="+when+"&time="+time+"&color="+color+"&subscribe="+subscribe+"&unsubscribe="+unsubscribe+"&multiple_subscriptions="+multiple_subscriptions);
		}
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 * 	Functie om items te verwijderen
 */
function deleteItem (type, id) {
    if (confirm('Weet je zeker dat je dit item wil verwijderen?')) {
        var sync_sk = 0;
        if (type == 'kalender') {
            sync_sk = (confirm('Wil je het evenement ook uit de SK activiteiten verwijderen?')) ? 1 : 0;
        }
        
    	if (xmlHttp) {
    		xmlHttp.open("POST", rootdir+"ajax_delete_item.php");
    		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    		
    		xmlHttp.onreadystatechange = function() {
    			if (xmlHttp.readyState == 4) {
    				document.getElementById(type+"_"+id).innerHTML = xmlHttp.responseText;
    			}
    		}
    		xmlHttp.send("type="+type+"&id="+id+"&sync_sk="+sync_sk);
    	}
    	else
    		alert ("Geen AJAX ondersteuning!");
    }
}


/*
 *  Functie om foto's te verwijderen
 */
function deletePhoto (album_id, photo_id) {
    if (confirm('Weet je zeker dat je deze foto wil verwijderen?')) {
        if (xmlHttp) {
            xmlHttp.open("POST", rootdir+"ajax_delete_photo.php");
            xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            
            xmlHttp.onreadystatechange = function() {
                if (xmlHttp.readyState == 4) {
                    document.getElementById('photo-admin').innerHTML = xmlHttp.responseText;
                }
            }
            xmlHttp.send("album_id="+album_id+"&photo_id="+photo_id);
        }
        else
            alert ("Geen AJAX ondersteuning!");
    }
}


/*
 * 	Functie om alle namen te verkrijgen bij het posten van een nieuwe score
 */
function completeNameList (id) {
	if (xmlHttp) {
		xmlHttp.open("GET", "http://www.bacchusgent.be/ajax_get_usernames.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				document.getElementById("naam"+id).innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send(null);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 * 	Functie om een extra speler + bijhorende velden in een bowlingscoreformulier toe te voegen
 */
function addParticipant (counter) {
	counter++;
	document.getElementById('aantalDeelnemers').value++;
	var row = document.getElementById('klassement').insertRow(counter+2);
	row.id = "score"+counter;

	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_new_participant.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				row.innerHTML = xmlHttp.responseText;
			}
		}
		xmlHttp.send("counter="+counter);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 *	Functie om de submitbutton van het scoreformulier aan te passen
 */
function setEdited () {
	var obj = document.getElementById("submit_score");
	obj.name = 'send_new_score';
	obj.value = 'Opnieuw valideren';
}


/*
 *	Functie om een form voor een nieuwe roddel te creëren
 *		> ID instelle op db-id van wudje
 *		> Ajax iedere 5 seconden laten checken of $lastID verhoogd is
 *		> Tonen hoeveel nieuwe roddels er boven en onder de huidige roddel staan
 */
function createRoddelForm (object, parentID, level) {
	level++;
	var rowIndex = object.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.rowIndex;
	rowIndex += 2;
	var new_row = document.getElementById('roddels').insertRow(rowIndex);
	
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_new_roddel.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				new_row.innerHTML = xmlHttp.responseText;
				var new_row_bottom = document.getElementById('roddels').insertRow(rowIndex+1);
				new_row_bottom.innerHTML = "<td><table border='0' cellpadding='0' cellspacing='0' width='100%'><tr><td width='100%' background='images/stippellijn.gif'><img border='0' src='images/spacer.gif'></td></tr></table></td>";
			}
		}
		xmlHttp.send("action=create&level="+level+"&parentID="+parentID);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 *	Functie om een nieuwe roddel toe te voegen via AJAX
 */
function addRoddel (object, level, parentID) {
	var value = urlencode(object.parentNode.firstChild.value);
	
	if (value != '') {
		if (xmlHttp) {
			xmlHttp.open("POST", rootdir+"ajax_new_roddel.php");
			xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			
			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState == 4) {
					object.parentNode.parentNode.parentNode.innerHTML = xmlHttp.responseText;
				}
			}
			xmlHttp.send("action=submit&level="+level+"&parentID="+parentID+"&value="+value);
		}
		else
			alert ("Geen AJAX ondersteuning!");
	}
}


/*
 *	Functie om in of uit te schrijven voor activiteiten
 */
function subscribe (activiteit_id, inschrijving) {
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_subscribe.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				document.getElementById('inschrijvingen').innerHTML = xmlHttp.responseText;
			}
		}
		var aantal = 0;
		try {
			aantal = urlencode(document.getElementById('aantal_inschrijvingen').value);
		}
		catch (err) { /* alert(err); */ }
		finally {
		//	alert("Inschrijving: "+inschrijving+"\nAantal: "+aantal);
			xmlHttp.send("subscription="+inschrijving+"&activiteit_id="+activiteit_id+"&aantal_inschrijvingen="+aantal);
		}
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 * 	Functie om de status van een lid aan te passen
 */
function updateStatus (id) { 
	if (xmlHttp) {
		xmlHttp.open("POST", rootdir+"ajax_update_status.php");
		xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
		
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState == 4) {
				document.getElementById('update_'+id).innerHTML = "<span id='update_"+id+"'><input type='button' class='knop' value='Update' onclick='updateStatus("+id+")' /></span>"+xmlHttp.responseText;
			}
		}
		status = document.getElementById('statusbox_'+id).value;
		functie = document.getElementById('functiebox_'+id).value;
		xmlHttp.send("id="+id+"&status="+status+"&functie="+functie);
	}
	else
		alert ("Geen AJAX ondersteuning!");
}


/*
 *	Functie om tekstvelden te focussen
 */
function focusField(keyCode,divID) {
	// left - up - right - down - shift - shift lock - tab - backspace - del - esc - enter - ctrl
	// H voor splits (72)
	if (keyCode != 72 && keyCode != 37 && keyCode != 38 && keyCode != 39 && keyCode != 40 && keyCode != 16 && keyCode != 20 && keyCode != 9 && keyCode != 8 && keyCode != 46 && keyCode != 27 && keyCode != 13 && keyCode != 17) {
		document.getElementById(divID).focus();
	}
	
}


/*
 *  Fotoalbums in lightbox tonen
 */
/*
$(function() {
    $('#foto-album a').lightBox({txtImage: '<b>' + $('.titel').html() + '</b><br/>Image '});
});
*/

/*
 * Een 'loading' bar of icon tonen wanneer een request lang zal duren (bvb. foto upload)
 * @param divID het element waar de loading image moet in komen (zonder #)
 */
function setLoading(divID) {
    $('#' + divID + ' .submit').hide();
    $('#' + divID + ' .loading').show();
}

/*
 * Update privé-weergave van een fotoalbum
 */
function togglePrivateAlbum(id) {

    if ($('.album-'+id).hasClass('private')) {
        set_private = 0;
    }
    else if ($('.album-'+id).hasClass('not-private')) {
        set_private = 1;
    }
    else {
        alert("Er deed zich een fout voor: elk item moet de class 'private' of 'not-private' hebben.");
        return;
    }

    $.ajax({
        type: "POST",
        url: rootdir + "ajax_toggle_private_album.php",
        data: "id="+id+"&set_private="+set_private,
        success: function(msg) {
            if (msg == 'OK') {
                // great success!
                if (set_private) {
                    $('.album-'+id).removeClass('not-private');
                    $('.album-'+id).addClass('private');
                    $('.album-'+id).attr('src', 'images/icons/lock.png');
                }
                else {
                    $('.album-'+id).removeClass('private');
                    $('.album-'+id).addClass('not-private');
                    $('.album-'+id).attr('src', 'images/icons/lock_off.png');
                }
            }
            else {
                alert(msg);
            }
        }
    });

}

/*
 * Hover over album item private icon
 */
$(function() {

    $('.admin .album-private').hover(
        function() {
            if ($(this).hasClass('private'))
                $(this).attr('src', 'images/icons/lock-minus.png');
            else
                $(this).attr('src', 'images/icons/lock-plus.png');
        },
        function() {
            if ($(this).hasClass('private'))
                $(this).attr('src', 'images/icons/lock.png');
            else
                $(this).attr('src', 'images/icons/lock_off.png');
        }
    );

});

/*
 * Een gebruikerspermissie in-/uitschakelen
 */
function togglePermission(user_id, permission) {

    $.ajax({
        type: "POST",
        url: rootdir + "ajax_toggle_permission.php",
        data: "user_id="+user_id+"&permission="+permission,
        success: function(msg) {
            $('#messages').html(msg);
        }
    });

}

/*
 * 	Functie om een dropdownlist met gebruikers toe te voegen als laatste rij van de tabel
 */
function addUserFormToPermissionsTable() {

    $.ajax({
        type: "POST",
        url: rootdir + "ajax_new_permission_user.php",
        success: function(msg) {
            $('#permissions tr:last').before(msg);
        }
    });
    
}

/*
 * 	Functie om een rij met een bepaalde ID te vervangen door een gebruiker en zijn permissies als checkboxes
 */
function generatePermissionForm(row_id) {

    user_id = $('#'+row_id+' select').val();

    $.ajax({
        type: "POST",
        url: rootdir + "ajax_new_permission_form.php",
        data: "user_id="+user_id,
        success: function(msg) {
            $('#'+row_id).html(msg);
        }
    });

}
