// JavaScript Document

var steps = {};
var fileUploader = null;

var extraAnswer = false;

var $stepNumber = 0
var $answerText = "";
var $answerUnformattedText = "";
var $configuration = "";
var $quantity = 1
//var $productID = 32582;
//var $productID = 32583;

var $answers = {};
var $numquestions = 0;
var $subStepNumber = 0;
var $webBiviCode = null
var $error = false;
var $areaToConfigure = "inside";
var $currentArea = "inside";
var $uploadeFile = null;
var $originalFile = null;

var steps = {};


(function($){				
	$.extend({
		winman:
		{
			finish: function(quantity, binderList)
			{
				var html = $.ajax({ 
						type: "POST",
						url: '/winman/configurator_finish',
						async: false,
						data: {'data[product]' : $productID, 'data[quantity]' : quantity, 'data[configuration]' : $configuration, 'data[binderProp]' : $.toJSON(binderList), 'data[type]': $itemType }	
					}).responseText;	
				if(html.indexOf("error") != -1)
				{
					json = "error";
					status = 'error';
					message = 'configurator_finish';
				}
				else
				{
					eval("json = "+ html);
					status = 'success';
					message = 'configurator_finish';
				}
				$.configurator.createLog(status,html, message + '_reponse', html)
				$.configurator.createLog(status,html, message + '_steps',$.toJSON(steps))
				return json;
			},
			answer: function(value)
			{				
				var html = $.ajax({ 
							type: "POST",
							url: '/winman/configurator_answer',
							async: false,
							data: {'data[product]' : $productID, 'data[quantity]' : $quantity, 'data[configuration]' : $configuration, 'data[answerId]': value}	
						}).responseText;
				
				if(html == '')
				{
					json = "error";
					status = 'error - no data returned';
					message = 'configurator_answer';
					theanswer = json;
				}
				else if(html.indexOf("error") != -1)
				{
					json = "error";
					status = 'error';
					message = 'configurator_answer';
					theanswer = json;
				}
				else
				{
					eval("theanswer = " + html);
					status = 'sucess';
					message = 'configurator_answer';
				}
				$.configurator.createLog(status,html, message, 'answerId = ' + value)
				return theanswer;				
			},
			returnVisibleOptions: function(questionID)
			{				
				$answerID = 'None';	
				var html = $.ajax({ 
					type: "POST",
					url: '/configurator/configurator_getMenuContents',
					async: false,
					data: {'data[product]' : $productID, 'data[quantity]' : $quantity, 'data[configuration]' : $configuration, 'data[question]': questionID}	
				}).responseText;
				
				
				if(html.indexOf("error") != -1)
				{
					json = "error";
					status = 'error';
					message = 'configurator_getMenuContents';
				}
				else
				{
					eval("answerList = " + html);
					status = 'sucess';
					message = 'configurator_getMenuContents';
				}
				$.configurator.createLog(status,html, message, 'question = ' + questionID)
				return answerList;
			},
			getQuestions: function()
			{
				var html = $.ajax({ 
					type: "POST",
					//url: '/winman/configurator_start', 
					url: '/configurator/configurator_getQuestionList',
					async: false,
					data: {'data[product]' : $productID}	
				}).responseText;
				if(html.indexOf("error") != -1 || html == "")
				{
					json = "error";
					status = 'error';
					message = 'configurator_getQuestionList';
				}
				else
				{
					eval("json = "+ html);
					status = 'success';
					$configuration = json.ConfiguratorStartResult.Configuration;
					message = 'configurator_getQuestionList';
				}
				$.configurator.createLog(status,html, message, 'product = ' + $productID)
				return json;
			},
			reprice: function(quantity, id)
			{
				if(id == null || id == "")
				{
					//id = $webBiviCode
					id = $seedId;
				}
				var html = $.ajax({ 
						type: "POST",
						url: '/winman/configurator_rePrice',
						async: false,
						data: {'data[product]' : id, 'data[quantity]' : quantity, 'data[configuration]' : $configuration }	
					}).responseText;			
				if(html.indexOf("error") != -1)
				{
					json = "error";
				}
				else
				{
					eval("json = "+ html);
				}
				return json;
			}
		},
		configurator:
		{
			createLog: function(status,response,message,data)
			{					
				seedId = $productID;
				
				if(json.ConfiguratorFinishResult != undefined)
				{
					newProductId = (json.ConfiguratorFinishResult.ProductId != undefined) ? json.ConfiguratorFinishResult.ProductId : null;
				}
				else
				{
					newProductId= '';
				}
				
				var html = $.ajax({ 
						type: "POST",
						url: '/configurator/createLog',
						async: false,
						data: { 'data[status]' : status, 
							    'data[message]': message, 
								'data[array]' : data, 
								'data[seed]' : seedId , 
								'data[newProdCode]' : newProductId, 
								'data[guid]' : $configuration }	
					}).responseText;	
			},
			formatText: function(theText)
			{				
				return theText.replace(/\//gi,"").replace(/,/gi,"").replace(/\(/gi,"").replace(/\)/gi,"").replace(/, /gi," ").replace(/ - /gi,"_").replace(/ & /gi,"_").replace(/ /gi,"_").toLowerCase()
			},
			findCurrentQuestion: function(questionText, clickedItem, subNumber)
			{
				theId = 0;
				if(subNumber == -1)
				{
					theArray = 	steps[$stepNumber].stepOptions
				}
				else
				{					
					theArray = 	steps[$stepNumber].stepOptions[subNumber].stepOptions;
				}
				counter = 0;
				$.each(theArray, function(id,values)
								{
									if(values.type == "question")
									{
										valueText = values.questionText;
										//if(values.questionText == questionText)
										if(valueText == questionText)
										{
											theId = id;	
											return true;
										}
									}
									else
									{
										if(subNumber > -1)
										{
											theId = id;
										}
										else
										{
											if(theId == 0)
											{
												theId = $.configurator.findCurrentQuestion(questionText, clickedItem, counter);
												counter = counter + 1;
											}
										}
										//todo
										//need to find current question in groups
									}
								})
				
				return theId;				
			},
			uploadImage: function ()
			{
				fileUploader.submit();
			},
			getQuestionsList: function()
			{				
				json = $.winman.getQuestions();
				if(json != "error")
				{
					configQuestions = {};
					configQuestionOrder = {};
				
					if(json.ConfiguratorStartResult != undefined)
					{
						$configuration = json.ConfiguratorStartResult.Configuration;					
						$.each(json.ConfiguratorStartResult.Questions.Question, function(key, value) { 						
							questionText = value.QuestionText.replace(/\//gi,"").replace(/,/gi,"").replace(/\(/gi,"").replace(/\)/gi,"").replace(/, /gi," ").replace(/ - /gi,"_").replace(/ & /gi,"_").replace(/ /gi,"_").toLowerCase();
							configQuestionOrder[key] = questionText;						
							configQuestions[questionText] = value;
						})
					}
					else
					{
						$error = true;
					}
				}
				else
				{
					$error = true;	
				}
			},			
			getObjectSize: function(object)
			{
				counter = 0
				$.each(object,function() {counter = counter+1 })
				return counter;
			},
			hideMenus: function()
			{
				$('.menuContent').hide();	
			},
			showMenu: function(menuID)
			{				
				$('#'+menuID).show();
			}	
		},
		display:
		{
			makeActive: function(clickedItem, area)
			{	
				$('span:not(headerOption)',$('.config_options')).removeClass("current");
				$.display.makeOpacity($('span:not(headerOption)',$('.config_options',$('#'+area))), false);
				$.display.makeOpacity($('span:not(headerOption)',$('.config_print',$('#'+area))), false);
				$(clickedItem).addClass("current");
			
				if($(clickedItem).is('.headerOption'))
				{
					
				}
				else
				{
					$.display.makeOpacity($(clickedItem), true);
				}
			},
			makeInactive: function(clickedItem)
			{	
				$(clickedItem).removeClass("current");
				$.display.makeOpacity($(clickedItem), false);
			},
			makeOpacity: function(theItem, full)
			{
				if($(theItem).length > 0)
				{
					if(full == true)
					{
						$(theItem).not('.subHeaderOption').css({"-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(opacity=100)","filter": "alpha(opacity=100)","ZOOM":"normal","opacity":1 , "-moz-opacity": 10 })
						$('p', $(theItem)).css({"-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(opacity=100)" ,"filter": "alpha(opacity=100)","ZOOM":"normal","opacity":1, "-moz-opacity": 10 })
					}
					else
					{
						$(theItem).not('.subHeaderOption').css({"-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(opacity=60)" ,"filter": "alpha(opacity=60)","ZOOM":"normal","opacity":.60,"-moz-opacity": 0.60 })		
						$('p', $(theItem)).css({"-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(opacity=60)" ,"filter": "alpha(opacity=60)","ZOOM":"normal","opacity":.60,"-moz-opacity": 0.60 })		
					}
				}
			}
		}		
	})
})(jQuery);