PersoQuot.prototype.constructor = PersoQuot;

function PersoQuot(cote_brute,dt_id,millesime,energie,puissance,categorie,marque,modele,version,cylindree){
	this.cote_brute = cote_brute;
	this.dt_id = dt_id;
	this.millesime = millesime;
	this.energie = energie;
	this.puissance = puissance;
	this.categorie = categorie;
	this.marque = marque;
	this.modele = modele;
	this.version = version;
	this.cylindree=cylindree;
	this.nb_opt_selected = 0;
	this.nb_rep_selected = 0;
	this.T_mois = new Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
	this.Toptions = Array();
	this.Tsel_opts = Array();
	this.Treps = Array();
	this.Tsel_reps = Array();
	this.xmlhttp_data = null;
	this.CategCote = categorie;
	if (this.categorie == 'auto') {
		this.CategCote = 9;
		}
	if (this.categorie == 'moto') {
		this.CategCote = 16;
		}

	if (window.location.href.match(new RegExp('\.lacentrale\.dev')))
	{
		this.isDev = true;
		this.pathStatic = window.location.href.replace(new RegExp('^[^.]*\.([^.]*\.lacentrale\.dev/).*$'),'http://dev-lc-static.$1');
	}
	else if (window.location.href.match(new RegExp('srvwrec')) || window.location.href.match(new RegExp('192\.168\.1\.4')))
	{
		this.isRec = true;
		this.pathStatic = 'http://srvwrec:81/';
	}
	else
	{
		this.isProd = true;
		this.pathStatic = 'http://static.lacentrale.fr/';
	}
}

PersoQuot.prototype.push_opt = function(label,is_selected) {
	this.Toptions[this.Toptions.length] = label;
	this.Tsel_opts[this.Tsel_opts.length] = is_selected;
	this.nb_opt_selected += (is_selected?1:0);
}

PersoQuot.prototype.push_rep = function(label,is_selected) {
	this.Treps[this.Treps.length] = label;
	this.Tsel_reps[this.Tsel_reps.length] = is_selected;
	this.nb_rep_selected += (is_selected?1:0);
}

PersoQuot.prototype.UpdateMonth = function(millesime){ 
var i;	
document.getElementById('mois').options.length=0;//clear combo
	for (i=1;i<=12;i++)
	{
		if (document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value!=millesime)
		{
			if (i>=7)
			{
				var newOption = new Option(this.T_mois[i-1],i);
				document.getElementById('mois').options[document.getElementById('mois').options.length] = newOption;
			}
		}
		else if (millesime<2000)
		{
			if (i<=6)
			{
				var newOption = new Option(this.T_mois[i-1],i);
				document.getElementById('mois').options[document.getElementById('mois').options.length] = newOption;
			}
		}
		else
		{
			var newOption = new Option(this.T_mois[i-1],i);
			document.getElementById('mois').options[document.getElementById('mois').options.length] = newOption;
		}
	}
}

PersoQuot.prototype.verif_type = function()
{
	var reg = new RegExp('^[0-9]*$');
	var i;
	if (! document.getElementById('km').value.match(reg))
	{
		return false;
	}
	for (i=0;i<this.Toptions.length;i++)
	{
		if (this.Tsel_opts[i]==1)
		{
			if (! document.getElementById('value_opt'+i).value.match(reg))
			{
				return false;
			}
		}
	}
	for (i=0;i<this.Treps.length;i++)
	{
		if (this.Tsel_reps[i]==1)
		{
			if (! document.getElementById('value_rep'+i).value.match(reg))
			{
				return false;
			}
			if (! document.getElementById('km_rep'+i).value.match(reg))
			{
				return false;
			}
		}
	}
	return true;
}

PersoQuot.prototype.calculate = function()
	{
		//str_url: chaine pour le WS
		//str_url_perm: chaine pour partage url
		
		var i;
		if (!this.verif_type())
		{
			alert('les champs de kilométrage et de prix ne peuvent contenir que des chiffres');
		}
		else
		{
			try
			{
					this.xmlhttp_data = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{ 
				alert('Votre navigateur ne supporte pas ajax !');
			}
			if(this.xmlhttp_data!=null)
			{
				this.xmlhttp_data.onreadystatechange = triggered;
				var str_url = 'ze_proxy.php?ws=get_cote_lc&user=js&password=none&out=js&'+
									'type=perso&dtid='+this.dt_id+'&millesime='+this.millesime+
									'&km='+document.getElementById('km').value+'&firsthand='+(document.getElementById('fh').checked?1:2)+
									'&fdt='+document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value+
									'-'+document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value+
									'&categorie='+this.categorie+'&cote='+this.cote_brute+'&energy='+this.energie+'&'+
									'power='+this.puissance;
	
				var str_url_perm = 'fiche_cote_'+this.categorie+'_flat.php?marque='+this.marque+'&modele='+this.modele+'&millesime='+this.millesime;
				str_url_perm += '&version='+this.version;
				str_url_perm += '&type=perso'+
												'&km='+document.getElementById('km').value+'&fh='+(document.getElementById('fh').checked?1:0)+
												'&fdt='+document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value+
												'-'+document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value;
				var str_options = '';
				for (i=0;i<this.Toptions.length;i++)
				{
					if (this.Tsel_opts[i]==1)
					{
						if (str_options !='')
						{
							str_options += '|';
						}
						str_options += i+'-'+document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value
													+'-'+document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value
													+'-'+document.getElementById('value_opt'+i).value;
					}
				}
				if (str_options != '')
				{
					str_url += '&options='+str_options;
					str_url_perm += '&options='+str_options;
				}
				var str_repairs = '';
				for (i=0;i<this.Treps.length;i++)
				{
					if (this.Tsel_reps[i]==1)
					{
						if (str_repairs !='')
						{
							str_repairs += '|';
						}
						str_repairs += i+'-'+document.getElementById('km_rep'+i).value+'-'+document.getElementById('value_rep'+i).value;
					}
				}
				if (str_repairs != '')
				{
					str_url += '&repairs='+str_repairs;
					str_url_perm += '&reps='+str_repairs;
				}
				//str_url_perm = encodeURI(str_url_perm);
				document.getElementById('div_lien_perm').innerHTML = ' <a href="'+str_url_perm+'#Perso" class="txCouleur2" title="lien permanent de cette cote : ajouter au favoris ou envoyer cette cote par email" onClick="xt_med(\'C\','+this.CategCote+',\'Envoie_cote\',\'A\')" >Lien permanent vers le d&eacute;tail de cette cote</a> '
				document.getElementById('div_lien_perm').style.display='';
				
				var reg1=new RegExp('&w_ve_ve_mileage=[0-9]*&', "g");
				var reg2=new RegExp('&w_ve_ve_firsthand=[a-z]*&', "g");
				var reg3=new RegExp('&date_fdt=[0-9-]*&', "g");
				var reg4=new RegExp('&annee_fdt=[0-9]*&', "g");
				for (i=1;i<=3;i++)
				{
					var annee = document.getElementById('annee').options[document.getElementById('annee').selectedIndex].value;
					var mois = document.getElementById('mois').options[document.getElementById('mois').selectedIndex].value;
					if (mois.length == 1)
					{
						mois = '0'+mois;
					}
					if(document.getElementById('url_depot'+i)){
						document.getElementById('url_depot'+i).href = document.getElementById('url_depot'+i).href.replace(reg1,'&w_ve_ve_mileage='+document.getElementById('km').value+'&');
						document.getElementById('url_depot'+i).href = document.getElementById('url_depot'+i).href.replace(reg2,'&w_ve_ve_firsthand='+(document.getElementById('fh').checked?'yes':'')+'&');
						document.getElementById('url_depot'+i).href = document.getElementById('url_depot'+i).href.replace(reg3,'&date_fdt='+annee+'-'+mois+'-&');
						document.getElementById('url_depot'+i).href = document.getElementById('url_depot'+i).href.replace(reg4,'&annee_fdt='+annee+'&');
					}
				}
				this.xmlhttp_data.open("GET", str_url);
				this.xmlhttp_data.send(null);
			}
		}
		var dspl_msg = false;
		for(i=0;i<this.Tsel_opts.length;i++){
			if(this.Tsel_opts[i]==1){
				if(document.getElementById('value_opt'+i).value==''){
					dspl_msg = true;
					document.getElementById('value_opt'+i).style.border='1px solid red';
				}
				else
				{
					document.getElementById('value_opt'+i).style.border = '';
				}
			}
	  }
	  if(dspl_msg&&document.getElementById('message_prix')!=null){
 			document.getElementById('message_prix').innerHTML = 'Veuillez renseigner le prix d\'achat'; 
		}
		else if(document.getElementById('message_prix')!=null)
		{
			document.getElementById('message_prix').innerHTML = '';
		}
 }

PersoQuot.prototype.saisie_opt = function()
{
	var i;
	var nb_opt = 0;
	var str_html = '';
	for (i=0;i<this.Toptions.length;i++)
	{
		if (nb_opt==0)
		{
			str_html = '<table style="text-align:center" width="100%"><tr>';
		}
		nb_opt += 1;
		str_html += '<td '+(this.Tsel_opts[i]==0 ? 'style=\"background-color: #FFFFFF;\"':'style=\"background-color: #999999;\"')+' onMouseOver='+(this.Tsel_opts[i]==0 ? '\"this.style.textDecoration=\'underline\';\" onMouseOut=\"this.style.textDecoration=\'none\';\"':'')+' ><a style=\"text-decoration: none;display:block;width:100%;height:100%\"'+(this.Tsel_opts[i]==0 ? 'href=\"javascript:pq.add_opt(\''+i+'\')':'')+'\">'+this.Toptions[i]+'</a></td>';
		if ((nb_opt % 4) == 0 )
		{
			str_html += '</tr><tr>';
		}
	}
	if (nb_opt>0)
	{
		str_html += '</table>';
	}
	document.getElementById('lien_opt').style.display='none';
	document.getElementById('saisie_opt').innerHTML = str_html;
	document.getElementById('mask_opt').style.display='';
}

PersoQuot.prototype.mask_opt = function()
{
	document.getElementById('saisie_opt').innerHTML='';
	document.getElementById('mask_opt').style.display='none';
	document.getElementById('lien_opt').style.display='';
}

PersoQuot.prototype.add_opt = function(indice)
{
	this.nb_opt_selected++;
	document.getElementById('saisie_opt').innerHTML='';
	document.getElementById('mask_opt').style.display='none';
	if (this.nb_opt_selected != this.Toptions.length)
	{
		document.getElementById('lien_opt').style.display='';
	}
	this.Tsel_opts[indice]=1;
	document.getElementById('opt'+indice).style.display='inline';
}

PersoQuot.prototype.remove_opt = function(indice)
{
	this.nb_opt_selected--;
	this.Tsel_opts[indice]=0;
	document.getElementById('opt'+indice).style.display='none';
	if (document.getElementById('saisie_opt').innerHTML != '')
	{
		this.saisie_opt()
	}
	else
	{
		document.getElementById('lien_opt').style.display='';
	}
	var dspl_msg = false;
	for(i=0;i<this.Tsel_opts.length;i++){
		if(this.Tsel_opts[i]==1){
			if(document.getElementById('value_opt'+i).value==''){
				dspl_msg = true;
				document.getElementById('value_opt'+i).style.border='1px solid red';
			}
			else
			{
				document.getElementById('value_opt'+i).style.border = '';
			}
		}
	}
	if(dspl_msg&&document.getElementById('message_prix')!=null){
 		document.getElementById('message_prix').innerHTML = 'Veuillez renseigner le prix d\'achat'; 
	}
	else if(document.getElementById('message_prix')!=null)
	{
		document.getElementById('message_prix').innerHTML = '';
	}
}

PersoQuot.prototype.saisie_rep = function()
{
	var i;
	var nb_rep = 0;
	var str_html = '';
	for (i=0;i<this.Treps.length;i++)
	{
		if (nb_rep==0)
		{
			str_html = '<table style="text-align:center" width="100%"><tr>';
		}
		nb_rep += 1;
		str_html += '<td '+(this.Tsel_reps[i]==0 ? 'style=\"background-color: #FFFFFF;\"':'style=\"background-color: #999999;\"')+' onMouseOver='+(this.Tsel_reps[i]==0 ? '\"this.style.textDecoration=\'underline\';\" onMouseOut=\"this.style.textDecoration=\'none\';\"':'')+' ><a style=\"text-decoration: none;display:block;width:100%;height:100%\"'+(this.Tsel_reps[i]==0 ? 'href=\"javascript:pq.add_rep(\''+i+'\')':'')+'\">'+this.Treps[i]+'</a></td>';
		if ((nb_rep % 4) == 0 )
		{
			str_html += '</tr><tr>';
		}
		
	}
	if (nb_rep>0)
	{
				str_html += '</table>';
	}
	document.getElementById('saisie_rep').innerHTML = str_html;
	document.getElementById('lien_rep').style.display='none';
	document.getElementById('mask_rep').style.display='';
}

PersoQuot.prototype.mask_rep = function()
{
	document.getElementById('saisie_rep').innerHTML='';
	document.getElementById('mask_rep').style.display='none';
	document.getElementById('lien_rep').style.display='';
}

PersoQuot.prototype.add_rep = function(indice)
{
	this.nb_rep_selected++;
	document.getElementById('saisie_rep').innerHTML = '';
	document.getElementById('mask_rep').style.display='none';
	if (this.nb_rep_selected != this.Treps.length)
	{
		document.getElementById('lien_rep').style.display='';
	}
	this.Tsel_reps[indice]=1;
	document.getElementById('rep'+indice).style.display='inline';
}

PersoQuot.prototype.remove_rep = function(indice)
{
	this.nb_rep_selected--;
	this.Tsel_reps[indice]=0;
	document.getElementById('rep'+indice).style.display='none';
	if (document.getElementById('saisie_rep').innerHTML!='')
	{
		this.saisie_rep();
	}
	else
	{
		document.getElementById('lien_rep').style.display='';
	}
}

function triggered()
	{
		if((pq.xmlhttp_data.readyState == 4) && (pq.xmlhttp_data.status == 200))
		{
			eval(pq.xmlhttp_data.responseText);
			var obj = document.getElementById('valeur_cote_perso');
			var str_html = '<table width="350" border="0" cellpadding="0" cellspacing="0" class="tableCote"><tr><td width="44" align="left"><img src="'+pq.pathStatic+'images/lc_fr/egal_cote.gif" border="0" /></td><td width="276">';
			var cote_perso = parseInt(pq.cote_brute);
			
			str_html +='<span class="la_cote_brute">'+parseInt(pq.cote_brute)+' &euro; </span><span class="la_cote_desc" style="">Cote brute</span><br />'
			if (T_out['appr_km'] && T_out['appr_km']!=0)
			{
				str_html += ''+(T_out['appr_km']<0?'<span class="la_cote_enleve"><span class="la_cote_moins">-</span>':'<span class="la_cote_ajout"><span class="la_cote_plus">+</span>')+Math.abs(T_out['appr_km'])+' &euro; </span><span class="la_cote_desc">'+(T_out['appr_km']<0?'Moins':'Plus')+'-value kilométrique</span><br/>';
				cote_perso += parseInt(T_out['appr_km']);
			}
			if (T_out['appr_pm'] && T_out['appr_pm']!=0)
			{
				str_html += ''+(T_out['appr_pm']<0?'<span class="la_cote_enleve"><span class="la_cote_moins">-</span>':'<span class="la_cote_ajout"><span class="la_cote_plus">+</span>')+Math.abs(T_out['appr_pm'])+' &euro; </span><span class="la_cote_desc">'+(T_out['appr_pm']<0?'Moins':'Plus')+'-value 1ere main</span><br/>';
				cote_perso += parseInt(T_out['appr_pm']);
			}
			if (T_out['appr_mec'] && T_out['appr_mec']!=0)
			{
				str_html += ''+(T_out['appr_mec']<0?'<span class="la_cote_enleve"><span class="la_cote_moins">-</span>':'<span class="la_cote_ajout"><span class="la_cote_plus">+</span>')+Math.abs(T_out['appr_mec'])+' &euro; </span><span class="la_cote_desc">'+(T_out['appr_mec']<0?'Moins':'Plus')+'-value de mise en circulation</span><br/>';
				cote_perso += parseInt(T_out['appr_mec']);
			}
			if (T_out['opt'])
			{
				j=0;
				while (T_out['opt']['opt'+j])
				{
					if (T_out['opt']['opt'+j]['appr'] != 0)
						str_html += ''+(T_out['opt']['opt'+j]['appr']<0?'<span class="la_cote_enleve"><span class="la_cote_moins">-</span>':'<span class="la_cote_ajout"><span class="la_cote_plus">+</span>')+Math.abs(T_out['opt']['opt'+j]['appr'])+' &euro; </span><span class="la_cote_desc">'+(T_out['opt']['opt'+j]['appr']<0?'Moins':'Plus')+'-value '+T_out['opt']['opt'+j]['label']+'</span><br/>';
					else
						str_html += '<span class="la_cote_brute">0 &euro; </span><span class="la_cote_desc"> '+T_out['opt']['opt'+j]['label']+'</span><br/>';
					cote_perso += parseInt(T_out['opt']['opt'+j]['appr']);
					j += 1;
				}
			}
			if (T_out['rep'])
			{
				j=0;
				while (T_out['rep']['rep'+j])
				{
					if (T_out['rep']['rep'+j]['appr'] != 0)
						str_html += ''+(T_out['rep']['rep'+j]['appr']<0?'<span class="la_cote_enleve"><span class="la_cote_moins">-</span>':'<span class="la_cote_ajout"><span class="la_cote_plus">+</span>')+Math.abs(T_out['rep']['rep'+j]['appr'])+' &euro; </span><span class="la_cote_desc">'+(T_out['rep']['rep'+j]['appr']<0?'Moins':'Plus')+'-value '+T_out['rep']['rep'+j]['label']+'</span><br/>';
					else
						str_html += '<span class="la_cote_brute">0 &euro; </span><span class="la_cote_desc"> '+T_out['rep']['rep'+j]['label']+'</span><br/>';
					cote_perso += parseInt(T_out['rep']['rep'+j]['appr']);
					j += 1;
				}
				str_html += '<br/>';
			}
			str_html += '</td></tr></table>';
			if (cote_perso > 1.3 * pq.cote_brute)
			{
				cote_perso = Math.round(1.3 * pq.cote_brute);
			}
			else if (cote_perso < 0.7 * pq.cote_brute)
			{
				cote_perso = Math.round(0.7 * pq.cote_brute);
			}
			obj.innerHTML = str_html;
			document.getElementById('valeur_cote_perso').style.display='';
			document.getElementById('cote_perso').innerHTML=cote_perso;
		} 
	}
