(function(jQuery){
    jQuery.fn.extend({ 
        //pass the options variable to the function
        slideBuilder: function(options){
			
            var defaults = {
                slideTemplate: '#slideTemplate',
                slidesContainer: '#slidesContainer',
                slider: '#slider1',
				slideWraper: '#sliderWrap',
				baseURL : '',
				xmlSource: "mbc_homepage_slideshow_new.xml",
				flashBase: ""
            }
            
            var options = jQuery.extend(defaults, options);
            var slidesTemplates = new Array();
            options.slideTemplate = jQuery(options.slideTemplate);
            options.slidesContainer = jQuery(options.slidesContainer);
			options._thumbs = new Array();
			options._images = new Array();
			options._filesURL = new Array();
			options._playList = new Array();
			options.player = 'actual_vid';
			
			options.slideWraper = jQuery(options.slideWraper);
			options.slider = jQuery(options.slider);
			
            
            var getTwelveHourFormat = function(hour){
                var res = hour;
                
                if (res == 0) {
                    res = 12;
                }
                else 
                    if (res > 12) {
                        res = res - 12;
                    }
                
                return res;
            }
            
            var getCountryOffset = function(hour, offSet){
                var countryOffSet = hour + offSet;
                
                if (countryOffSet < 0) {
                    countryOffSet = 24 + countryOffSet;
                }
                else 
                    if (countryOffSet > 23) {
                        countryOffSet = countryOffSet - 24;
                    }
                
                return countryOffSet;
            }
            
            var getTwoDigitNum = function(num){
                var res = num;
                
                if (num < 10) {
                    res = '0' + num;
                }
                
                return res;
            }
            
            var getDayOfWeekName = function(dayNum){
                var dayNames = new Array();
                dayNames = ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة','السبت'];
                
                return dayNames[dayNum];
            }
            
            var getMonthName = function(monthNum){
                var monthNames = new Array();
                monthNames = ['يناير', 'فبراير', 'مارس', 'إبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
                
                return monthNames[monthNum];
            }
            
            var getResetDateTime = function(date){
				var tempDate = date;
				tempDate.setHours(0);
                tempDate.setMinutes(0);
                tempDate.setSeconds(0)
                tempDate.setMilliseconds(0);
                return tempDate;
            }

			var fetchContent = function(source, target, i){
				_id = target.attr('id') + i;
				content = source.text();
                target.html(content).attr('id',_id);
            }
			
			var switchClip = function(current){
				
				$f(options.player).stop();
				
				/*if( $f( options.player ).getState() < 0 )
				{
					$f( options.player ).load();
				}
				else
				{
					$f(options.player).stop();
				}*/
					
				//$f(options.player).hide();
				
				jQuery("#"+options.player).hide();
				jQuery(options.slideWraper).find("div.hasvideo").show();
				
				current = current.replace('tab','');
				current = parseInt(current);
				slidesCount = jQuery(options.slideWraper).find('li[class^="tab"]').size();
				slidesCount = parseInt(slidesCount);
				if(current == slidesCount){
					jQuery(options.slideWraper).find('div [id="stripNavL"]').hide();
					jQuery(options.slideWraper).find('div [id="stripNavR"]').show();
				}
				if(current == 1){
					jQuery(options.slideWraper).find('div [id="stripNavR"]').hide();
					jQuery(options.slideWraper).find('div [id="stripNavL"]').show();
				}
				
				if(current > 1 && current < slidesCount){
					jQuery(options.slideWraper).find('div [id="stripNavL"]').show();
					jQuery(options.slideWraper).find('div [id="stripNavR"]').show();
				}
			}
			
            return this.each(function(){
                jQuery.ajax({
                    type: "GET",
                    url: options.xmlSource,
                    dataType: "xml",
                    cache: true,
                    success: function(data){
                	
                		slides = new Array();
                		
                		jQuery(data).find('SLIDE-2').each(function(index, element){
                			displayOrder = parseInt( jQuery( element ).find( 'DISPLAYORDER' ).text() ) - 1;
                			slides[ displayOrder ] = element;
                		});

                		jQuery.each( slides, function( index, element ){
                        //$(data).find('SLIDE-2').each(function(index, element){
                			                		
                            _temTemplate = options.slideTemplate.clone();
                            
							//----------------------------
                            _div = jQuery(_temTemplate.find('div').get(0));
							_divId = (_div.attr('id') + index);
                            _div.attr('id', _divId);
							
							//-------------------------
							/*className = jQuery(element).find('CHANNELSHOWS').text();
							if (className.length == 1 && parseInt(className) == 0){
								className = 'mbc1';
							}
							_div.addClass(className);*/
							//--------------------------
							_img = _div.find('div.imgwrapper img');
							if((jQuery(element).find('IMAGE').text()).length == 0){
								_img.remove();
							}else{
								imageUrl = escape(jQuery(element).find('IMAGE').text());
								imageUrl = options.baseURL +imageUrl;
								_img.attr('src',imageUrl);
							}
							
							if( jQuery( element ).find( 'ANCHOR' ).get( index ) == null || jQuery( jQuery( element ).find( 'ANCHOR' ).get( index ) ).text() == '' )
							{
								fetchContent(jQuery(element).find('TITLE'), _temTemplate.find('#slide-title-no-anchor'), index);   
							}
							else
							{
								fetchContent(jQuery(element).find('TITLE'), _temTemplate.find('#slide-title'), index);
							}
                
							fetchContent(jQuery(element).find('BRIEF'), _temTemplate.find('#slide-brief'), index);
							
							
							_div.addClass( 'mbc1' );

							if( jQuery( this ).find( 'PROGRAMTIMINGS-2' ).size() > 0 )
							{
								sDate = jQuery( this ).find('STARTDATE').text();
								startDate = new Date( parseInt( sDate ) );
								resetStartDate = getResetDateTime( startDate );
								
								eDate = jQuery( this ).find('ENDDATE').text();
								endDate = new Date( parseInt( eDate ) );
								resetEndDate = getResetDateTime( endDate );
								
								todayDate = new Date();
								todayDate = getResetDateTime( todayDate );
								
								daysOfWeek = new Array();
								gmtTimes = new Array();
								
								jQuery(this).find('PROGRAMTIMINGS-2').each(function(ind, ele){
									relatedProgramTiming = jQuery(this);

									_div.removeClass( 'mbc1' );
									className = 'mbc1';

									if (className.length == 1 && parseInt(className) == 0){
										className = 'mbc1';
									}
									else
									{
										className = relatedProgramTiming.find('CHANNELSHOWS').text();
									}
									
									_div.addClass(className);
									
									
									daysOfWeek.push( parseInt( jQuery( this ).find('DAYOFWEEK').text() ) );
									gmtTimes.push( jQuery( this ).find('STARTTIME').text() );
									
									//alert( jQuery( this ).find('STARTTIME').text() );
								})
								
								if( !sDate )
								{
									_temTemplate.find('#slide-ksa-time').html('');
									_temTemplate.find('#slide-gmt-time').html('');
								}
								else if( !eDate )
								{
									if( todayDate <= resetStartDate )
									{
										_temTemplate.find('#slide-date').html( getDayOfWeekName( resetStartDate.getDay() ) + '<br/>' + resetStartDate.getDate() + ' ' + getMonthName( resetStartDate.getMonth() ) );
									}
								}
								else
								{
									isSet = false;
									
									if( todayDate <= resetEndDate )
									{
										  if( resetStartDate == resetEndDate )
										  {
										    	gmtTime = gmtTimes[ 0 ];
												gmtTimeArr = gmtTime.split( ":" );
												gmtTime = new Number( gmtTimeArr[ 0 ] ) + ':' + gmtTimeArr[ 1 ];
												ksaTime = getCountryOffset( new Number( gmtTimeArr[ 0 ] ), 3 ) + ':' + gmtTimeArr[ 1 ];
												
												_temTemplate.find('#slide-date').html( getDayOfWeekName( resetStartDate.getDay() ) + '<br/>' + resetStartDate.getDate() + ' ' + getMonthName( resetStartDate.getMonth() ) );

												_temTemplate.find('#slide-ksa-time').html( ksaTime + '&nbsp;' + _temTemplate.find('#slide-ksa-time').text() );
												_temTemplate.find('#slide-gmt-time').html( gmtTime + '&nbsp;' + _temTemplate.find('#slide-gmt-time').text() );
												
												isSet = true;
				                          }
				                          else
				                          {
				                        	  if( todayDate > resetStartDate )
				                        	  {
				                        		  resetStartDate = todayDate;
				                        	  }
				                        	  
				                        	  for( i=0;i<7;i++ )
				                        	  {
					                              jQuery.each( daysOfWeek, function( index, element ){
      												
        												//alert( (resetStartDate.getDay() + 1) + ' : ' + element + ' : ' + isSet );
        												
        												if( isSet == false && (resetStartDate.getDay() + 1) == element )
        												{
        												    gmtTime = gmtTimes[ index ];
          													gmtTimeArr = gmtTime.split( ":" );
          													gmtTime = new Number( gmtTimeArr[ 0 ] ) + ':' + gmtTimeArr[ 1 ];
          													ksaTime = getCountryOffset( new Number( gmtTimeArr[ 0 ] ), 3 ) + ':' + gmtTimeArr[ 1 ];
          													
          													_temTemplate.find('#slide-date').html( getDayOfWeekName( resetStartDate.getDay() ) + '<br/>' + resetStartDate.getDate() + ' ' + getMonthName( resetStartDate.getMonth() ) );
          	
          													_temTemplate.find('#slide-ksa-time').html( ksaTime + '&nbsp;' + _temTemplate.find('#slide-ksa-time').text() );
          													_temTemplate.find('#slide-gmt-time').html( gmtTime + '&nbsp;' + _temTemplate.find('#slide-gmt-time').text() );
          													
          													isSet = true;
        												}
        											})
        											
        											if( isSet )
            										{
            											break;
            										}
            										
            										nextDayMilliSecs = resetStartDate.getTime() + 86400000;
            										resetStartDate = new Date( nextDayMilliSecs );
				                        	  }
				                          }
									}

									if( isSet == false )
									{
										_temTemplate.find('#slide-ksa-time').html('');
										_temTemplate.find('#slide-gmt-time').html('');
									}
								}
							}
							else
							{
								_temTemplate.find('#slide-ksa-time').html('');
								_temTemplate.find('#slide-gmt-time').html('');
							}
							
							if( jQuery( this ).find('MESSAGE').text().length > 0 )
							{
								_temTemplate.find('#slide-date').html( jQuery( this ).find('MESSAGE').text() );
								
								_temTemplate.find('#slide-ksa-time').html('');
								_temTemplate.find('#slide-gmt-time').html('');
							}

								
                            jQuery(this).find('RELATEDLINK-2').each(function(ind, ele){
                                relatedLink = jQuery(this);
                                
                                linkDisplayOrder = parseInt( relatedLink.find('LINK-DISPLAYORDER').text() );
                                
                                switch( linkDisplayOrder )
                                {
                                    case 1:
                                        _temTemplate.find('#slide-home-url').html(relatedLink.find('LINK-TITLE').text());
                                        _temTemplate.find('#slide-home-url').attr('href', relatedLink.find('EXTERNALLINK').text());
                                        _temTemplate.find('#slide-home-url').attr('target', relatedLink.find('LINK-TARGET').text());
                                        break;
                                    case 2:
                                        _temTemplate.find('#slide-page-url').html(relatedLink.find('LINK-TITLE').text());
                                        _temTemplate.find('#slide-page-url').attr('href', relatedLink.find('EXTERNALLINK').text());
                                        _temTemplate.find('#slide-page-url').attr('target', relatedLink.find('LINK-TARGET').text());
                                        break;
                                }
                            })
							
                            if( jQuery( this ).find( 'RELATEDLINK-2' ).size() == 1 ) 
                            {
                                _temTemplate.find('#slide-page-url').parent().hide();
                            }
                            else if( !jQuery( this ).find( 'RELATEDLINK-2' ).size() ) 
                            {
                            	_temTemplate.find('#slide-home-url').parent().hide();
                            	_temTemplate.find('#slide-page-url').parent().hide();
                            }
							
							//------------------------------------------------
							_filesURL = options.baseURL+escape(jQuery(this).find('FILE').text());
							options._filesURL[index] = _filesURL;
							//------------------------------------------------
							
							//------------------------------------------------
							_thumbURL = jQuery(this).find('THUMB').text();
							options._thumbs[index] = options.baseURL+escape(_thumbURL);
							//------------------------------------------------
							
							//------------------------------------------------
							_image = jQuery(this).find('IMAGE').text();
							if(_image.length == 0){
								_image = '/images/slider/has_video.png';
							}else{
								_image = options.baseURL+escape(_image);
							}
							options._images[index] = _image;
							//------------------------------------------------
							
							//------------------------------------------------
							//options._playList[options._playList.length] =  {url: options._images[index], scaling: 'scaling',duration: 0};
							options._playList[options._playList.length] =  {url: options._filesURL[index], autoPlay: false};
							//------------------------------------------------
							
							
							//------------------------------------------------
							_html = _temTemplate.html();
                            options.slidesContainer.append(_html);
							//------------------------------------------------
							
                        });
						
                        jQuery(options.slider).codaSlider({thumbs:options._thumbs});
						
						
						jQuery("div [id^='img']").find("div.hasvideo").each(function(i){
							jQuery(this).click(function(){
								
								jQuery("#"+options.player).show();
								
								//$f(options.player).show();
								clipIndex = (i);
								
								if( jQuery.support.noCloneEvent == true )
								{
								  	$f(options.player).onLoad(function() { 
								  		$f(options.player).play(clipIndex); 
				                    });
				                }
				                else
				                {
				                  $f(options.player).play(clipIndex);
				                }
								
								jQuery(this).hide();
								
							})
						})
						
						/*jQuery(options.slideWraper).find('div.stripNavR,div.stripNavL').click(function(){
							//$f(options.player).onLoad(function() {
								switchClip(jQuery(options.slideWraper).find('a.current').parent().attr('class'));
							//});
						});
						
						jQuery(options.slideWraper).find('li[class^="tab"]').click(function(){
							
							
							//$f(options.player).onLoad(function() {
								switchClip(jQuery(this).attr('class'));
							//});
						});*/
						
						//jQuery(options.slideWraper).find("div.default img").fadeTo("fast", 0.40);

						config = {
								clip:{
									onFinish:function(clip){
										try {
											//if((clip.index % 2) !=0){
												//clipIndex = clip.index;
												//clipIndex = clipIndex-2;
												//$f(options.player).stop();
												//$f(options.player).hide();
												//jQuery("#"+options.player).hide();
												//jQuery(options.slideWraper).find("div.hasvideo").show();
												switchClip(jQuery(options.slideWraper).find('a.current').parent().attr('class'));
											//}
										}catch(e){}
									},
									autoPlay:false,
									autoBuffering:true
								},
								key:'#$becb78967d846e2827f',
								playlist:options._playList
							}
						//flowplayer(options.player,options.baseURL+options.flashBase+'/flowplayer.commercial-3.1.2.swf', config );
						var flashpath= options.flashBase +'/flowplayer-3.1.1.swf';
						
						flowplayer(options.player, { src: flashpath, wmode: 'opaque' }, config);
						switchClip(jQuery(options.slideWraper).find('a.current').parent().attr('class'));
                    }
                });
            });
        }
    });
})(jQuery);
