/*
 * search-filter-area support section.
 */
function toggleSearchFilterArea(show) {
    if (show) {
        jQuery('#filter-expand').hide();
		jQuery('#filter-collapse').show();
        jQuery('#search-filter-area').show('fast'); /* 'slow' */
		$('#search-result-info').addClass("filtered");
        $.cookie('filterAreaShow', 1, {path: '/'});
    } else {
		jQuery('#filter-collapse').hide();
        jQuery('#filter-expand').show();
        jQuery('#search-filter-area').hide('fast');
		$('#search-result-info').removeClass("filtered");
        $.cookie('filterAreaShow', null, {path: '/'});
    }
    return false;
};

function addBanner() {
	var bannerPathContainer = $("#banner-ad").find("#banner-path");
	var url = bannerPathContainer.attr("title");
	var banner = '<iframe height="100px" frameborder="no" width="944px" src="' + url + '"></iframe>';
	bannerPathContainer.after(banner);
	bannerPathContainer.remove();
}

jQuery(document).ready(function() {

    // shows the filter-area on clicking the filter-expand link
    jQuery('a#filter-expand').click(function() {
        toggleSearchFilterArea(true);
        return false;
    });

    // hides the filter-area on clicking the filter-expand link
    jQuery('a#filter-collapse').click(function() {
        toggleSearchFilterArea(false);
        return false;
    });

    if ($('#banner-ad').length) {
    	addBanner();
    }
});

var bannerFixRealized=false;
Dialog = newClass(null, {

     constructor: function(options){
         this.initChild(options);
         if(!bannerFixRealized) {
        	 $(".dialog-draggable").each(function(){
        	        $(this).prepend('<iframe class="banner-fix"></iframe>');
        	 });
        	 bannerFixRealized = true;
         }
     },

     handleResponse: function(json, validationData) {
	    var title = json.title;
	    var message = json.message;
	    var errors = json.errors;

	    if (errors && errors.length) {
	        for (var i = 0; i < errors.length; i++) {
	            var key = errors[i].substring("errors.".length);
	            var data = validationData[key];
	            if (typeof data !== "undefined") {
	                markValidationFailed(data.messageId, data.jqField);
	            }
	        }
	        return false;
	    } else {
	        showMessageParam(title, message);
	        return true;
	    }
	},

	loadDialog: function(openParameter, dialog, url, data, successFunction) {
		var env = this;
    	if (env.loadingStarted) {
    		return;
    	} else {
    		env.loadingStarted = true;
    	}
	    if (dialog.length != 0) {
	    	env.openDialog(openParameter);
            env.loadingStarted = false;
	    }else{
			$.ajax({
			    type: "POST",
			    dataType: "html",
			    url: url,
			    data: data,
			    success: function(data) {
                    if (typeof successFunction != "undefined") {
                    	successFunction(data);
                    }
        	    	env.openDialog(openParameter);
					env.loadingStarted = false;
			    },
			    error: function(XMLHttpRequest, textStatus) {
			        enableLoadingBlock(false);
			        var response = typeof XMLHttpRequest.responseText == 'string' ? XMLHttpRequest.responseText.substring(0,150): "";
			        showMessageParam(null, textStatus + "<br/>" + response, true);
					env.loadingStarted = false;
			    }
			});
	    }
	},

    postWithAjax: function(env, url, params, validationData, dialog, successFunction, failedFunction){
        // the ajax_get_cache is required, because of the AJAX request being cached.
        params["ajax_get_cache"] = encodeURIComponent((new Date()).getTime());

        enableLoadingBlock(true);
        $.ajax({
	        type: "POST",
	        dataType: "json",
	        url: url,
	        data: params,
	        success: function(data) {
	            enableLoadingBlock(false);
	            clearValidationResult(dialog);
	            if (env.handleResponse(data, validationData)) {
                    if(data.result == "OK"){
                        if(window.notifyReleware !== undefined) {
                            window.notifyReleware(env, url, params, data);
                        }
                        if (typeof successFunction != "undefined") {
                        	successFunction(data);
                        }
                    }
	                env.closeDialog();
	            } else {
	                updateFrameSize(dialog.find(".dialog"), dialog.find(".banner-fix:first"));
                    if (typeof failedFunction != "undefined" && data.result != "OK") {
                    	failedFunction();
                    }
	            }
	        },
	        error: function(XMLHttpRequest, textStatus, errorThrown) {
	            enableLoadingBlock(false);
                if (typeof failedFunction != "undefined") {
                   	failedFunction();
                } else{
    	            env.closeDialog();
                }
	            var response = typeof XMLHttpRequest.responseText == 'string' ? XMLHttpRequest.responseText.substring(0,150): "";
	            showMessageParam(null, textStatus + "<br/>" + response, true);
	        }
	    });
    }
});

function reloadIFrames(containerId){
	$(containerId).find("iframe").each(function(){
        this.contentWindow.location.replace($(this).attr("src"));
    });
}

function addTopBarContent(url){
    $.ajax({
            type: "GET",
            url: url,
            success: function(data) {
                if (data.indexOf('404')> -1 || data.indexOf('DOCTYPE')> -1 || data.length == 0){
                    //consider it is 404 or other error
                    return "";
                }else{
                    $(".top-bar").html('<div class="top-bar-content clear">' + data + '</div>');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                return "";
            }
        });
}

/**
 * shows specified data (html) in popup window
 */

function showStandartMessage(message, header, dialogMessage){
    $(".message-box-title").html( (typeof header == "undefined")?$("#default-title").attr("title"):header);
	var dialog = $("#message-box");
	if (message && message.length) {
        var body = dialog.find(".message-box-body");
        var content = message;
        body.html(content);
    }
	if (dialogMessage){
		$(".close-link").hide();
	} else{
	    dialog.find(".close-link").bind("click", function (){
	    	$("#message-box").hide("fast");
	    });
	}
	showDialog(dialog, true);
}

function showMessageParam(title, message, isAppend, delay) {
    var dialog = $("#message-box");

    if (title && title.length) {
        dialog.find(".message-box-title").html(title);
    }
    var body = dialog.find(".message-box-body");
    var errorMessage = dialog.find(".error-message").attr("title");
    body.html(errorMessage);
    if (message && message.length) {
        var errorMessage = dialog.find(".error-message").attr("title");
        var content = message;
        if (isAppend) {
            content = body.html() + "<br/>" + message;
        }
        body.html(content);
    }

    var thisDelay=delay;
    if (typeof thisDelay == "undefined"){
        thisDelay = dialog.find("#notification-closing-delay").html();
    }
    showDialog(dialog, true);
    messageBoxTimeout = setTimeout(function(){
        dialog.hide("fast");
    }, thisDelay);
    dialog.find(".close-link").bind("click", function (){
    	$("#message-box").hide("fast");
    	clearTimeout(messageBoxTimeout);
    });
}
