/*
 * file: modulex.js
 * -
 * What: Modulex main Object
 * When: On page load
 * Why: Initiate Modulex
 */
 
/* Global variables */
var gModulexXMLDataUrl = "xml/modeles.xml";
var gModulexLocalVar_allModels = "ALL COLLECTIONS";
var gModulexLocalVar_allPrices = "ALL PRICE";
var gModulexLocalVar_sortBy = "SORT BY...";
var gModulexLocalVar_modelName = "MODEL NAME";
var gModulexLocalVar_room = "ROOM";
var gModulexLocalVar_surface = "SURFACE";
var gModulexLocalVar_price = "PRICE";
var gModulexLocalVar_new = "NEW";
var gModulexLocalVar_close = "CLOSE";
var gModulexLocalVar_technicalSheet = "TECHNICAL SHEET";
var gModulexLocalVar_technicalSheetFile = "REALIZATIONS";
var gModulexLocalVar_priceRangeLegend = "PRICE RANGE LEGEND";
var gModulexCategoryArray = new Array();
var gModulexPriceRangeArray = new Array();
var gModulexModelArray = new Array();
var gModulexModelArray_runtime;
var gModulexModelDisplayCount = 10;
var gModulexModelDisplayCount_start = 0;
var gModulexModelDisplayCount_end = 10;
var gModulexCurrentCategory;
var gModulexCurrentPriceRange;
var gModulexCurrentSorting;

/* Initialization */
Event.observe(window, "load", function() {

		/* Initiate Menu */
		
		/* Initiate Modulex */
		new Modulex.load();
		
}, false);

/*
 * object: Modulex
 * -
 * What: 
 * When: 
 * Why: 
 */
 
var Modulex = {

	/*
	 * function: Modulex.load()
	 * -
	 * What: 
	 * When: 
	 * Why: 
	 */
	 
	load: function() {
		
		/* Set Ajax.Resonders handler */
		Ajax.Responders.register({
			onCreate: function() {
				//Element.show('systemWorking');
				//alert("Ajax call initiated");
				
			},
			onComplete: function() {
				if(Ajax.activeRequestCount == 0){
					//Element.hide('systemWorking');
					//alert("Ajax call ended");
				}
			},
			onFailure: Modulex.error,
			onException: Modulex.error
		});
		
		/* Ajax initialization */
		new Ajax.Request(
			gModulexXMLDataUrl+'?rand='+Math.random(),
			{
				method: 'get',
				//encoding: 'UTF-8',
				onComplete: Modulex.Parser.init,
				requestHeaders: ["Content-Type", "application/xml","Cache-Control","no-cache","Pragma","no-cache"]
		});
		
		return true;
	},
	
	/*
	 * function: Modulex.unload()
	 * -
	 * What: 
	 * When: 
	 * Why: 
	 */
	 
	unload: function() {
		
		// TODO: ...
		//Ajax.Responders.unregister(responder)
		
		return true;
	},
	
	/*
	 * function: Modulex.error(error)
	 * -
	 * What: Modulex error handler
	 * When: 
	 * Why: 
	 */
	 
	error: function(error) {
	
		var errorText;
		
		for(var i in error) {
			errorText += "- "+i+": "+error[i]+"\n";
		}
		
		var errorElement = Builder.node('p', "An error occured with the following element:\n"+errorText);
		
		Modulex.Display.showModalBox(errorElement);
		
		return true;
	}

}
