﻿/* javascript assets v.0.1 for pgnig v.2.0
author: p.palubski, p.lis, p.rupiewicz, m.kaczmarek
requirements: jQuery javascript library
*/
jQuery.noConflict();

var $j = jQuery; /*  shortcut */

$j(document).ready(function(){
	
	var articleLinks = $j('.article-content a'); 
	articleLinks.each(function(){
    	if($j(this).children('img').length){	
	    	$j(this).addClass('no-link-border');   
    	}
	});
	$j('.article-content a[href ^="#"]').addClass('no-link-border');
	$j().backgroundHack();
	$j().basicSearchValidator();
	$j().toggleContextMenu();
	$j().dynamicVisual();
	$j().advanceSearchSort();
	
	//date pickers for  advancedsearchFilter		
	if ($j('.datepicker').length) {
		var dates = $j("#advancedsearch-date-from, #advancedsearch-date-to").datepicker({
			changeMonth: true,
			changeYear: true,
			dateFormat: 'yy.mm.dd',
			showOn: 'both',
			buttonImage: '/templates/se/skins/style1/img/datepicker/icon-datepicker.gif',
			buttonImageOnly: true,
			onSelect: function(selectedDate){
				var option = this.id == "advancedsearch-date-from" ? "minDate" : "maxDate", instance = $j(this).data("datepicker");
				date = $j.datepicker.parseDate(instance.settings.dateFormat ||
				$j.datepicker._defaults.dateFormat, selectedDate, instance.settings);
				dates.not(this).datepicker("option", option, date);
			}
		});
	}
	$j().textSize();

	$j().toggleFAQ();

	if($j('#pagebody').hasClass('.ie7')){
		$j().focusHack();	
	}
});

//enable :focus in ie7
$j.fn.focusHack = function(){
	var links = $j('.menu-item a');
	links.each(function(){
		var that = $j(this);
		that.focus(function(){
			links.removeClass('focus');
			that.addClass('focus');
		});
	});
}

$j.fn.backgroundHack = function(){ 
	var lastPortlet = $j('.main-subpage > .col-right > .portlet:last-child');
		if(!lastPortlet.hasClass('p-articles')){
			$j('.main-subpage > .col-right > .p-articles').css('background','#fff');
		}
	var newDiv = $j("<div />");
	newDiv.addClass('hack-bg').appendTo(lastPortlet);
	lastPortlet.addClass('hack-bg-wrapper');
}

/* Printing functions */
$j.fn.executePrint = function(options) {
	var settings = $j.extend({
			buttonClass: 'print-button'
		}, options);
	$j('.'+settings.buttonClass).click(function() {
		window.print();
		return false;
	});
}

$j.fn.openPrintWindow = function(options) {
		var settings = $j.extend({
			buttonClass: 'print',
			buttonContainerClass: 'print-button'
		}, options);

	$j('.'+settings.buttonClass).each(function(i){
		$j(this).click(function(){
			if($j(this).parent('.'+settings.buttonContainerClass).length == 0){
				window.open($j(this).attr('href'),"","menubar=1,resizable=1,width=800,height=600,scrollbars=1");
				return false;
			}
		});
	});
}

$j.fn.advanceSearchSort = function(){
	var links = $j('.search-result-top ul li a'),
		select = $j('#categorySelect'),
		options = select.children();

	links.each(function(i){ 
		$j(this).click(function(e){
        	e.preventDefault();
			select.val(options.eq(i+1).val());
        	$j('[name="advancedForm"]').submit();    
		});
	});
}



$j.fn.basicSearchValidator = function(options) {
	var settings = $j.extend({
		field: 'basic-search-field',
		form: 'basic-search-form',
		button: 'basic-search-button',
		messageTemp: ''
	}, options);

	settings.messageText = $j('#'+settings.field).val();

	$j('#'+settings.field).focus(function(event){
		if(settings.messageTemp.length == 0){
			$j(this).val('');
		}
	});

	$j('#'+settings.field).blur(function(event){
		settings.messageTemp = $j(this).val();
		if(settings.messageTemp.length == 0){
			$j(this).val(settings.messageText);
		}
	});
}



$j.fn.toggleContextMenu = function(options) {
	var settings = $j.extend({
		menuClass: 'p-context-menu',
		openedClass: 'opened',
		closedClass: 'closed',
		currentClass: 'contextMenuShowOpen'
	}, options);

	$j('.'+settings.menuClass+' ul li').each(function(i){
	    var node = $j(this).find('ul:eq(0)');

	    $j(this).click(function(event){
			event.stopPropagation();

			var thisRef = this;

			if(node.length>0){
		        node.slideToggle();
				if($j(this).hasClass(settings.closedClass)){
					$j(this).removeClass(settings.closedClass).addClass(settings.openedClass);
				}else{
					$j(this).removeClass(settings.openedClass).addClass(settings.closedClass);
				}
			}

			$j('.'+settings.openedClass).each(function(x){
				if( thisRef != this ){
					if ( !$j(thisRef).isChildOf(this) ){
						$j(this).find('ul:eq(0)').slideToggle();
						$j(this).removeClass(settings.openedClass).addClass(settings.closedClass);
					}
				}
			});

	        return false;
	    });

		$j(this).find('a').click(function(event){
			 event.stopPropagation();
		})

	});

	$j('.'+settings.menuClass+' ul').find('li a.'+settings.currentClass+':eq(0)').each(function(i){
		$j(this).parent().addClass(settings.openedClass);
		$j(this).parent().removeClass(settings.closedClass);
    });


}

$j.fn.extend({
    isChildOf: function( filter_string ) {
		var parents = $j(this).parents().get();
	  if ( parents.length == 0 ) {
	   return true;
	  }
      for ( j = 0; j < parents.length; j++ ) {
       if ( parents[j] == filter_string ) {
    	return true;
       }
      }
      return false;
    }
});

$j.fn.randomParameter = function(options){
	var settings = $j.extend({
		multiplier: 10000
	}, options);

	var randParam = Math.random();
	randParam = randParam * settings.multiplier;
	randParam = Math.ceil(randParam);
	var randomParameter = '&randParam='+randParam ;
	return randomParameter;
}

$j.fn.dynamicVisual = function(options) {
	var settings = $j.extend({
		refreshContentContainer: 'p-dynamic-visual',
		visualContainer: 'portlet-body',
		innerContentContainer: 'dynamic-visual-content',
		fadeContainer: 'content-container',
		visualAjaxLink: 'visual-ajax-link',
		visualLinksContainer: 'visual-buttons',
		activeClass: 'active',
		inactiveClass: 'inactive',
		hoverClass: 'hover',
		hoverImageClass: 'hover-image',
		inactiveImageClass: 'inactive-image',
		carouselTimeout: 8000,
		fadeTime: 700,
		stopCarousel: false,
		linkIterator: 1
	}, options);

	/* zatrzymywanie karuzeli */
	$j('.'+settings.refreshContentContainer).hover(
		function(){
			settings.stopCarousel = true;
		}/*,
		function(){
			settings.stopCarousel = false;
		}*/
	);

	arrayOfLinks = new Array();

	innerContentContainer = new Array();

	/* karuzela */
	if($j('.'+settings.visualLinksContainer).length > 0){
		var node = $j(this).find('li a');
		var ajaxNodes = node.parent().find('span.'+settings.visualAjaxLink);
		ajaxNodes.each(function(i){
			arrayOfLinks.push($j(this).text());
		});

		/* preload all */

		if(settings.linkIterator != 0){
			$j('.'+settings.refreshContentContainer+' .'+settings.visualContainer).wrap("<div class='"+settings.innerContentContainer+"' id='content-iterator-id-0'></div>");
			innerContentContainer.push($j('#content-iterator-id-0'));
		}

		function ajaxChain_(){
			if(settings.linkIterator > 0 && arrayOfLinks.length > 1){
					$j.ajax({
						url: arrayOfLinks[settings.linkIterator] + $j().randomParameter(),
						cache: true,
						success: function(html){
								if(settings.linkIterator > 0){

									$j('.'+settings.refreshContentContainer).append("<div class='"+settings.innerContentContainer+" hidden' id='content-iterator-id-"+settings.linkIterator+"'>"+html+"</div>");
									innerContentContainer.push($j('#content-iterator-id-'+settings.linkIterator));
										if(settings.linkIterator < arrayOfLinks.length - 1 ){
											settings.linkIterator++;
											ajaxChain_();
										}else{
											settings.linkIterator=0;
											callEventObservers_();
											callTimer_();
										}

								}

								}
					});
			}
		}

		ajaxChain_(); /* call */

		/* end preload all */

		function callTimer_(){
		$j.timer(settings.carouselTimeout, function (timer) {
			if (!settings.stopCarousel) {
						innerContentContainer[settings.linkIterator].fadeOut(settings.fadeTime,function(){
							if(settings.linkIterator < arrayOfLinks.length - 1 ){
								settings.linkIterator++;
								innerContentContainer[settings.linkIterator].css({display:'none'});
								innerContentContainer[settings.linkIterator].fadeIn(settings.fadeTime);
							}else{
								innerContentContainer[0].css({display:'none'});
								innerContentContainer[0].fadeIn(settings.fadeTime);
								settings.linkIterator=0;
							}

						});

			}else{
				timer.stop(); /* zatrzymanie permanentne timera */
			}

		});
		}

		function callEventObservers_(){

		$j('.'+settings.visualLinksContainer).each(function(i){
			var node = $j(this).find('li a');
			var ie6 = $j('body.ie6').length;

			node.click(function(event){
				event.preventDefault();
				var ajaxLink = $j(this).parent().find('span.'+settings.visualAjaxLink).text();
				var currentPage = $j(this).parents('div.'+settings.innerContentContainer);
				if($j(this).hasClass(settings.inactiveClass) || $j(this).hasClass(settings.hoverClass)){

					$j(arrayOfLinks).each(function(index){
						if(this == ajaxLink){
							currentPage.fadeOut(settings.fadeTime,function(){
								innerContentContainer[index].fadeIn(settings.fadeTime);
							});
						}
					});
				}
			});

			node.hover(
				function(){
					if($j(this).hasClass(settings.inactiveClass)){
						if(ie6){
							srcA = $j(this).find('.'+settings.hoverImageClass).attr('src').split("binSrc");
							var src = '/binSrc'+srcA[1];
							$j(this).css('filter','progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+src+'", sizingMethod="crop")! important');
						}else{
						$j(this).addClass(settings.hoverClass);
						}
					}
				},
				function(){
					if($j(this).hasClass(settings.inactiveClass) || $j(this).hasClass(settings.hoverClass)){
						if(ie6){
							srcA = $j(this).find('.'+settings.inactiveImageClass).attr('src').split("binSrc");
							var src = '/binSrc'+srcA[1];
							$j(this).css('filter','progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+src+'", sizingMethod="crop")! important');
						}else{
							$j(this).removeClass(settings.hoverClass);
						}
					}
				}
			);
		});
		}


	}

}



function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}




$j.fn.textSize = function(options) {
	var settings = $j.extend({
		sizeClass: 'change-text-size',
		sizeOneButton: 'size-one',
		sizeTwoButton: 'size-two',
		sizeTreeButton: 'size-tree',
		sizeOneClass: 'size-1',
		sizeTwoClass: 'size-2',
		sizeTreeClass: 'size-3'
	}, options);

	$j('.'+settings.sizeOneButton).bind('click',function(){
		$j('.'+settings.sizeClass).removeClass(settings.sizeTreeClass).removeClass(settings.sizeTwoClass).addClass(settings.sizeOneClass);
		return false;
	});

	$j('.'+settings.sizeTwoButton).bind('click',function(){
		$j('.'+settings.sizeClass).removeClass(settings.sizeTreeClass).removeClass(settings.sizeOneClass).addClass(settings.sizeTwoClass);
		return false;

	});

	$j('.'+settings.sizeTreeButton).bind('click',function(){
		$j('.'+settings.sizeClass).removeClass(settings.sizeTwoClass).removeClass(settings.sizeOneClass).addClass(settings.sizeTreeClass);
		return false;
	});

}


$j.fn.toggleFAQ = function(options){
	var settings = $j.extend({
		container: 'single-article-wrapper',
		content: 'single-article-content',
		buttonDown: 'down-button',
		buttonUp: 'up-button',
		markDown: 'roll-down',
		markUp: 'more',
		printable: 'layout-print'
	}, options);

	$j('.'+settings.container).each(function(){
		if($j('body').find('.'+settings.printable).length==0){
			var container = $j(this);
			container.find('.'+settings.buttonDown).click(function(){
				if(!$j(this).hasClass(settings.markDown)){
					container.find('.'+settings.content).slideDown("slow");
					$j(this).addClass(settings.markDown);
				}else{
					container.find('.'+settings.content).slideUp();
					$j(this).addClass(settings.markUp);
					$j(this).removeClass(settings.markDown);
				}
				return false;
			});

			container.find('.'+settings.buttonUp).click(function(){
				container.find('.'+settings.content).slideUp();
				container.find('.'+settings.buttonDown).addClass(settings.markUp);
				container.find('.'+settings.buttonDown).removeClass(settings.markDown);
				return false;
			});
		}
	})
}


$j.fn.initGasQualityMonitoring = function() {
	initGasQualityMonitoring();
}
