/*--------------
 $Rev: 1033 $
 --------------*/
$(function(){

	var kpi_inlineModalContent = $('div.InlineModalContent');

	if(kpi_inlineModalContent.length) {
		var kpi_selectModelsFunction = {
//			loadFile: kpi_domainSettings.originalDomain + '/data/downloads_select_models.json'
			loadFile:kpi_selectModelsJsonFile
			,switchingObj: $('div.Switching', kpi_inlineModalContent)
			,modelsText: $('div.RefineSearchForm ul li.Link span').text()
			,selectModelTr: ''
			,typeListLength: 0
			,allmodelsNum: 0
			,allTableTrNum: 0
			,checkedLength: 0
			,allItems: []
			,loopNum: 0
			,sectionCheckboxArray: []
			,inDisconArray: []
			,init: function () {
				$.ajax({
					type: "GET",
					url: this.loadFile,
					dataType: "jsonp",
					timeout: kpi_usersettings.AjaxTimeoutSeconds,
					cache: false,
					jsonp: "callback",
					jsonpCallback: "kpi_selectModels",
					success : function(data){
						this.typeListLength = data.typelist.length;
						var disconItem = "";
						var disconClass = "";
						var modelsNum = [];
						var disconNum = [];
						for (var i=0;i<this.typeListLength;i++) {
							kpi_selectModelsFunction.allmodelsNum += data.typelist[i].models.length;
							kpi_selectModelsFunction.inDisconArray[i] = '<div class="Section LoopSection'+i+'"><h2 class="NormalHeading"><span class="Inner">'+ data.typelist[i].name +'</span></h2><table class="SelectModel Stripe"><tbody>';
							modelsNum[i] = data.typelist[i].models.length;
							disconNum[i] = 0;
							var trNum = Math.ceil(modelsNum[i] / 3);
							for (var h=0;h<trNum*3;h++) {
								if(h%3 == 0) {
									kpi_selectModelsFunction.inDisconArray[i] += '<tr>';
								}

								if(h<modelsNum[i]) {
									if(data.typelist[i].models[h].discontinued) {
										disconItem = '<span class="TextIcon Discontinued">'+kpi_translation.Discontinued+'</span>';
										disconClass = ' class="Discontinued"';
										disconNum[i] = disconNum[i] + 1;
									}
									kpi_selectModelsFunction.inDisconArray[i] += '<td'+disconClass+'><label for="'+data.typelist[i].id+'-'+data.typelist[i].models[h].id+'" class="UIElm-check-label"><input type="checkbox" class="ModalCustomCheckbox" id="'+data.typelist[i].id+'-'+data.typelist[i].models[h].id+'" name="'+data.typelist[i].name+'" value="'+data.typelist[i].models[h].name+'"><span class="Text Title">'+data.typelist[i].models[h].id+disconItem+'<br><span class="SubTitle">'+data.typelist[i].models[h].name+'</span></span></label></td>';
								} else {
									kpi_selectModelsFunction.inDisconArray[i] += '<td class="blank">&nbsp;</td>';
								}
								disconClass = "";
								disconItem = "";
							}

							kpi_selectModelsFunction.inDisconArray[i] += '</tbody></table></div>';
						}
					},
					complete : function(data){

						kpi_selectModelsFunction.loopNum = kpi_selectModelsFunction.inDisconArray.length;

						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							kpi_selectModelsFunction.switchingObj.append(kpi_selectModelsFunction.inDisconArray[i]);
						}

						kpi_selectModelsFunction.selectModelTr = $('table.SelectModel tbody tr');

						kpi_selectModelsFunction.allTableTrNum = kpi_selectModelsFunction.selectModelTr.size();

						kpi_selectModelsFunction.selectModelTr.find('td.Discontinued').addClass('hide');
						kpi_selectModelsFunction.selectModelTr.find('td.hide label').hide();

						for(var i=0;i<kpi_selectModelsFunction.allTableTrNum;i++) {
							var hideLength = kpi_selectModelsFunction.selectModelTr.eq(i).find('td.hide').size() + kpi_selectModelsFunction.selectModelTr.eq(i).find('td.blank').size();
							if(hideLength==3) {
								kpi_selectModelsFunction.selectModelTr.eq(i).addClass('DisplayNone');
							}
						}

						$('table.Stripe tbody', kpi_inlineModalContent).find('tr:odd').addClass('EvenRow');

						kpi_selectModelsFunction.displaySwitchingFunc();

						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							kpi_selectModelsFunction.sectionCheckboxArray[i] = $('.LoopSection'+i+' input.ModalCustomCheckbox', kpi_inlineModalContent).length;
						}

						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							kpi_selectModelsFunction.allItems[i] = [];
							for(var h=0;h<kpi_selectModelsFunction.sectionCheckboxArray[i];h++) {
								var chkid = $('.LoopSection'+i+' input.ModalCustomCheckbox', kpi_inlineModalContent).eq(h).attr('id');
								kpi_selectModelsFunction.allItems[i][h] = $('.LoopSection'+i+' input[id="'+chkid+'"]');
								kpi_selectModelsFunction.allItems[i][h].checkbox({
									view: true
									,uiClass: 'CustomCheckbox'
									,labelClass: 'UIElm-check-label'
									,checkedClass: 'checked'
									,disabledClass: 'disabled'
								});
								kpi_selectModelsFunction.allItems[i][h].bind({
									'check:on': function(ev, data) {
//										if(kpi_ua.Webkit) console.log(data);
										kpi_selectModelsFunction.checkedLength += 1;
										kpi_selectModelsFunction.checkboxCheck();
									}
									,'check:off': function(ev, data) {
//										if(kpi_ua.Webkit) console.log(data);
										kpi_selectModelsFunction.checkedLength -= 1;
										kpi_selectModelsFunction.checkboxCheck();
									}
								});
							}
						}

//						if(kpi_ua.IE) {
//							$('label.UIElm-check-label', kpi_inlineModalContent).focus().bind('click', function(){
//								kpi_selectModelsFunction.checkboxCheck();
//							});
//						} else {
//							kpi_inlineModalContent.change(function() {
//								kpi_selectModelsFunction.checkboxCheck();
//							});
//						}
					},
					error: function(xhr, status, err) {
						$('.InlineModalHeader').empty().append('<p>' + kpi_translation.ContentLoadErrorMsg + '</p>');
					}
				});

			}
			,displaySwitchingFunc: function () {

				var displaySwitching = $('.DisplaySwitching a');
				var closeButton = $('div#kpi_boxClose');
				var disArray = [];

				displaySwitching.bind('click', function() {
					var num = displaySwitching.index(this);
					displaySwitching.parent('li').removeClass('Current');
					$(this).parent('li').addClass('Current');
					if(num > 0) {

						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							$('.LoopSection'+i, kpi_inlineModalContent).find('td.Discontinued').removeClass('show').addClass('hide');
							$('.LoopSection'+i, kpi_inlineModalContent).find('td.hide label').hide();
							$('.LoopSection'+i, kpi_inlineModalContent).find('tr.show').removeClass('show').addClass('DisplayNone');
//							var chkbox = $('.LoopSection'+i+' td.Discontinued', kpi_inlineModalContent).find('input:checkbox:checked');
//							chkbox.each(function() {
//								$(this).checkbox('checkOff', $(this).attr('id'));
//							});
							for(var h=0;h<kpi_selectModelsFunction.sectionCheckboxArray[i];h++) {
								var hasDiscon = kpi_selectModelsFunction.allItems[i][h].closest('td').hasClass('Discontinued');
								if(hasDiscon) {
									kpi_selectModelsFunction.allItems[i][h].checkbox('checkOff', kpi_selectModelsFunction.allItems[i][h].attr('id'));
								}
							}
						}

						for(var j=0;j<kpi_selectModelsFunction.loopNum;j++) {
							for(var k=0;k<kpi_selectModelsFunction.sectionCheckboxArray[j];k++) {
								var hasDiscon = kpi_selectModelsFunction.allItems[j][k].closest('td').hasClass('Discontinued');
								if(hasDiscon) {
									kpi_selectModelsFunction.allItems[j][k].checkbox('checkOff', kpi_selectModelsFunction.allItems[j][k].attr('id'));
								}
							}
						}
						$.cookie('kpi_discon', 0,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
					} else {

						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							$('.LoopSection'+i, kpi_inlineModalContent).find('td.Discontinued').removeClass('hide').addClass('show');
							$('.LoopSection'+i, kpi_inlineModalContent).find('td.show label').show();
							$('.LoopSection'+i, kpi_inlineModalContent).find('tr.DisplayNone').removeClass('DisplayNone').addClass('show');
						}
						$.cookie('kpi_discon', 1,{ path: '/', domain: kpi_cookiesettings.cookieDomain });
					}
					kpi_selectModelsFunction.checkboxCheck();
					return false;
				});
				if($.cookie('kpi_discon')>0) {
					displaySwitching.eq(0).parent('li').addClass('Current');
					displaySwitching.eq(1).parent('li').removeClass('Current');
					for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
						$('.LoopSection'+i, kpi_inlineModalContent).find('td.Discontinued').removeClass('hide').addClass('show');
						$('.LoopSection'+i, kpi_inlineModalContent).find('td.show label').show();
						$('.LoopSection'+i, kpi_inlineModalContent).find('tr.DisplayNone').removeClass('DisplayNone').addClass('show');
					}
				}
				$('a.Cancel', kpi_inlineModalContent).bind('click', function() {
					for(var j=0;j<kpi_selectModelsFunction.loopNum;j++) {
						for(var k=0;k<kpi_selectModelsFunction.sectionCheckboxArray[j];k++) {
							kpi_selectModelsFunction.allItems[j][k].checkbox('checkOff', kpi_selectModelsFunction.allItems[j][k].attr('id'));
						}
					}
					kpi_selectModelsFunction.switchingObj.find('span.CustomCheckbox').removeClass('disabled');
					$('div.RefineSearchForm table.SimpleTable td ul li a.InlineModal').text(kpi_selectModelsFunction.modelsText);
					closeButton.trigger('click');
					return false;
				});
				$('a.Submit', kpi_inlineModalContent).bind('click', function() {
					kpi_selectModelsFunction.checkboxCheck();
					closeButton.trigger('click');
					return false;
				});
			}
			,checkboxCheck: function () {

//				kpi_selectModelsFunction.checkedLength = $('input:checked', kpi_selectModelsFunction.switchingObj).size();
//
//				if(kpi_ua.IE) {
//					kpi_selectModelsFunction.checkedLength = $('span.checked', kpi_selectModelsFunction.switchingObj).size();
//				}

//				alert(kpi_selectModelsFunction.checkedLength);

				var hiddenObject = $('span.disabled', kpi_selectModelsFunction.switchingObj).length;

				if(kpi_selectModelsFunction.checkedLength<kpi_usersettings.SelectModelsLimitNum) {
					if(hiddenObject > 0) {
						for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
							for(var h=0;h<kpi_selectModelsFunction.sectionCheckboxArray[i];h++) {
								kpi_selectModelsFunction.allItems[i][h].checkbox('enable', kpi_selectModelsFunction.allItems[i][h].attr('id'));
							}
						}
					}
				} else {
					for(var i=0;i<kpi_selectModelsFunction.loopNum;i++) {
						for(var h=0;h<kpi_selectModelsFunction.sectionCheckboxArray[i];h++) {
							var checkedCheck = kpi_selectModelsFunction.allItems[i][h].next().hasClass('checked');
							if(!checkedCheck) {
								kpi_selectModelsFunction.allItems[i][h].checkbox('disable', kpi_selectModelsFunction.allItems[i][h].attr('id'));
							}
						}
					}
				}

				var refineInlineModal = $('div.RefineSearchForm table.SimpleTable td ul li a.InlineModal');

				if(kpi_selectModelsFunction.checkedLength>0) {
					refineInlineModal.text(kpi_selectModelsFunction.modelsText+' ('+kpi_selectModelsFunction.checkedLength+'/'+kpi_selectModelsFunction.allmodelsNum+')');
				} else {
					refineInlineModal.text(kpi_selectModelsFunction.modelsText);
				}
			}
		};
		kpi_selectModelsFunction.init();
	}
});