var intPackageId = 514;
var strAjaxUrl = 'www.reklamosant.se';
var CatalogThemeDefault = 
{
	intAppId			: 2,
	intPackageId		: false,
	strAppAjaxURL		: false,
	
	/*--INIT-AND-EVENTS-------------------------------------------------------------------------*/
	
	/*
	 *	
	 */
	init : function(intPackageId, strAjaxUrl)
	{
		
		CatalogThemeDefault.intPackageId	= intPackageId;
		CatalogThemeDefault.strAppAjaxURL	= strAjaxUrl+"/"+intPackageId+"/";
		
		CatalogThemeDefault.addEventHandlers();
		CatalogThemeDefault.CheckCookieHandler();
		var elemList = $("#List-0").children("li");
		CatalogThemeDefault.updateTree(elemList, true);
		
		CatalogThemeDefault.TreeStyle();
		CatalogThemeDefault.ShareOnFacebookLinks();
	},
	
	/*
	 *	
	 */
	addEventHandlers : function()
	{
		jsBaseAppSettings.Bind(".toggleimg", "click", CatalogThemeDefault.toggleTree, false);
		jsBaseAppSettings.Bind(".toggleimg", "click", CatalogThemeDefault.toggleTree, true);
		
		jsBaseAppSettings.Bind("#Catalog_SearchFiledSubmit", "click", CatalogThemeDefault.checkSubmitForm, false);
		jsBaseAppSettings.Bind("#Catalog_SearchFiledSubmit", "click", CatalogThemeDefault.checkSubmitForm, true);
	},
	
	ShareOnFacebookLinks : function()
	{
		var strTitle	= $('#ProductPage h3').html();
		var strUrl		= encodeURIComponent(window.location);
		
		var currentUrl	= $('.ShareOnFacebook').attr('href');
		
		currentUrl		+='?u=' + strUrl + '&t=' + strUrl;
		
		$('.ShareOnFacebook').attr('href', currentUrl);
		
		$('.ShareOnFacebook').click(function(event)
		{
			event.preventDefault();
			window.open(currentUrl, 'Facebook', 'width=600,height=350');
		});
	},
	
	/*
	 *
	 */
	TreeStyle : function()
	{
		var $arrUls		= $('#Tree-wrapper').find('ul');
		
		$arrUls.each(function()
		{
			var $first = $(this).children('li:first');
			
			$first.addClass('firstOnDepth');
			
			var $last = $(this).children('li:last');
			
			$last.addClass('lastOnDepth');
		});
	},
	
	/*--COOKIES-------------------------------------------------------------------------------*/
	
	/*
	 *	
	 */
	CheckCookieHandler : function(event)
	{
		var strData 	= "ajaxid=17&app=2&view=true";
		var strType		= "POST";
		var fncCallback	= CatalogThemeDefault.CheckCookieHandlerDone;
					
		jsBaseAppSettings.AjaxHandler(CatalogThemeDefault.strAppAjaxURL, strData, strType, fncCallback);
	},
	
	/*
	 *	
	 */
	CheckCookieHandlerDone : function(bolResult, strData)
	{
		if(bolResult)
		{
			if (!isNaN(parseInt(strData)))
			{
				CatalogThemeDefault.prepareCookieDough(parseInt(strData));
			}
			else
			{
				strData = strData.substr(strData.search("!"));
				
				switch(strData)
				{
					case "!false":
						break;
					
					case "!true":
						break;
					
					default :
						break;
				}
			}
		}
	},
	
	/*
	 *	
	 */
	prepareCookieDough: function(intCookieId)
	{
			CatalogThemeDefault.bakeCookie("tempCartId", intCookieId, 30);
	},
	
	/*
	 *	
	 */
	bakeCookie: function(name, value, days)
	{
		if(days)
		{
			var date = new Date();
			date.setTime(date.getTime()+(days * 24 * 60 * 60 * 1000));
			var expires = "; expires="+date.toGMTString();
		}
		else
		{
			var expires = "";
		}
		
		document.cookie = name+"="+value+expires+"; path=/";
	},
	
	/*--TREE---------------------------------------------------------------------------------*/
	
	/*
	 *	
	 */
	toggleTree : function(event)
	{
		var elemToggle	= event.target;

		var elemNode	= $(jsBaseAppSettings.BubbleToElement(elemToggle, 'li'));

		if(elemNode.hasClass('linkDirOpened'))
		{
			CatalogThemeDefault.showElementsChildren(elemNode, false);
			CatalogThemeDefault.updateTree(elemNode.children('ul').children('li'), false);
		}
		else
		{
			CatalogThemeDefault.collapseAll(elemNode);
			CatalogThemeDefault.showElementsChildren(elemNode, true);
			CatalogThemeDefault.updateTree(elemNode.children('ul').children('li'), true);
		}
	},
	
	/*
	 *	
	 */
	updateTree : function(elemList, show)
	{
		$(elemList).each(function(i)				//loop list of li
		{
			if (show)								//show li
			{
				$(this).css("display", "block");
				$(this).hide();
				$(this).slideDown('fast');
			}
			else									// hide li
			{
				$(this).slideUp('fast', function()
				{
					$(this).css("display", "none");
				});
				
				//CatalogThemeDefault.showElementsChildren($(this), false);	//set: hide lis children.
			}
			
			var elemChildren = $(this).children("ul").children("li");	//get lis children
			
			
			
			if($(this).hasClass("linkDirOpened"))						//show lis children
				CatalogThemeDefault.updateTree(elemChildren, true);
			else														//hide lis children
				CatalogThemeDefault.updateTree(elemChildren, false);
		});
	},
	
	/*
	 *	
	 */
	showElementsChildren : function(element, show)
	{
		if (show && element.hasClass("linkDirClosed"))
		{
			element.removeClass("linkDirClosed");
			element.addClass("linkDirOpened");
		}
		else if (!show && element.hasClass("linkDirOpened"))
		{
			element.removeClass("linkDirOpened");
			element.addClass("linkDirClosed");
		}
	},
	
	/*
	 *	
	 */
	collapseAll : function(element)
	{
		var siblings = $(element).parent("ul").children("li");
		$(siblings).each(function(i) //loop list of li
		{
			CatalogThemeDefault.showElementsChildren(siblings, false);
			CatalogThemeDefault.updateTree(siblings.children("ul").children("li"), false);
		});
	},
	
	/*
	 *	
	 */
	checkSubmitForm : function()
	{
		var strSearchString = $("#Catalog_SearchFiledInput").val();
		
		if(strSearchString.length != 0)
		{
			var elemSerchForm = $("#Catalog_SearchForm");
			elemSerchForm.submit();
			elemSerchForm = null;
		}
	}
};

/*--JSBASEAPPSETTINGS-------------------------------------------------------------------*/

var jsBaseAppSettings = 
{
	/*
	 *	
	 */
	AjaxHandler : function(URL, data, type, callback, arrParameters)
	{
		if(!arrParameters)
		{
			arrParameters	= new Array();
		}
		
		ajaxRequest 	= $.ajax({
			url			: URL,
			data		: data,
			type		: type,
			dataType	: "text",
			async		: false,
			success		: function(responseData)
			{
				if(callback)
				{
					callback(true, responseData, arrParameters);
				}
			},
			error		: function(responseData)
			{
				if(callback)
				{
					callback(false, responseData, arrParameters);
				}
			}
			
		}).responseText;
	},
	
	/*
	 *	
	 */
	Bind : function(target, event, callback, bind)
	{
		if(bind)
		{
			$(target).bind(event, function(e)
			{
				callback(e);
			});
		}
		else
		{
			$(target).unbind(event);
		}
	},
	
	/*
	 *	
	 */
	RemoveElement : function(element, method, speed)
	{
		method = method.toLowerCase();
			
		switch(method)
		{
			case "slide":
			jsBaseAppSettings.RemoveElementSlide(element, speed);
			break;
			
			case "fade":
			jsBaseAppSettings.RemoveElementFade(element, speed);
			break;
			
			case "now":
			jsBaseAppSettings.RemoveElementFade(element);
			break;
			
			default:
			jsBaseAppSettings.RemoveElementNow(element);
			break;
		}
	},
	
	/*
	 *	
	 */
	RemoveElementNow : function(element)
	{
		$(element).remove();
	},
	
	/*
	 *	
	 */
	RemoveElementSlide : function(element, speed)
	{
		$(element).slideUp(speed), function()
		{
			$(element).remove();
		};
	},
	
	/*
	 *	
	 */
	RemoveElementFade : function(element, speed)
	{
		$(element).fadeOut(speed), function()
		{
			$(element).remove();
		};
	},
	
	/*
	 *	
	 */
	FindButton : function(target)
	{
		while($(target).is(":not(A)"))
		{
			target = $(target).parent();
		}
		
		return target;
	},
	
	/*
	 *	
	 */
	FindButtonNr : function(target)
	{
		while($(target).is(":not(A)"))
		{
			target = $(target).parent();
		}
		
		var strAlbumId = target.attr("id");
		var intAlbumId = strAlbumId.split("-");
			intAlbumId = intAlbumId[1];
		
		return intAlbumId;
	},
	
	/*
	 *	
	 */
	getURLParameter : function(strName, strURL)
	{
		if(strURL == "*")
		{
			strURL  = window.location;
		}
		
		strName		= strName.replace(/[[]/,"\[").replace(/[]]/,"\]");
		
		var regexS	= "[\?&]"+ strName +"=([^&#]*)";
		var regex	= new RegExp( regexS );
		var results	= regex.exec( strURL );
		
		if(!results)
		{
			return "";
		}
		else
		{
			return results[1];
		}
	},
	
	/*
	 *	
	 */
	BubbleToElement : function(target, element)
	{
		while($(target).is(":not("+ element +")"))
		{
			target = $(target).parent();
		}
		
		return target;
	},
	
	/*
	 *	
	 */
	BubbleToElementId : function(target, element, wildcard)
	{
		var strRegExp = wildcard;
		
		while( ($(target).is(":not("+ element +")")) && ($(target).attr("id")))
		{
			target = $(target).parent();
		}
		
		return target;
	},
	
	/*
	 *	
	 */
	ErrorHandler : function(strData)
	{
			strData		= jQuery.trim(strData);
		var strPrefix	= strData.substring(0,5);
		var strMatch	= "error";
		
		if(strPrefix != strMatch)
		{
			return true;
		}
		else
		{
			strData = strData.split("[!]");
			var strMessage	= strData[1];
				strData[2]	= strData[2].replace("buttons=", "");
			var arrButtons	= strData[2].split("|");
			
			jsBaseAppSettings.DialogHandler(strMessage, arrButtons);
		}
	},
	
	/*
	 *	
	 */
	DialogHandler : function(strMessage, arrButtons, fncCallback, strIconURL, arrParameters)
	{
		var fncReturnFunction = fncCallback; // <- JS-FIX DONT REMOVE.
		
		if(!strIconURL)
		{
			strIconURL = 1;
		}
		
		switch(strIconURL)
		{
			case 1:
				strIconURL = "Images/icon_big_warning.png";
				break;
				
			case 2:
				strIconURL = "Images/icon_big_info.png";
				break;
			
			case 3:
				strIconURL = "Images/icon_big_help.png";
				break;
				
			case 4:
				strIconURL = "Images/icon_big_lock.png";
				break;
		}
		
		var strDialog = "" +
			"<div class='dialog-closebutton DialogCancelButton'></div>" + 
			"<div style='float: left; width: 100%; margin-top: 30px;'>" + 
				"<img src='" + strIconURL + "' style='float: left; margin-right: 10px;' />" + 
				"<h3 style='margin-top: 10px;'>" + strMessage + "</h3>" + 
			"</div>" + 
			"<div style='float: left; width: 100%; margin-top: 20px;'>";
		
		for(var i = 0; i < arrButtons.length; i++)
		{
			strDialog += "" +
			"<a class='submitbutton' id='DialogButton-" + i + "' style='float: right;'>" + 
				"<span><span>" + 
					arrButtons[i] + 
				"</span></span>" + 
			"</a>";
		}
		
		strDialog += "</div>";
		
		$("#DialogContainer").empty();
		$("#DialogContainer").append("<div id='tempdiv'></div>");
		$("#tempdiv").append(strDialog);
		
		for(var i = 0; i < arrButtons.length; i++)
		{
			jsBaseAppSettings.Bind("#DialogButton-" + i, "click", function(event, fncReturnFunction){jsBaseAppSettings.HandleButtons(event, fncCallback, arrParameters);}, true);
		}
		
		jsBaseAppSettings.Bind("#DialogContainer .DialogCancelButton", "click", function(){$("#DialogContainer").dialog("close");}, true);

		$("#DialogContainer").dialog("open");		
	}, 
	
	/*
	 *	
	 */
	HandleButtons : function(event, fncCallback, arrParameters)
	{
		$("#DialogContainer").dialog("close");
		var ButtonId = $(jsBaseAppSettings.BubbleToElement(event.target, "a")).attr("id");
		
		if(fncCallback)
		{
			fncCallback(ButtonId, arrParameters);
		}
		
		$("#DialogContainer").empty();
	}
};
/*--------------------------------------------------------------------------------------*/

$(document).ready(function()
{  
	CatalogThemeDefault.init(intPackageId, strAjaxUrl);
	Shadowbox.init();
});

