function cHelpWindow(target) {
    var Layer = new Windows();
    Layer.close('.terminate');
    j.ajax({
        url: target,
        cache: false,
        success: function(content){
            Layer.init(content);
        }
    });
}

function szkSelect(target, fn)
{
	this.$select = jQuery(target);
	this.$aTrigger = this.$select.find('>a');
	this.$selectOptions = this.$select.find('div>span');
	this.$aOptions = this.$selectOptions.find('a');
	this.selected = this.$aTrigger.eq(0);
	this.updateText();
	
	this.customFn = fn;
	
	var vthis = this;
	
	this.$aOptions.click(
		function()
		{
			vthis.selectOption(jQuery(this).attr('data-value'));
			return false;
		}
	);
	
	this.$aTrigger.click(
		function()
		{
			vthis.$selectOptions.toggle();
			return false;
		}
	);
}

szkSelect.prototype.selectOption = function(option)
{
	var vthis = this;
	var $new = vthis.$selectOptions.find('[data-value=' + option + ']');
	vthis.$selectOptions.hide();
	if(vthis.selected.attr('data-value') == $new)
		return false;
		
	vthis.selected = $new;
	vthis.afterSelection();
}

szkSelect.prototype.updateText = function()
{
	this.$aTrigger.html( this.selected.html() );
	return true;
}

szkSelect.prototype.updateLabel = function()
{
	this.$aOptions.removeClass('active');
	this.selected.addClass('active');
	return true;
}

szkSelect.prototype.afterSelection = function()
{
	this.updateText();
	this.updateLabel();
	this.customFn( this.selected.attr('data-value') );
	return true;
}


var Form = {
    parse: function(target) {
        var input = [];
        jQuery(target).each(function() {
            if (jQuery(this).is("[type='checkbox']")) {
                if (jQuery(this).is(':checked')) {
                    input.push(this.name + '=' + escape(this.value));
                }
            } else {
                input.push(this.name + '=' + escape(this.value));
            }
        })
        return input.join('&');
    },

    checkbox: function(target) {
        jQuery(target).find('.checkbox').each(function(i, e) {
            if (jQuery(e).find('input').is(':checked')) {
                jQuery(e).addClass('checked');
            };
        });
        jQuery(target).find('.checkable').bind('click', function() {
            if (jQuery(this).parent().hasClass('disabled')) {
                return false;
            }
            var input = jQuery(this).parent().find('input');
            var check = jQuery(this).parent().find('.checkbox');
            if (check.hasClass('checked')) {
                check.removeClass('checked');
                input.attr('checked', false);
            } else {
                check.addClass('checked');
                input.attr('checked', true);
            }
        });
    }
}
jQuery.fn.sortElements=(function(){var sort=[].sort;return function(comparator,getSortable){getSortable=getSortable||function(){return this;};var placements=this.map(function(){var sortElement=getSortable.call(this),parentNode=sortElement.parentNode,nextSibling=parentNode.insertBefore(document.createTextNode(''),sortElement.nextSibling);return function(){if(parentNode===this){throw new Error("You can't sort elements if any one is a descendant of another.");}parentNode.insertBefore(this,nextSibling);parentNode.removeChild(nextSibling);};});return sort.call(this,comparator).each(function(i){placements[i].call(getSortable.call(this));});};})();
String.prototype.format=function(){var pattern=/\{\d+\}/g;var a=arguments;return this.replace(pattern,function(capture){return a[capture.match(/\d+/)];});};
var userid = typeof userid == 'undefined' ? false : userid;
var time = 300;

var cookie = {
    write: 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=/";        
    },
    
    read: function(name) {
        var real = name + "=";
        var ca = document.cookie.split(';');
        for (var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(real) == 0) return c.substring(real.length,c.length);
        }
        return '';
    },
    
    erase: function(name) {
        cookie.write(name, '', -1);
    }
};

var j = jQuery.noConflict();



var message = {
	defaults: '<span class="results">Zobacz wszystkie wyniki wyszukiwania...</span>',
	schortQuery: "<span>Podana fraza jest za krótka.</span>",
	closeEmptyRequest: '<span class="empty">Podana fraza nie została odnaleziona. <br />Spróbuj zmodyfikować swoje zapytanie.</span>',
	searchError: '<span  class="empty">Podczas wyszukiwania wystąpił błąd. <br />Spróbuj ponownie.</span>',
	searchWorking: '<span class="loading">Trwa wyszukiwanie</span>'
};

var core = {'common': {}, 'tools': {}, 'widgets': {}, 'livesearch': {}};

core.tools = {
    inputs: function(target) {
        if ((typeof target == 'undefined') == false) {
            j('input', target).each(function() {
                j(this).attr('alt', j(this).attr('value'));
            });
            j('textarea', target).each(function() {
                j(this).attr('alt', j(this).html());
            });

            j('input, textarea', target).focus(function() {
                if (j(this).attr('type') == 'text' 
                    && j(this).attr('value') == j(this).attr('alt')) {
                    j(this).attr('value', '');
                }
                    
                if (j(this).is('textarea') 
                    && j(this).html() == j(this).attr('alt')) {
                    j(this).html('');
                } 
                    
            });

            j('input, textarea', target).blur(function() {
                if (j(this).attr('type') == 'text' 
                    && j(this).attr('value') == '') {
                    j(this).attr('value', j(this).attr('alt'))
                }
                if (j(this).is('textarea') 
                    && j(this).html() == '') {
                    j(this).html(j(this).attr('alt'));                        
                }
            });
        }
    }
}

core.common = {
    start: function() {
        this.fixes();
        this.fonts();
        this.login();
    },

    fixes: function() {
        j("input[name*='javascript']").val(1);
        j("a[rel*='external']").attr('target', '_blank');
    },
    
    fonts: function() {
    	Cufon.replace('#vignette ul a', {fontFamily: 'GlasgowPl RR ExtraBold'});
        Cufon.replace('#widgets h2 .cufon,#widgets h3 .cufon, .decoration, .loged a, #tutorials-anchors a span', {fontFamily: 'GlasgowPl RR Light'});
        Cufon.replace('#widgets .bluebox h3,#widgets .bluebox h5,#discussion h4 .cufon', {fontFamily: 'GlasgowPl RR Light'})
        Cufon.replace('#widgets h2 .cufon strong,#widgets h3 .cufon strong,#discussion h4 .cufon strong, .discussions h4 strong, #tutorials .list em, .decoration strong,  .loged a strong, #associated li a, #tutorials-anchors a span strong', {fontFamily: 'GlasgowPl RR ExtraBold', hover: true});
    },

    login: function() {
        function close() {
            var close = true;
            j(this).parents().map(function () { return this.id; }).each(function(e) {
                if (this == 'loginform') {
                    close = false;
                }
            });
            if (close == true) {
                j('#loginform').fadeOut(300);
                j('*:not(form#loginform *, form#loginform)').unbind('click', close);
            }
            return false;
        }
        j('#loginform').mouseover(function() { 
            clearTimeout(time);
            j('*:not(form#loginform *, form#loginform)').unbind('click', close); 
        });
        j('#loginform').mouseout(function() {
            time = setTimeout(function() {
                j('*:not(form#loginform *, form#loginform)').unbind('click', close);
                j('#loginform').fadeOut(300);
            }, 5000);
            j('*:not(form#loginform *, form#loginform)').bind('click', close); 
        });
        j('#vignette .login a').live('click', function() {
            j('#loginform').fadeIn(300);
            return false
        })
        j("#loginform input[name='data[username]']").val('Login').one('click focus', function() {
            j(this).val('');
        });
        j("#loginform input[name='data[password]']").val('Hasło').one('click focus', function() {
            var input1   = document.getElementById('login-password');
            var input2   = input1.cloneNode(false);
            input2.type  = 'password';
            input2.value = '';
            input1.parentNode.replaceChild(input2, input1);
            input2.focus();
        });
        j('form#loginform').submit(function() {
            j('#loginform .loader input').fadeOut(60, function() {
                j('<img src="/template/image/common/loading.black.gif" />').appendTo(j(this).parent());
            });
            j('#loginform .error').remove();
            var data = {
                "data[username]": j("#loginform input[name='data[username]']").val(),
                "data[password]": j("#loginform input[name='data[password]']").val(),
                "data[referer]": j("#loginform input[name='data[referer]']").val()
            }
            j.post('/ajax/login/', data, function(data) {
                if (data.status == "true") {
                    window.location.href = data.redirect;
                } else {
                    j('#loginform').append('<p class="error">' + data.message + '</p>');
                }
                j('#loginform .loader img').fadeOut(60, function() {
                    j('#loginform .loader input').fadeIn(60);
                    j(this).remove();
                }, 'json');
            });
            return false;
        });
    }
}

core.livesearch = { 
    start: function() {
        this.construct();
        this.proced();
        j('form#searchform').submit(function() {
            var query = j("#searchform input[name='query']").attr('value');
            query = encodeURI(query);
            window.location = '/szukaj/' + query;
            return false
        });
    },
 
    construct: function() {
        var jcontainer = j('<div id="livesearch"></div>');
        j('<p class="open"></p><div class="content"></div><p class="close"></p>').appendTo(jcontainer);
        jcontainer.appendTo('#searchform').hide(0);
    },
 
    navigator: function() {
        if (j('#livesearch .content dl').size() == 0) {
            j('#livesearch .content').addClass('content-empty');
        } else {
            j('#livesearch .content').removeClass('content-empty');
        }
    },
 
    proced: function() {
        j('#root, .fixedwrap').eq(0).addClass('overlay-wraper');
        var jcontainer = j('#livesearch');
        var jquery = j('#searchform input');
        var jresults = j('<span class="results">Zobacz wszystkie wyniki wyszukiwania...</span>');
        var jmessage = j('#livesearch .close');
        var temporary = null;
        jresults.appendTo('#livesearch .close').hide();
 
        function messageStatus(data) {
            jmessage.find('span').remove();
            jresults.hide();
            data = data ? data : 'defaults';
            if (data) {
                data = eval('message.' + data);
                if (data) {
                    var jproces = j(data);
                    jproces.appendTo(jmessage);
                }
            }
            return false;
        }
 
        function suspendSearch() {
            if (jcontainer.not(':visible')) {
                jQuery("#serchform input[name='query']").attr('value', '');
                jcontainer.find('dl').remove();
            }
        }
 
 
        function newLocation() {
            window.location = j(this).attr('href');
        }
 
        function openSearch() {
            core.livesearch.navigator();
            var values = {
                'height' : jQuery('.overlay-wraper').height(),
                'width'  : jQuery('.overlay-wraper').width()
            };
            jcontainer.not(':visible').fadeIn(60, function() {
                j('<div id="overlay"></div>').animate({opacity: 0}, 0).prependTo('.overlay-wraper').css(values).animate({opacity: 0.6}, 40, function() {
                    j('#overlay').bind('click', closeSearch);
                });
            }).attr('visible', true);
            j('body').addClass('livesearch');
            j('#livesearch .results').live('click', function() {
                j('form#searchform').submit();
                return false;
            });
        }
 
        function closeSearch() {
            j('#overlay').unbind('click', closeSearch);
            j('body').removeClass('livesearch');
            jcontainer.fadeOut(80, function() {
                j('#overlay').animate({opacity: 0}, 60).remove();
            }).attr('visible', false);
        }
 
        jquery.focus(function() {
            if ('Szukaj na stronie...' == j(this).val()) j(this).val('')
            if (jcontainer.not(':visible') && j(this).val().length > 0) { openSearch(); search(); }
        })
 
        function emptyRequest(response) {
            timeEmpty = setTimeout( function() {
                jcontainer.find('dl').remove();
                if (response) {
                    messageStatus(response);
                }
                core.livesearch.navigator();
            }, 300);
        }
 
        jquery.bind('keyup', function(e) {
            if (e.keyCode === 39 || e.keyCode === 37) {
                return false;
            }
            search();
        });
 
        function search() {
            var query = jquery.val();
            if (query.length == 0) {
                closeSearch();
                return false;
            }
            if (query.length < 2) {
                emptyRequest('schortQuery');
                return false;
            }
            if (query === temporary) {
                return false;
            }
 
            clearTimeout(time);
            messageStatus('searchWorking');
 
            time = setTimeout( function() {
                    j.ajax({
                       url: '/services/livesearch.php',
                       data: "query=" + query,
                       dataType: "json",
                       success: function(data) {
                            if (data.status == false) {
                                emptyRequest('closeEmptyRequest');
                            } else {
                                emptyRequest('closeDefault');
                                timeWrite = setTimeout( function() {
                                    core.livesearch.parse(data.data);
                                    messageStatus('defaults');
                                }, 300);
                            }
                        },
                        complete: function(request, status) {
                            switch (status) {
                                case 'parsererror': {
                                    emptyRequest('closeEmptyRequest');
                                    break;
                                }
                                case 'error': {
                                    emptyRequest('searchError');
                                    break;
                                }
                            }
                        }
                    })
 
            }, 300);
            temporary = query;
            openSearch();
        };
    },
 
    parse: function(data) {
        for (key in data) {
            var jcontent = j('<dl class="'+key+'"><dt></dt></dl>');
            var row  = eval("data." + key);
            j.each(row, function(i, e) {
                var title = e.title.replace('<br />', '');
                var anchor = '';
                switch (key) {
                    case 'tutorials':
                        anchor += '<dd><a href="/poradnik/artykul/' + e.url + '"><span class="' + e.category + '"></span>' + e.title;
                        break;
                    case 'inspiractions':
                        anchor += '<dd><a target="_blank" href="' + e.url + '"><span></span>' + e.title;
                        break;
                    case 'photographers':
                        anchor += '<dd><a href="/inspiracje/' + e.url + '"><span></span>' + e.title;
                        break;
                    case 'discussions':
                        anchor += '<dd><a href="/poradnik/dyskusja/' + e.url + '"><span></span>' + e.title;
                        break;
                }
                anchor += '</a></dd>';
                j(anchor).appendTo(jcontent);
            })
            jcontent.appendTo('#livesearch .content').fadeIn();
        }
        core.livesearch.navigator();
        j('.link').attr('target', '_blank');
    }
}

j(document).ready(function() { 
    core.common.start();
    core.livesearch.start();
    j('#guide-anchor .destroy').click(function() {
        j('#guide-anchor').remove();
        cookie.write('CakeCookie[Guide]', true, 356);
        return false;
    });
    if (document.getElementById('guide-index')) {
        cookie.write('CakeCookie[Guide]', true, 356);
    };
    var Layer = new Windows();
    Layer.close('.terminate');
    Layer.open('.action-helper',
        function() {
            j.ajax({
                url: Layer.handler,
                cache: false,
                success: function(content){
                    Layer.init(content);
                }
            });
        }
    );
    
    if(0 && location.href.indexOf('www.szerokikadr.pl') == -1)// && location.href.indexOf('#tidebug') > -1)
    {
// 		j('body').append('<div style="color: #fff; padding: 10px; border: 1px solid red; background: black;" id="ecmsdebug"></div>');
		j('head').append(
			'<style type="text/css">cufon { outline: 1px solid blue; }</style>'
		);
		j('*').each(
			function()
			{
// 				alert(ti);
				var ti = j(this).css('text-indent');
				if(ti != '0px')
				{
// 					j('body').append(ti+'<hr />');
					if(j(this).text())
					{
						j(this)
							.css('border','1px dotted red')
							.css({
									'text-indent':'0',
									'color':'#fff',
									'text-shadow':'1px 1px 0px #000'
								}
								);
// 						j('body div#ecmsdebug').append('<hr />'+j(this).text());
					} else {
						j(this).css('border','1px dotted green');
					}
				}
// 				alert(ti);
			}
		);
    }    
});
