
/*global $,log,app,style,svc,ml,confmodell,modeldisplayCtrl,layoutManager */
/*global getConfiguratorURL,updateFarbe,updatePolster,showWait,hideWait,get_uri,hideWaitDiv,lastChangedMnr */

function ConfigurationModell(params) {
	this.init(params);
}

$.extend(ConfigurationModell.prototype, {
	init: function(){
		this.fabrikat = '';
		this.modellgruppe = '';
		this.modellcode = '';
		this.bezeichnung = '';
		this.isCabrio = false;
		this.ausstattungsvar = '';
		this.farbe = '';
		this.polster = '';
		this.mehrausstattungen = '';
		this.akuelleauswahl = {
			farbe: '',
			polster: '',
			mehrausstattungen:''				
		};
		
		this.bezeichnungKurz = '';
		this.motor = '';
		this.antrieb = '';
		this.tueren = '';
		this.preis = '';
	},
	setFabrikat: function(fabrikat){
		this.fabrikat = fabrikat;
	},	
	setModellgruppe: function(modellgruppe){
		this.modellgruppe = modellgruppe;
	},
	setModellcode: function(modellcode){
		this.modellcode = modellcode;
	},
	setBezeichnung: function(bezeichnung){
		this.bezeichnung = bezeichnung;
	},
	setCabrio: function(isCabrio){
		this.isCabrio = isCabrio;
	},
	setAusstattungsvar: function(ausstattungsvar){
		this.ausstattungsvar = ausstattungsvar;
	},
	setFarbe: function(farbe){
		this.farbe = farbe;
	},
	setPolster: function(polster){
		this.polster = polster;
	},
	setMehrausstattungen: function(mehrausstattungen){
		this.mehrausstattungen = mehrausstattungen;
	},
	setAktuelleAuswahlFarbe: function(farbe){
		this.akuelleauswahl.farbe = farbe;
	},
	setAktuelleAuswahlPolster: function(polster){
		this.akuelleauswahl.polster = polster;
	},
	setAktuelleAuswahlMehrausstattungen: function(mehrausstattungen){
		this.akuelleauswahl.mehrausstattungen = mehrausstattungen;
	},
	resetAktuelleAuswahl: function(){
		this.akuelleauswahl = {
			farbe: '',
			polster: '',
			mehrausstattungen: ''			
		};
	},
	setModellInformation: function(mc, auv, farbe, polster, maus, fab){
		if(fab) { 
			//GA: verschiedene Fabrikate in Ref Liste
			this.setFabrikat(fab); 
		}	
		if (mc) {
			this.setModellcode(mc); 
		}
		this.setAusstattungsvar(auv || ''); 
		this.setFarbe(farbe || ''); 
		this.setPolster(polster || '');
		this.setMehrausstattungen(maus || '');
	}
});

function updateModellInfo() {
	var callmodell = getConfiguratorURL("cc3modell.txt");
	$.get(callmodell, function(data) {
		$("#sidebar").html(data);
		layoutManager.updateInfoSize();
	});
}

function initFarben(callstring) {

	// - Radiobutton fuer Farb-Auswahl anklicken
	$("input[name='FARBCODE']").click( function() {
		updateFarbe(callstring, this.value);
		if(app.isShowroom) {
			lastChangedMnr = this.value;
		}
	});
	// - workaround wegen IE (img in label nicht klickbar)
	$(".farben_img").bind('click', function() {
		$(this).parents('tr:eq(0)').find("input[name='FARBCODE']").click();
	});

	// - Radiobutton fuer Polster-Auswahl anklicken
	$("input[name='POLCODE']").click( function() {
		updatePolster(callstring, this.value);
		if(app.isShowroom) {
			lastChangedMnr = this.value;
		}
	});
	// - workaround wegen IE (img in label nicht klickbar)
	$(".polster_img").bind('click', function() {
		$(this).parents('tr:eq(0)').find("input[name='POLCODE']").click();
	});
}

function updateFarbePolster() {
	showWait();
	$.get(getConfiguratorURL("cc3farben.txt"), function(data) {
		$("#content").html(data);
		hideWait();
	});
}

function get_neucode() {
	if ($('#NEUCODE')) {
		var neucode = $('#NEUCODE').val();
		if (neucode) {
			return neucode;
		}
	}
	return '';
}

function get_neuauswahl() {
	var neuauswahl = $('input:radio[name=NEUAUSWAHL]:checked').val();
	if (!neuauswahl) {
		neuauswahl = $('input[type=hidden][name=NEUAUSWAHL]').val();
	}
	return neuauswahl;
}

function baubarkeitsAuswahl(callString, auswtype, codetype) {
	var neuauswahl = get_neuauswahl();
	if (neuauswahl === '') {
		// reload (callString);
		return;
	}
	
	lastChangedMnr = neuauswahl.split("@")[0];
	var polcode = confmodell.polster;
	var farbcode = confmodell.farbe;
	var mnrcode = confmodell.mehrausstattungen;

	var uri = callString;	
	
	// - Parameter fuer vorhergehende Auswahl
	if (auswtype === 'P') {
		uri = uri + '&P0=' + polcode;
		polcode = neuauswahl;
		confmodell.setAktuelleAuswahlPolster(neuauswahl);
	} else if (auswtype === 'F') {
		uri = uri + '&F0=' + farbcode;
		farbcode = neuauswahl;
		confmodell.setAktuelleAuswahlFarbe(neuauswahl);
	} else if (auswtype === 'M') {
		uri = uri + '&M0=' + mnrcode;
		mnrcode = neuauswahl;
		uri = uri + '&A=' + mnrcode;
		confmodell.setAktuelleAuswahlMehrausstattungen(neuauswahl);
	} else { // keine Auswahl Elemente
		uri = uri + '&auswtype=' + auswtype; // (dummy parameter)
	}
	// - Neuer Code
	if (codetype === 'P') {
		polcode = get_neucode();
	} else if (codetype === 'F') {
		farbcode = get_neucode();
	} else if (codetype === 'M') {
		mnrcode = get_neucode();
	}

	uri = uri + get_uri(farbcode, polcode, mnrcode);

	$.get(uri, function(data) {
		$("#content").html(data);
	});
}

function updateFarbe(callString, farbcode) {
	var farbcode0 = confmodell.farbe;
	confmodell.setFarbe(farbcode);

	var uri = callString + get_uri(confmodell.farbe, confmodell.polster, confmodell.mehrausstattungen) + '&F0=' + farbcode0;
	$.get(uri, function(data) {
		$("#content").html(data);
	});
}
function updatePolster(callstring, polstercode) {
	var polstercode0 = confmodell.polster;
	confmodell.setPolster(polstercode);
	var uri = callstring + get_uri(confmodell.farbe, confmodell.polster, confmodell.mehrausstattungen) + '&P0=' + polstercode0;
	$.get(uri, function(data) {
		$("#content").html(data);
	});
}
function initMNR(callstring) {
	// - Checkbox fuer Mehrausstattungs-Auswahl anklicken
	$("input[name='MNR']").click( function() {
		mehrauswahl(callstring, this.value);
	});
}
function mehrauswahl(callstring, action) {
	var mnrcode0 = confmodell.mehrausstattungen;
	confmodell.setMehrausstattungen(init_mnrcode());
	var uri = callstring + get_uri(confmodell.farbe, confmodell.polster, confmodell.mehrausstattungen);
	uri = uri + '&M0=' + mnrcode0 + '&A=' + action;
	$.get(uri, function(data) {
		$("#content").html(data);
		hideWaitDiv();
	});
}
function reload(callstring) {
	var uri = callstring + get_uri(confmodell.farbe, confmodell.polster, confmodell.mehrausstattungen);
	$.get(uri, function(data) {
		$("#content").html(data);
	});
}
function init_mnrcode() {
	var mnrcode = '';

	$("input[name='MNR']").each( function(i) {
		if (this.checked) {
			if (mnrcode) {
				mnrcode = mnrcode + '@';
			}
			mnrcode = mnrcode + this.value;
		}
	});
	$("input[name='hiddenMNR']").each( function(i) {
		if (mnrcode) { 
			mnrcode = mnrcode + '@';
		}
		mnrcode = mnrcode + this.value;
	});
	return mnrcode;
}

function create_angebotnr(callback){
	var uri = getConfiguratorURL("angebotnrcreate.txt");
	$.get(uri, function(data) {
		var nr = data.match(/\w+/);
		if(nr) {
			callback(nr[0]);
		} else {
			callback();
		}
	});
}

function retrieve_angebotnr(nr, callback) {
	var uri = svc.cfgapp + "/NR/" + nr + "/json/@";
	if (app.isShowroom) {
		uri += "?APP=SHOWROOM";
	}
	
	$.getJSON(uri, function(data) {
		callback(data.valid, data.url, data.fab);
	});
}

function angebotnr_link(nr) {
	var uri = svc.cfgapp + "/NR/" + nr + "/redirect/@";
	if (app.isShowroom) {
		uri += "?APP=SHOWROOM";
	}
	return uri;
}