/**
 * @version 	1.0.3 - 22 maart 2011
 * 
 * @copyright	1.0.3, 	22 maart 2011,	Jan Niemantsverdriet,	Tijdsduur waarmee gewacht voor het posten kan worden meegegven
 * @copyright	1.0.2, 	20 maart 2011,	Jan Niemantsverdriet,	Mogelijkheid om het formulier te blokeren
 * @copyright	1.0.1, 	19 maart 2011,	Jan Niemantsverdriet,	Callback functionaliteit toegevoegd
 * @copyright	1.0.0, 	18 maart 2011,	Jan Niemantsverdriet,	Gemaakt
 */

var oCpHTMLFacetedBrowser_changed = new Object();
var oCpHTMLFacetedBrowser_timeouts = new Object();
var oCpHTMLFacetedBrowser_block = new Object();

/**
 * De functie die wordt aangeroepen als er een veld in de faceted browser wijzigd
 * 
 * @param String a_sFunction				de naam van de callback functie
 * @param String a_sFormId					het id van het formulier die bij de browser hoort
 * @param String a_sFieldId					het id van het veld
 * @since 1.0.0 - 18 maart 2011
 * @author Jan Niemantsverdriet
 */
function vCpHTMLFacetedBrowser_change(a_sFunction, a_sFormId, a_sFieldId, a_aBlockInfo, a_iDelay) {
	if (!(a_sFormId in oCpHTMLFacetedBrowser_changed)) oCpHTMLFacetedBrowser_changed[a_sFormId] = new Object();
	oCpHTMLFacetedBrowser_changed[a_sFormId][a_sFieldId] = (document.getElementById(a_sFieldId) ? document.getElementById(a_sFieldId).value : null);
	clearTimeout(oCpHTMLFacetedBrowser_timeouts[a_sFormId]);
	oCpHTMLFacetedBrowser_block[a_sFormId] = a_aBlockInfo;
	oCpHTMLFacetedBrowser_timeouts[a_sFormId] = window.setTimeout("vCpHTMLFacetedBrowser_callCallback(" + a_sFunction + ", '" + a_sFormId + "')", a_iDelay);
}

/**
 * De functie die de daadwerkelijke callback functie aanroept
 * 
 * @param a_hFunction						de callback functie
 * @param a_sFormId							het id van het formulier die bij de browser hoort
 * @since 1.0.1 - 19 maart 2011
 * @author Jan Niemantsverdriet
 */
function vCpHTMLFacetedBrowser_callCallback(a_hFunction, a_sFormId) {
	
	for (iIndex in oCpHTMLFacetedBrowser_block[a_sFormId]['elements']) {
		var oDiv = document.getElementById(oCpHTMLFacetedBrowser_block[a_sFormId]['elements'][iIndex]['parent']);
		if (oDiv) {
			var oNewDiv = document.createElement('div');
			oNewDiv.id = oCpHTMLFacetedBrowser_block[a_sFormId]['elements'][iIndex]['newid'];
			oNewDiv.className = oCpHTMLFacetedBrowser_block[a_sFormId]['elements'][iIndex]['newcssclass'];
			oNewDiv.zIndex = 50;
			oDiv.appendChild(oNewDiv);
		}
	}
	a_hFunction(a_sFormId);
	oCpHTMLFacetedBrowser_changed[a_sFormId] = new Object();
}

/**
 * De functie die het formulier verzend
 * 
 * @param a_sFormId							het id van het formulier die bij de browser hoort
 * @since 1.0.1 - 19 maart 2011
 * @author Jan Niemantsverdriet
 */
function vCpHTMLFacetedBrowser_doPost(a_sFormId) {
	// geef alle gewijzigde velden een css klasse
	for (var sField in oCpHTMLFacetedBrowser_changed[a_sFormId]) {
		jQuery('.CpHTMLFacetedBrowsingElement_' + sField).addClass('CpHTMLFacetedBrowserElement_loading');
	}
	
	//verstuur het formulier
	document.getElementById(a_sFormId).submit();
}
