//////////////////////////////////////////////////////////////////////////////////////////
//	CSysBuilder JS Library (C) ComputerSales
//////////////////////////////////////////////////////////////////////////////////////////
csb_container_id='csb_container';
csb_config_table_id='csb_config';
csb_loader_image='themes/default/images/loader_small.gif';

csb_save_btn_innerHTML='';

function csb_SelectItem(item_id)
{
	var radio=document.getElementById(item_id);
	if(radio)
		radio.checked=true;
}

function csb_GetSelectedItems()
{
	var radios=document.getElementsByTagName('input');
	var res=new Array();
	for(var i=0;i<radios.length;i++)
	{
		if(radios[i].name=='vsec_items')
			if(radios[i].checked)
				res.push(radios[i]);
	}
	
	return res;
}

function csb_CancelSelection(categ)
{
	var id='container_'+categ+'_cancel_btn';
	ajax_CreateLoaderImage(document.getElementById(id), null, csb_loader_image);
	
	pajax(csb_SelectionCanceled,'csysbuilder.php', 'op=cancel_selection');
}

function csb_SelectionCanceled(server_response)
{
	response=ajax_ParseResponse(server_response);
	document.getElementById(csb_container_id).innerHTML=response['message'];
}

function csb_SelectComponent(categ)
{
	var sel=csb_GetSelectedItems();
	if(sel.length<1)
	{
		alert('Nicio componentă selectată.\nEfectuează o selecţie şi încearcă din nou.');
		return false;
	}

	var id='container_'+categ+'_add_btn';
	ajax_CreateLoaderImage(document.getElementById(id), null, csb_loader_image);
	
	var itemid=sel[0].id;

	pajax(csb_ComponentSelected,'csysbuilder.php', 'op=select_component'+
							'&categ='+encodeURIComponent(categ)+
							'&itemid='+encodeURIComponent(itemid)
							);
}

function csb_ComponentSelected(server_response)
{
	response=ajax_ParseResponse(server_response);
	document.getElementById(csb_container_id).innerHTML=response['message'];
}

function csb_NoSelection(categ)
{
	if(categ=='placa-de-baza')
		if(!confirm('Dacă nu alegi o placă de bază, configuratorul NU mai poate garanta potrivirea componentelor!\n\nEşti sigur că renunţi la placa de bază?'))
			return;
			
	var id='container_'+categ+'_nosel_btn';
	ajax_CreateLoaderImage(document.getElementById(id), null, csb_loader_image);

	pajax(csb_ComponentSelected,'csysbuilder.php', 'op=select_component'+
							'&categ='+encodeURIComponent(categ)+
							'&itemid=null'
							);
}

function csb_UpdateComponent(elemid,url,reset_page)
{
	if(reset_page && elemid.indexOf('placa-de-baza')>=0 && document.getElementById('container_procesor')!=null)
	{
		if(!confirm('Re-configurarea plăcii de bază presupune RESETAREA întregii configuraţii, în iteresul menţinerii compatibilităţii între componente!\n\nEşti sigur că re-configurezi placa de bază?'))
		{
				return;
		}
		else
		{
			csb_ResetConfig(true);
			return;
		}
	}
	
	ajax_CreateLoaderImage(document.getElementById(elemid+'_waiter'), null, csb_loader_image);
	pajax(csb_ComponentUpdated,'csysbuilder.php', 'op=update_component'+
								'&url='+encodeURIComponent(url)+
								'&elemid='+encodeURIComponent(elemid)+
								'&reset_page='+encodeURIComponent(reset_page));
}

function csb_ComponentUpdated(server_response)
{	
	var response=ajax_ParseResponse(server_response);
	ajax_DestroyLoaderImage(response['elemid']+'_waiter');
	
	var container=document.getElementById(response['elemid']);
	container.innerHTML=response['message']+
						response['data'];
}

function csb_ResetConfig(force)
{
	if(!force)
		if(!confirm('Toate alegerile făcute vor fi anulate şi va trebui s-o iei de la început.\n\nEşti sigur că vrei să resetezi configuraţia?'))
			return;
	
	reset_btn=document.getElementById('csb_reset_config_btn');
	if(reset_btn)
		ajax_CreateLoaderImage(reset_btn,null,csb_loader_image);
	pajax(csb_ComponentSelected,'csysbuilder.php', 'op=reset_config');
	window.scrollTo(0,0);
}

function csb_PreSaveConfig()
{
	document.getElementById('csb_save_ctrls').style.display='block';
	var ps=getPageSize();
	window.scrollTo(0,ps[2]);
}

function csb_SaveConfig()
{
	var btn=document.getElementById('csb_save_config_btn');
	csb_save_btn_innerHTML=btn.innerHTML;
	btn.innerHTML='';
	btn.className='buttonlight';
	btn.onclick='';
	ajax_CreateLoaderImage(document.getElementById('csb_save_config_btn'),null,csb_loader_image);
	btn.innerHTML+='Salvăm configuraţia, apoi vei fi redirecţionat spre pagina acesteia...'
	
	var author=document.getElementById('csb_config_author').value;
	var desc=document.getElementById('csb_config_desc').value;
	
	pajax(csb_ConfigSaved,'csysbuilder.php', 'op=save_config'+
								'&author='+encodeURIComponent(author)+
								'&description='+encodeURIComponent(desc));
}

function csb_ConfigSaved(server_response)
{
	var btn=document.getElementById('csb_save_config_btn');
	
	response=ajax_ParseResponse(server_response);
	switch(response['status'])
	{
		case 'success':
				btn.innerHTML='';
				ajax_CreateLoaderImage(btn,null,csb_loader_image);
				btn.innerHTML+=response['message'];
				window.location=response['data'];
		break;
		
		case 'error':
			btn.innerHTML=csb_save_btn_innerHTML;
			btn.className='buttonhigh';
			btn.onclick=csb_SaveConfig;

			document.getElementById('csb_save_config_msg').innerHTML='<div class="error">'+response['message']+'</div>';
			
			document.getElementById('csb_config_author').style.backgroundColor='#FFFFFF';
			document.getElementById('csb_config_desc').style.backgroundColor='#FFFFFF';
			
			elemids=response['elemid'].split(',');
			
			for(var i=0;i<elemids.length;i++)
				document.getElementById(elemids[i]).style.backgroundColor='#FFF3F2';
		break;
	}
}

csb_current_slider_id=null;
csb_slider_sum=0;
csb_slider_prices=new Array();

function csb_CreateSliders()
{
	$(function() {
		$("#csb_sliders > div").each(function() {
			var value = parseInt($(this).text());
			$(this).empty();
			$(this).slider({
				value: value,
				animate: true,
				slide: function(event, ui) {
											csb_current_slider_id=$(this).attr('id');
											return csb_CanSlide(ui);
										}
			})
		});
	});
}

function csb_CanSlide(ui)
{
	var selector='#'+csb_current_slider_id;
	var old=$(selector).slider('value');
	
	if(old<ui.value)
		var direction='up';
		else
		var direction='down';
	
	var old_total=csb_SliderSum();
	
	var total=csb_SliderSum()-old+ui.value;
	
	var slider_price_perc=(100-total)/100;
	
	if(total>100)
	{
		if(direction=='up')
		{
			$('#csb_preset_status').attr('className', 'error');
			$('#csb_preset_status').html('Nu merge mai mult: <b>total '+old_total+'%</b>. Scade din altă parte mai întâi.');
			return false;
		}
	}
	else
	{
		$('#csb_preset_status').attr('className', 'tip');
		$('#csb_preset_status').html('Mai dispui de <b>'+(100-total)+'% <span class="important">~ '+(Math.round(slider_price_perc*csb_AutoPrice()))+' RON</span></b>.');
		$('#'+csb_current_slider_id+'_perc').html(ui.value+'%')
		$('#'+csb_current_slider_id+'_price').html((Math.round(ui.value/100*csb_AutoPrice()))+' RON');
		return true;
	}
}

function csb_SliderSum()
{
	csb_slider_sum=0;
	$('#csb_sliders > div').each(function(){
									csb_slider_sum+=$(this).slider('value');
								});
	return csb_slider_sum;
}


function csb_SliderUpdateSums()
{
	$('#csb_sliders > div').each(function(){
									$('#'+$(this).attr('id')+'_price').html((Math.round($(this).slider('value')/100*csb_AutoPrice()))+' RON');
								});	
}

function csb_SliderGetPrices()
{	
	csb_slider_prices=new Array();
	$('#csb_sliders > div').each(function(){
									parsed=$(this).attr('id').split('_');
									var comp=parsed[2];
									csb_slider_prices[comp]=parseInt($('#'+$(this).attr('id')+'_price').html());
								});		
	return csb_slider_prices;
}

function csb_SliderGetPricesPOST()
{	
	var post=new Array();
	csb_slider_prices=new Array();
	$('#csb_sliders > div').each(function(){
									parsed=$(this).attr('id').split('_');
									var comp=parsed[2];
									post.push(comp+'='+parseInt($('#'+$(this).attr('id')+'_price').html()));
								});		
	return post.join('&');
}

function csb_AutoPrice()
{
	return $('#csb_auto_price').attr('value');
}

function csb_AutoPriceKeyUp(event)
{
	csb_SliderUpdateSums();
}

function csb_AutoPriceKeyDown(event)
{
	csb_SliderUpdateSums();
}

function csb_ChangePreset(elemid)
{
	var preset=elemid.split('_')[1];
	ajax_CreateLoaderImage(document.getElementById(elemid).parentNode, null, csb_loader_image);
	pajax(csb_PresetChanged,'csysbuilder.php', 'op=change_preset'+
								'&elemid='+encodeURIComponent(elemid)+
								'&preset='+encodeURIComponent(preset)+
								'&price='+encodeURIComponent($('#csb_auto_price').attr('value')));	
}

function csb_PresetChanged(server_response)
{
	var response=ajax_ParseResponse(server_response);
	document.getElementById('csb_presets_container').innerHTML=response['data'];
	csb_CreateSliders();
}

function csb_AutoConfigurate(elemid)
{	
	var prices=csb_SliderGetPricesPOST();

	var btn=document.getElementById('auto_configurate_btn');
	btn.className='buttonlight';
	btn.innerHTML='Configurăm... ';
	btn.onclick='';
	
	var platf=document.getElementById('csb_auto_platform');
	var video=document.getElementById('csb_auto_video');
	
	ajax_CreateLoaderImage(document.getElementById(elemid), null, csb_loader_image);
	
	pajax(csb_ConfiguratedAuto,'csysbuilder.php', 'op=do_auto_config'+
								'&elemid='+encodeURIComponent(elemid)+
								'&prices='+encodeURIComponent(prices)+
								'&platf='+encodeURIComponent(platf.options[platf.selectedIndex].value)+
								'&video='+encodeURIComponent(video.options[video.selectedIndex].value));
}

function csb_ConfiguratedAuto(server_response)
{
	var response=ajax_ParseResponse(server_response);
	ajax_DestroyLoaderImage(response['elemid']);
	var btn=document.getElementById('auto_configurate_btn');
	btn.innerHTML=response['message'];
	window.location=response['data'];
}