/**
 * この車とよく比較されている車種の表示
 */
var compare_car_IMPL;
try {
	if (!compare_car_IMPL) {
		compare_car_IMPL = {};
	} else if (typeof compare_car_IMPL != 'object') {
		throw new Error('[compare_car_IMPL] already exists and is not an object.');
	}
} catch (e) {}

(function(){
	var _callback_name = 'compare_car_IMPL.carApiCallback';

	var _idName = '';
	var _specCode = '';

	// API URL.
	var _PROTOCOL = location.protocol.indexOf('https') > -1 ? 'https:' : 'http:';
	var _API_HOST = '//etoyota.net';

	var _intoTextNode = '';

	//テンプレート設定
	var _tagTemplate  = '<li><a href="$CarInformationLink$">$CarName$</a></li>';
	var _errTemplate = '<li>この車とよく比較されている車種はありません</li>';

	//callback関数の設定
	compare_car_IMPL.carApiCallback = carApiCallback;

	//表示処理の設定
	compare_car_IMPL.printPane = printPaneCompare;
	
	/**
	 * よく比較されている車種を表示
	 * @param {Object} defaultKeyword
	 * @param {Object} idName
	 * @param {Object} count
	 */
	function printPaneCompare(defaultKeyword, specCode, idName, carCount){
		_idName = idName;
		_specCode = specCode;

		//url setting
		var _carApiParams = '?charset=utf-8&data_type=jsonp&pid=intocompare&method=related&relatedid=jp_carcontents_keyword_to_car'
						   +'&size=' + carCount + '&callback=' + _callback_name + '&keyword=' + encodeURIComponent(defaultKeyword) +'&maker_cd=001&data_source=xml';
		var _carApiURL = _PROTOCOL + _API_HOST + '/webapi/tidcar' + _carApiParams;

		//execute
		jQuery.ajaxSetup({ error : function(){return _callbackDone();} });
		jQuery.loadJSONP (_carApiURL, _callback_name, 'utf-8');
	}


	/**
	 * コールバック関数
	 * @param {Object} jsonObject
	 */
	function carApiCallback(jsonObject) {
		if (!jsonObject) {
			return _callbackDone();
		}

		var header = jsonObject.json.Header;
		var responseHeader = jsonObject.json.ResponseHeader;
		var responseData = jsonObject.json.ResponseData;

		// response element check.
		if (_enableValueShallowCheck(header, responseHeader, responseData) == false) {
			return _callbackDone();
		}

		// size check.
		var size = parseInt(responseHeader.Size) || 0;
		if (size == 0 || responseData.length == 0 || (size != responseData.length)) {
			return _callbackDone();
		}

		// object to string convert.
		for (var idx = 0; idx < size; idx++) {
			if (_enableValueShallowCheck(responseData[idx]) == false) {
				continue;
			}
			if (_enableValueShallowCheck(responseData[idx].CarName, responseData[idx].CarInformationLink) == false) {
				continue;
			}
			var tag = _tagTemplate.replace(/\$CarInformationLink\$/g, responseData[idx].CarInformationLink);
			tag = tag.replace(/\$CarName\$/g, responseData[idx].CarName);
			
			_intoTextNode += tag;
		}

		return _callbackDone();
	}

	
	/**
	 * 描画処理
	 */
	function _callbackDone() {
		if(!_intoTextNode){
			_intoTextNode = _errTemplate;
		}

		//出力
		jQuery(_idName).empty();
		jQuery(_idName).append(_intoTextNode);
		
		// 他車比較リンク.
		if (_specCode) {
			jQuery('#intoCompare_intocompare_spec_code').attr('href', 'http://toyota.jp/service/compare/dc/compdt?spec_code=' + _specCode);
		} else {
			jQuery('#intoCompare_intocompare_spec_code').attr('href', 'http://toyota.jp/service/compare/dc/compsc');
		}

		return;
	}

	
	/**
	 * 簡易エラーチェック
	 */
	function _enableValueShallowCheck(_arguments_) {
		var idx = arguments.length;
		if (idx == 0) {
			return false;
		}
		for (--idx; 0 <= idx; --idx) {
			var value = arguments[idx];
			if (typeof value == 'undefined') {
				return false;
			}
			if (value == null) {
				return false;
			}
			if (value == '') {
				return false;
			}
		}
		return true;
	}

	
	
})();

