jQuery.extend(
{
	CSportfolio: function(settings)
			{
				this.settings = jQuery.extend({
																				XMLfile: '',																				
																				HeadingSelector: '#ProjectName',
																				MainItemSelector: '#PortofioItemWrapper img:first',
																				ThumbnailsSelector: '#PortfolioThumbnails a',
																				
																				DefaultSelectionSelector:'#PortfolioThumbnails a.selected',
																				PagenationSelector:'#PortfolioPagination',
																				PagenationLinks:'#PortfolioPagination a',
																				SelectionClass: 'selected',
																				ProgressClass: 'loading',
																				
																				TransitionDelay: 100,
																				
																				btnPlay: '.btnPlay', 
																				btnPause: '.btnPause',
																				autoplay: 0,
																				start: 0
																			}, settings);
				
				this.MainItemHeading = null;
				this.MainItemImage = null;
				this.Thumbnails = null;
				this.Selection = null;
				this.XMLData = new Array();
				this.PortfolioImagesLocation = null;				
				this.AutoPlayTimer = null;
				this.AutoPlay = (this.settings.autoplay > 0)?true:false;
												
				this.init = function(){
																this.getPortfolioItems();
																this.readXMLAndSetThumbnailEvents();
															}
									
				this.getPortfolioItems = function()
																	{
																		this.MainItemHeading = jQuery(this.settings.HeadingSelector);
																		this.MainItemImage = jQuery(this.settings.MainItemSelector);
																		this.Thumbnails = jQuery(this.settings.ThumbnailsSelector);
																		this.Selection = jQuery(this.settings.DefaultSelectionSelector);
																		this.Pagenation = jQuery(this.settings.PagenationSelector);
																		this.Pagenations = jQuery(this.settings.PagenationLinks);
																	}
																										
				this.readXMLAndSetThumbnailEvents = function()
													{
														var xmlUrl = this.settings.XMLfile;
														 jQuery.ajax({
															 type: "GET",
															 url: xmlUrl,
															 dataType: "xml",
															 success: function(xml)
																				{
																					 portfolio.PortfolioImagesLocation = jQuery(xml).find('PortfolioItems').attr('images_location');
																					 if (portfolio.PortfolioImagesLocation != '')
																						portfolio.PortfolioImagesLocation += "/";
																					
																					 var portfolioItems = jQuery(xml).find('PortfolioItem');																														
																					 portfolioItems.each(function(i)
																											{
																												portfolio.XMLData[i] = jQuery(this);
																											});
																					 
																					 portfolio.setThumbnailEvents();
																					 portfolio.setPageEvents();
//																					 portfolio.loadPortfolioItem(portfolio.settings.start);
																					 
																				 },
																				 error: function (XMLHttpRequest, textStatus, errorThrown)
																								{
																									//alert(textStatus);
																								}
																			 });
																			}	
																			
				this.setPageEvents = function()
									{
										var pageLinks = jQuery("#PortfolioPagination a");							
										pageLinks.click(function()
														{
															portfolio.pause();
															var plink = jQuery(this);
															if (portfolio.MainItemImage.attr('src') != plink.attr('rel'))
															{
																portfolio.MainItemHeading
																						.addClass(portfolio.settings.ProgressClass);
																																											
							
																portfolio.MainItemImage
																						.stop()
																						.fadeTo(portfolio.settings.TransitionDelay, 
																											0.01,
																											function()
																											{
																												portfolio.MainItemImage
																													.load(function()
																																	{
																																		var img = jQuery(this);
																																		img.stop().fadeTo(portfolio.settings.TransitionDelay, 1);
																																		portfolio.MainItemHeading
																																			.removeClass(portfolio.settings.ProgressClass);
																																	});
																													
																												portfolio.MainItemImage.attr('src', plink.attr('rel'));
																											})
															}
															return false;
														});				
									}

				this.setThumbnailEvents = function()
											{
												this.Thumbnails
															.each(function(i)
																		{
																			var thumbnail = jQuery(this);
																			var XMLData = portfolio.XMLData[i];
																			thumbnail
																				.attr({
																								'href': portfolio.PortfolioImagesLocation + XMLData.find('image').attr('src') + ".jpg",
																								'title': XMLData.find('title').text(),
																								'rel': XMLData.find('numItems').text(),
																								'index': i
																							})
																				.click(function()
																								{
																									portfolio.pause();
																									var thumbnail = jQuery(this);
																									portfolio.loadPortfolioItem(thumbnail.attr('index'));
																									return false;
																								})
																		});
											}
																	
				this.loadPortfolioItem = function(index)
											{
												var slideXMLInfo = portfolio.XMLData[index];
												var slideInfo = {
																	imgSrc	: portfolio.PortfolioImagesLocation + slideXMLInfo.find('image').attr('src') + ".jpg",
																	title	: slideXMLInfo.find('title').text(),
																	pages	: slideXMLInfo.find('numItems').text()
																};
											
												portfolio.MainItemHeading
																		.text(slideInfo.title)
																		.addClass(portfolio.settings.ProgressClass);
																		
												document.title = slideInfo.title + ' - Portfolio - Citron Studio';
												
												portfolio.Pagenation.empty();
												if (slideInfo.pages > 1) {
												for (i = 1; i <= slideInfo.pages; i++) {
													if (i == 1) {
														portfolio.Pagenation.append('<a href="#" rel="' + slideInfo.imgSrc + '">' + i + '</a> ');																												
													} else {
														portfolio.Pagenation.append('<a href="#" rel="' + slideInfo.imgSrc.replace(".jpg", "-" + i + ".jpg") + '">' + i + '</a> ');																												
													
													}
												}
												}
												portfolio.setPageEvents();
												
												if(portfolio.MainItemImage.attr('src') != slideInfo.imgSrc)
												{
													portfolio.MainItemImage
																			.stop()
																			.fadeTo(portfolio.settings.TransitionDelay, 
																								0.01,
																								function()
																								{
																									portfolio.MainItemImage
																										.load(function()
																														{
																															var img = jQuery(this);
																															img.stop().fadeTo(portfolio.settings.TransitionDelay, 1);
																															portfolio.MainItemHeading
																																	.removeClass(portfolio.settings.ProgressClass);
																															portfolio.Selection.removeClass(portfolio.settings.SelectionClass);
																															portfolio.Selection = portfolio.Thumbnails.filter(':eq(' + index + ')');
																															portfolio.Selection.addClass(portfolio.settings.SelectionClass);
																															if ((portfolio.AutoPlay == true) && (portfolio.settings.autoplay > 0))
																																portfolio.AutoPlayTimer = setTimeout(portfolio.play, portfolio.settings.autoplay);
																														});
																										
																									portfolio.MainItemImage.attr('src', slideInfo.imgSrc);
																								})
												}
												else
												{
													portfolio.Selection.removeClass(portfolio.settings.SelectionClass);
													portfolio.Selection = portfolio.Thumbnails.filter(':eq(' + index + ')');
													portfolio.Selection.addClass(portfolio.settings.SelectionClass);

													portfolio.MainItemHeading.removeClass(portfolio.settings.ProgressClass);
													if ((portfolio.AutoPlay == true) && (portfolio.settings.autoplay > 0))
														portfolio.AutoPlayTimer = setTimeout(portfolio.play, portfolio.settings.autoplay);
												}
											}
											
				this.play = function()
							{
								currentSlideIndex = parseInt(portfolio.Selection.attr('index'));
								var nextSlideIndex = (currentSlideIndex + 1 < portfolio.XMLData.length)?(currentSlideIndex + 1):0;
								portfolio.loadPortfolioItem(nextSlideIndex);
							}
							
				this.pause = function()
								{
									clearTimeout(portfolio.AutoPlayTimer);
									this.AutoPlay = false;
								}
				
				var portfolio = this;
				this.init();
			}
})
