var currentGalleryStyleId = null;
var sr_data = {
	local:{},
	conf:{},
	defaultTab:'',
	defaultStyleId:''
};

var tabIndex = {photos:0, colors:1, interior:2, exterior:3, video_new:4, video_testdrive:5}; 

function srSetData(prop, data)
{
	sr_data[prop] = data;
}

function getTechnicalSpecificationValue(ts, groupId, headerId, titleId)
{
	for (var item in ts ){
		if (ts[item].groupId == groupId && ts[item].headerId == headerId && ts[item].titleId == titleId) {
			return ts[item].value;
		}
	}
	return false;
}


function srLoading()
{
	var ids = ['sr_engine', 'sr_transmission', 'sr_city_mpg', 'sr_highway_mpg', 'sr_msrp'];
	for (var i=0; i<ids.length; i++) {
		$j('#'+ids[i]).text('');
	}
	$j('.loading_configuration_bar').show();
	$j('#tabs').hide();
	$j('#tabs2').hide();
	$j('#sr_style').attr('disabled', 'disabled');
	for (i=0;i<6;i++){
		$j('#tabs > ul').tabs('disable', i);
	}
}

function srGetConfigurationByStyleId(id_style)
{
	if (typeof sr_data.conf[id_style] != 'object') {
		srLoading();
		$j.post('vehicle/data', {data:'style', id_style:id_style}, function(data){
			sr_data.conf[data.style.styleId] = data;
			srShowConfiguration(data);
			$j('.loading_configuration_bar').hide();
			srShowMedia(id_style);
		}, 'json');
	} else {
		srShowConfiguration(sr_data.conf[id_style]);
	}
}

function srShowColors(colors)
{
	$j('#color-swatch').html('');
	var index = 0;
	for (var i in colors){
		var imgPhoto = new Image();
		imgPhoto.src = colors[i].photo;
		var img = new Image();
		img.displaySrc = colors[i].photo;
		img.src = colors[i].swatch;
		img.onmouseover = function() {
			$j('#color-display').attr('src', this.displaySrc);
			$j('#color-swatch img').removeClass('selected');
			$j(this).addClass('selected');
		}
		$j(img).appendTo('#color-swatch');
		index++;
	}
	$j('#color-swatch img:first').mouseover();
}

function srShowMedia(styleId)
{
	$j('#tabs .ui-tabs-nav').unbind('tabsselect');
	$j('#tabs .ui-tabs-nav').bind('tabsselect', function(event, ui) {
		switch (ui.tab.id) {
		case 'a_photos': srShowPhotos(styleId); break;
		case 'a_colors': srShowColors(sr_data.local.style[styleId].colors); break;
		}
	});
	$j('#tabs').show();
	
	// Shop & Explore
	var msrp = parseFloat(sr_data.conf[styleId].configuredTotalMsrp.replace('$', '').replace(',', ''));
	srShowShopAndExplore(sr_data.local.style[styleId].shop_links, msrp);
	
	// PHOTOS
	
	if (sr_data.defaultTab == 'photos' || sr_data.defaultTab ==  '') {
		srShowPhotos(styleId);
		$j('#tabs > ul').tabs('enable', 0);
		$j('#tabs > ul').tabs('select', 0);
	} else {
		for (var i in sr_data.local.style[styleId].stills_photo) {
			$j('#tabs > ul').tabs('enable', 0);
			break;
		}
	}
	// Colors
	if (sr_data.defaultTab == 'colors') {
		srShowColors(sr_data.local.style[styleId].colors);
		$j('#tabs > ul').tabs('enable', 1);
		$j('#tabs > ul').tabs('select', 1);
	} else {
		var enabled = false;
		for (var i in sr_data.local.style[styleId].colors) {
			$j('#tabs > ul').tabs('enable', 1);
			enabled = true;
			break;
		}
		if (!enabled) {
			$j('#tabs > ul').tabs('disable', 1);
		}
	}
	
	//
	$j('#interior_swf').hide();
	$j('#interior p.error').hide();
	if (typeof sr_data.local.style[styleId].interior_swf == 'string') {
		$j('#interior_swf').show();
		$j('#tabs > ul').tabs('enable', 2);
		if (sr_data.defaultTab == 'interior') {
			$j('#tabs > ul').tabs('select', 2);
		}
		var so_view = new SWFObject(sr_data.local.style[styleId].interior_swf, "interior_swf", "320", "240", "8", "#FFFFFF");
		so_view.addParam("wmode", "opaque");
		so_view.useExpressInstall('flash/expressinstall.swf');
		so_view.write('interior_swf');
	} else {
		$j('#interior p.error').show();
	}
	$j('#exterior_swf').hide();
	$j('#exterior p.error').hide();
	if (typeof sr_data.local.style[styleId].exterior_swf == 'string') {
		$j('#exterior_swf').show();
		$j('#tabs > ul').tabs('enable', 3);
		if (sr_data.defaultTab == 'exterior') {
			$j('#tabs > ul').tabs('select', 3);
		}
		var so_view = new SWFObject(sr_data.local.style[styleId].exterior_swf, "exterior_swf", "320", "240", "8", "#FFFFFF");
		so_view.addParam("wmode", "opaque");
		so_view.useExpressInstall('flash/expressinstall.swf');
		so_view.write('exterior_swf');
	} else {
		$j('#exterior p.error').show();
	}
	srShowVideo(sr_data.local.style[styleId]);
}

function srShowShopAndExplore(links, msrp)
{
	var linkOrder = ['ebrochure', 'car_loan_app', 'trade_appraisal', 'print', 'more_info', 'quick_quite', 'test_drve'];
	$j('#showroom_links').empty();
	for (var i=0; i<linkOrder.length; i++) {
		var name = linkOrder[i];
		if (typeof links[name] == 'object') {
			$j('#showroom_links').append('<li><a href="'+links[name].href+(name == 'car_loan_app' ? msrp : '')+'" title="'+links[name].text+'"'+links[name].attr+'><span>'+links[name].text+'</span></a></li>');
		}
	}
	tb_init('a.thickbox, area.thickbox, input.thickbox');
}

function srPrint()
{
	var styleId = $j('#sr_style option:selected').val();
	if (typeof sr_data.conf[styleId] != 'object') {
		alert('The configuration can take some time to load. Please be patient...');
		return false;
	}
	var W = 900;
	var H = 600;
	var top = (screen.height-H)/2;
	var left = (screen.width-W)/2;
	var params = 'titlebar=no,Toolbar=0,location=0,Menubar=0,resizable=0,Scrollbars=yes,screenX='
		+left+',screenY='+top+',top='+top+',left='+left+
		',width='+W+',height='+H;
	var wnd = window.open('', 'compare_print', params);
	wnd.document.writeln('<html>');
	wnd.document.writeln('<head>');
	wnd.document.writeln('<title>Print Preview</title>');
	wnd.document.writeln('<base href="'+BASE_URL+'/">');
	wnd.document.writeln('<link href="css/showroom_print.css" type="text/css" rel="stylesheet">');
	wnd.document.writeln('<style type="text/css" media="print">.print_btn {display:none}</style>');
	wnd.document.writeln('</head>');
	wnd.document.writeln('<body>');
	wnd.document.writeln('<h1>'+document.title+'</h1>');
	//wnd.document.writeln('<h2>Vehicle Details</h2>');
	var tmp_container = $j('<div id="tmp_container"></div>');
	$j('#sr_overview').clone().appendTo(tmp_container);
	$j('#showroom_links, .loading_configuration_bar', tmp_container).remove();

	//var car_image = $j('#tabs #photos #gallery div.car_gallery_img', tmp_container).html();

	var car_image = '<img style="width: 320px; height: 240px;" src="' + sr_data.local.style[styleId].stills_photo[0] + '"/>';
	$j('#tabs', tmp_container).replaceWith(car_image);
	
	var bodyStyle = $j('#sr_style option:selected', tmp_container).text();
	var tdBodyStyle = $j('#sr_style', tmp_container).get(0).parentNode;
	$j(tdBodyStyle).text(bodyStyle);
	wnd.document.writeln(tmp_container.html());
	wnd.document.writeln('<h2>Vehicle Configuration</h2>');
	
	$j('#tabs2 > ul a').each(function() {
		wnd.document.writeln('<h3>'+$j(this).text()+'</h3>');
		var newTab = $j(this.hash).clone();
			$j('table', newTab).addClass('data');
		wnd.document.writeln(newTab.html());
	});
	
	
	wnd.document.writeln('<p><center><input type="button" class="print_btn" value="PRINT" onclick="window.print();"></center></p>');
	wnd.document.writeln('</body>');
	wnd.document.writeln('</html>');
	wnd.document.close();
	wnd.print();
	return false;
}

function srShowConfiguration(conf)
{
	$j('#sr_style').removeAttr('disabled');
	
	// MSRP
	$j('#sr_msrp').text(conf.configuredTotalMsrp);
	// Transmision
	var transmissionType = getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 15, 52);
	var transmissionDescription = getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 15, 53);
	if (transmissionType && transmissionDescription) {	
		$j('#sr_transmission').text(transmissionType +' Speed '+ transmissionDescription);
	}
	//City MPG
	$j('#sr_city_mpg').text(getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 14, 26));
	if ($j('#sr_city_mpg').text() == "") {
		$j('#sr_city_mpg').text('N/A');
	}
	//Highway MPG
	$j('#sr_highway_mpg').text(getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 14, 27));
	if ($j('#sr_highway_mpg').text() == "") {
		$j('#sr_highway_mpg').text('N/A');
	}
	//Engine
	var engineType = getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 13, 41);
	var displacement = getTechnicalSpecificationValue(conf.technicalSpecifications, 6, 13, 42);
	$j('#sr_engine').text(engineType + ' ' + displacement);
	
	srShowSpecifications(conf.technicalSpecifications);
	srShowFeatures(conf.standardEquipment);
	$j('#tabs2').show();
	
	// Scroll To Tab
	var scrollTabs = {'interior':'1', 'exterior':'2', 'video_new':'3', 'video_testdrive':'4'};
	if (sr_data.defaultTab!='' && typeof scrollTabs[sr_data.defaultTab] == 'string'  && $j('#'+sr_data.defaultTab).size()){
		if (typeof tabIndex[sr_data.defaultTab] == 'number') {
			$j('#tabs > ul').tabs('enable', tabIndex[sr_data.defaultTab]); 
			$j('#tabs > ul').tabs('select', tabIndex[sr_data.defaultTab]); 
		}
		if (sr_data.defaultTab == 'specifications' || sr_data.defaultTab == 'features') {
			var obj = $j('#tabs2').get(0);
		} else {
			var obj = $j('#tabs').get(0);
		}
		var pos = getElementPos(obj);
		window.scrollTo(0, pos.y-40);
	}
}

function getElementPos(obj){
	var l = 0;
	var t = 0;
	var w = obj.offsetWidth;
	var h = obj.offsetHeight;
	while (obj) {
		l += obj.offsetLeft;
		t += obj.offsetTop;
		if ((obj.tagName != "TABLE") && (obj.tagName != "BODY")) {
			l += (obj.clientLeft)?obj.clientLeft:0;
			t += (obj.clientTop)?obj.clientTop:0;
		}
		obj = obj.offsetParent;
	}
	var res = new Object();
	res.x = l;
	res.y = t;
	res.left = l;
	res.top = t;
	res.w = w;
	res.h = h;
	res.width = w;
	res.height = h;
	return res;
}

function srShowVideo(data)
{
	$j('#video_1onone').hide();
	$j('#video_new p.error').hide();
    var config = "{ autoBuffering: true, initialScale: 'scale', loop: true, autoRewind: true, showMenu: false, showFullScreenButton: false, playList: [ { url: '{1}', overlay: 'img/click_arrow_big.png' }, { url: '{0}', autoPlay: false } ] }";
	if (typeof data.video_1onone == 'string') {
		$j('#video_1onone').show();
		var movie_name = data.video_1onone;
        var thumb_name = data.video_1onone_thumb;
		var so = new SWFObject("flash/FlowPlayerClassic.swf", "video_player", "480", "384", "7", "#FAFAFA");
		so.addParam("wmode", "opaque");
    	so.addVariable('config', config.replace('{0}', movie_name).replace('{1}', thumb_name));
		so.write('video_1onone');
		$j('#tabs > ul').tabs('enable', 4);
		if (sr_data.defaultTab == 'video_new') {
			$j('#tabs > ul').tabs('select', 4);
		}
	} else {
		$j('#tabs > ul').tabs('disable', 4);
		$j('#video_new p.error').show();
	}
	$j('#video_top200').hide();
	$j('#video_testdrive p.error').hide();
	if ((typeof data.video_top200 == 'string') || (typeof data.video_1onone == 'string')) {
		$j('#video_top200').show();
        var movie_name = data.video_top200;
        var thumb_name = data.video_top200_thumb;
        if (typeof data.video_top200 != 'string') {
            movie_name = data.video_1onone;
            thumb_name = data.video_1onone_thumb;
        }
		var so = new SWFObject("flash/FlowPlayerClassic.swf", "video_player2", "480", "384", "7", "#FAFAFA");
		so.addParam("wmode", "opaque");
    	so.addVariable('config', config.replace('{0}', movie_name).replace('{1}', thumb_name));
		so.write("video_top200");
		$j('#tabs > ul').tabs('enable', 5);
		if (sr_data.defaultTab == 'video_testdrive') {
			$j('#tabs > ul').tabs('select', 5);
		}
	} else {
		$j('#tabs > ul').tabs('disable', 5);
		$j('#video_testdrive p.error').show();
	}
}

function srShowSpecifications(ts)
{
	var htmlContent = '<table width="100%">';
	var headerId = 0;
	var index = 0;
	for (var i in ts){
		var doublesClass = 'row0';
		if (index%2 == 0) {
			doublesClass = 'row1';
		}
		if (ts[i].value != '' && ts[i].value != null && ts[i].value != undefined) {
			if (ts[i].headerId != headerId) {
				htmlContent += '<tr><td colspan="2" class="spec_header">' + ts[i].headerName + '</td></tr>';
				headerId = ts[i].headerId;
			}
			htmlContent += '<tr class="'+doublesClass+'">' +
				'<td>' + ts[i].titleName + '</td>' +
				'<td>' + ts[i].value + '</td>' +
			'</tr>';
			index++;
		}
	}
	htmlContent += '</table>'
	$j('#specifications').html(htmlContent);
	$j('#tabs2 > ul').tabs('enable', 0);
}

function srShowFeatures(fa)
{
	var htmlContent = '<table>';
	var headerId = 0;
	var index = 0;
	
	for (var i in fa){
		var doublesClass = 'row0';
		if (index%2 == 0) {
			doublesClass = 'row1';
		}
		if (fa[i].headerId != headerId) {
			htmlContent += '<tr class="spec_header">';
			htmlContent += '<td>' + fa[i].headerName + '</td>';
			headerId = fa[i].headerId;
			htmlContent += '</tr>';
		}
		htmlContent += '<tr class="'+doublesClass+'">';
		htmlContent += '<td>' + fa[i].description + '</td>';
		htmlContent += '</tr>';
		index++;
	}
	htmlContent += '</table>'
	$j('#features').html(htmlContent);
	$j('#tabs2 > ul').tabs('enable', 1);
}

function srShowPhotos(styleId)
{
	if (currentGalleryStyleId != styleId) {
		currentGalleryStyleId = styleId;

		$j('#gallery').load(CURR_PAGE, {'styleId': styleId, 'action': 'gallery_tpl'}, function(responseText, textStatus, XMLHttpRequest){
		    $j('#image_descr').show();
		    if (responseText != '') {
		    	var carGallery = new TCarGallery('car_gallery', {
		    	    formURL: BASE_URL + '/' + CURR_PAGE + '?action=gallery&styleId=' + styleId + '&index={INDEX}&keepThis=false&TB_iframe=true&width=640&height=580',
		    	    index: 0,
		    	    cntThumbsInRow:7,
		    	    cntVisibleThumbs:14,
		    	    imgType: 'stills',
		    	    imgW: 320,
		    	    imgH: 240,
		    	    enableClickImage: true
		    	});
		    } else {
		    	$j('#image_descr').hide();
		    	$j('#gallery').html('<div class="no_photo"><img src="img/car_nophoto_320.gif"></div>');
		    }
		});
	}
	$j('#tabs > ul').tabs('enable', 0);
}

function srInitStyleSelect(styles)
{
	$j('#sr_style').html('');
	$j.each(styles, function(i, item){
		var opt = $j('<option></option>').val(i).text(item.stylename);
		if (sr_data.defaultStyleId !='' && sr_data.defaultStyleId == i){
			$j(opt).attr('selected', 'selected');
		}
		$j(opt).appendTo('#sr_style')
	});
	//alert(sr_data.defaultStyleId);
	
	$j('#sr_style').removeAttr('disabled');
	$j('#sr_style').change(srStyleOnChange).change();
}

function srStyleOnChange()
{
	var data = sr_data.local.style[this.value];
	$j('#main_image').attr('src', sr_data.local.photo_path+'/'+data.photo);
	$j('#main_image').attr('src', sr_data.local.photo_path+'/'+data.photo);
	srGetConfigurationByStyleId(data.chromestyleid);
	//srShowMedia(data.chromestyleid);
}

function srLocalDataOnLoad(data)
{
	srSetData('local', data);
	srInitStyleSelect(data.style);
	$j('#sr_container').show();
	$j('#loading_styles_bar').hide();
}

function mainPhotoOnError()
{
	var errorSrc = 'img/car_nophoto_320.gif';
	if (this.src != errorSrc) {
		this.src = errorSrc;
	}
}

function initShowroom(id_model, year)
{
	$j('#main_image').error(mainPhotoOnError);
	
	var data = {
		action:'view',
		id_model:id_model,
		year:year
	};
	$j('#sr_style').html('<option>Loading</option>');
	$j('#sr_style').attr('disabled', 'disabled');
	$j('#loading_styles_bar').show();
	$j.post('showroom', data, srLocalDataOnLoad, 'json');
}

