var jsonData = new Object();

/* simple selects ajax */
$.fn.fillOptions = function(o, lang){
	var prefix = (lang) ? lang + '/' : '' ;
    var url = prefix + "ajax/getselectoptionsi18n/?source=" + o;
    var select =  $(this);

    $.getJSON(url, function(data){
        $.each(data, function(i, opt){
            var option = $(document.createElement("option"));
            if ($(select).val() != opt.id) {
                $(option).attr("value", opt.id).text(opt.name);
                $(select).append($(option));
            }
        });
    });

};

$.fn.cascadeReloadSelect = function(targetid, target, source, o, lang){
	var select = $(o).closest("form").find("#" + targetid + "");
    
    $(select).html("");
    $(select).append($(document.createElement("option")).attr("value","null").text("---"));
    
    if ($(o).val() != 'null' && $(o).val() != '') {
    	var prefix = (lang) ? lang + '/' : '' ;
	    var url = prefix + "ajax/getdependentoptionsi18n/?source=" + source + "&dep_name=" + target + "&dep_id=" + $(o).val();
	    $.getJSON(url, function(data){
	        $.each(data, function(i, opt){
	            var option = $(document.createElement("option"));
	            $(option).attr("value", opt.id).text(opt.name);
	            $(select).append($(option));
	        });
	    });
    }
    
    $(select).change();
};

$.fn.cascadeReloadSelf = function(targetid, target, source, o, lang){
	var select = $(o).closest("form").find("#" + targetid + "");
    
	var selected = $(select).val();
    $(o).html("");
    
    if ($(select).val() != 'null' && $(select).val() != '') {
    	var prefix = (lang) ? lang + '/' : '' ;
	    var url = prefix + "ajax/getdependentoptionsi18n/?source=" + source + "&dep_name=" + target + "&dep_id=" + $(select).val();
	    $.getJSON(url, function(data){
	        $.each(data, function(i, opt){
	            var option = $(document.createElement("option"));
	            $(option).attr("value", opt.id).text(opt.name);
	            $(o).append($(option));
	        });
	    });
    }
    
    $(o).change();
};

/* Autocomplete selects : */
$.fn.getMyData = function(source, o){
    var me =  $(o);
    var me_hidden = $(o).closest("form").find("#" + $(o).attr("id") + "_hidden");
    var me_multiple = $(o).closest("form").find("[name=" + $(o).attr("id") + "_multiple]");
    var multiple_param = false;
    if ($(me_multiple).val() == '1'){
        multiple_param = true;
    }
    var url = "ajax/getselectoptions/?source=" + source;

    $.getJSON( url,
        function(data){
            jsonData[$(me).attr("id")] = '';
            jsonData[$(me).attr("id")] = data;
            $(me).flushCache();
            $(me).autocomplete(data, {
                autoFill: true,
                matchContains: true,
                multiple: multiple_param,
                selectFirst: false,
                formatItem: function(item, i, max){
                    return item.name;
                },
                formatMatch: function(item, i, max){
                    return item.name;
                },
                formatResult: function(item){
                    return item.name;
                }
            });
            $(me).result(function(event, jsonData, formatted) {
                $(me_hidden).val(jsonData.id);
                $(me).change();
                $(me_hidden).change();
            });
    });
/*
    $.ajax({
        type: "GET",
        dataType: "json",
        url: url,
        success: function(data){
            jsonData[$(me).attr("id")] = '';
            jsonData[$(me).attr("id")] = data;
            $(me).flushCache();
            $(me).autocomplete(jsonData[$(me).attr("id")], {
                autoFill: true,
                matchContains: true,
                multiple: multiple_param,
                selectFirst: false,
                formatItem: function(item, i, max){
                    return item.name;
                },
                formatMatch: function(item, i, max){
                    return item.name;
                },
                formatResult: function(item){
                    return item.name;
                }
            });
            $(me).result(function(event, jsonData, formatted) {
                $(me_hidden).val(jsonData.id);
                $(me).change();
                $(me_hidden).change();
            });
        },
        complete: function(){
        }
    });
 */
};

$.fn.reloadMyDependant = function(dependant_id, depname, source, me){
//    var dep = $("#" + $(o).attr("id") + "_hidden");
    var me_hidden = $("#" + $(me).attr("id"));
    var select = $(me).closest("form").find("#" + dependant_id + "");
    var select_hidden = $(me).closest("form").find("#" + dependant_id + "_hidden");
    

    $(select).val('');
    $(select_hidden).val('');
//    $(me_hidden).change();
    if (typeof(me_hidden) != "undefined" && $(me_hidden).val() != 'null' && $(me_hidden).val() != '') {
        var url = "ajax/getdependentoptions/?source=" + source + "&dep_name=" + depname + "&dep_id=" + $(me_hidden).val();
        $.getJSON( url,
            function(data){
                    jsonData[$(select).attr("id")] = '';
                    jsonData[$(select).attr("id")] = data;
                    $(select).flushCache();
                    $(select).autocomplete(jsonData[$(select).attr("id")], {
                        autoFill: true,
                        matchContains: true,
                        selectFirst: false,
                        formatItem: function(item, i, max){
                            return item.name;
                        },
                        formatMatch: function(item, i, max){
                            return item.name;
                        },
                        formatResult: function(item){
                         //   $(select_hidden).val(item.id);
                            return item.name;
                        }
                    });
                    $(select).result(function(event, jsonData, formatted){
                        $(select_hidden).val(jsonData.id);
                        $(select).change();
                        //$(select_hidden).change();
                    });
        });
        console.log ("reloadMyDependant(" + depname + ", " + dependant_id +")");
/*
        $.ajax({
            type: "GET",
            dataType: "json",
            url: url,
            success: function(data){
                jsonData[$(select).attr("id")] = '';
                jsonData[$(select).attr("id")] = data;
                $(select).flushCache();
                $(select).autocomplete(jsonData[$(select).attr("id")], {
                    autoFill: true,
                    matchContains: true,
                    selectFirst: false,
                    formatItem: function(item, i, max){
                        return item.name;
                    },
                    formatMatch: function(item, i, max){
                        return item.name;
                    },
                    formatResult: function(item){
                     //   $(select_hidden).val(item.id);
                        return item.name;
                    }
                });
                $(select).result(function(event, jsonData, formatted){
                    $(select_hidden).val(jsonData.id);
                    $(select).change();
                    $(select_hidden).change();
                });
            },
            complete: function(){
            }
            
        });
*/
    }
//    $(me_hidden).change();
    $(select).change();
};

$.fn.reloadSelfAC = function(idependonid, idependon, source, me){
    var me_hidden =  $("#" + $(me).attr("id") + "_hidden");
    var select = $(me).closest("form").find("#" + idependonid + "");
    var select_hidden = $(me).closest("form").find("#" + idependonid + "_hidden");

    //$(me).val('');
    //$(me_hidden).val('');
    if (typeof(select_hidden) != "undefined" && $(select_hidden).val() != 'null' && $(select_hidden).val() != '' && jsonData[$(me).attr("id")] == '') {
        var url = "ajax/getdependentoptions/?source=" + source + "&dep_name=" + idependon + "&dep_id=" + $(select_hidden).val();
        $.ajax({
            type: "GET",
            dataType: "json",
            url: url,
            beforeSend: function(){
            },
            success: function(data){
                jsonData[$(select).attr("id")] = '';
                jsonData[$(me).attr("id")] = data;
                $(me).flushCache();
                $(me).autocomplete(jsonData[$(me).attr("id")], {
                    autoFill: true,
                    matchContains: true,
                    selectFirst: false,
                    formatItem: function(item, i, max) {
                        return item.name;
                    },
                    formatMatch: function(item, i, max) {
                        return item.name;
                    },
                    formatResult: function(item){
                    //    $(me_hidden).val(item.id);
                        return item.name;
                    }
                });
                $(me).result(function(event, jsonData, formatted) {
                    $(me_hidden).val(jsonData.id);
                    $(me).change();
                    $(me_hidden).change();
                });
            },
            complete: function(){
            }
        });
    }
    else{
        $(me).autocomplete(jsonData[$(me).attr("id")], {
            autoFill: true,
            matchContains: true,
            selectFirst: false,
            formatItem: function(item, i, max) {
                return item.name;
            },
            formatMatch: function(item, i, max) {
                return item.name;
            },
            formatResult: function(item){
            //    $(me_hidden).val(item.id);
                return item.name;
            }
        });
        $(me).result(function(event, jsonData, formatted) {
            $(me_hidden).val(jsonData.id);
            $(me).change();
            $(me_hidden).change();
        });
    }
    console.log ("reloadSelfAC(" + idependon + ", " + $(me).attr("id") +")");

    //$(me).change();
};


// another try
$.fn.quasiSelectGetMyData = function(my_source){
    me           = $(this);
    me_id        = $(this).attr("id");
    me_hidden    = $("#" + this.attr("id") + "_hidden");
    me_id_hidden = me_id + "_hidden";
    console.log(me_id);
    var url = "ajax/getselectoptions/?source=" + my_source;
    jsonData[me_id] = '';
    $.getJSON( 
        url,
        function(data){
                jsonData[me_id] = data;
                $(me).flushCache();
                $(me).autocomplete(jsonData[me_id], {
                    autoFill: true,
                    matchContains: true,
                    selectFirst: false,
                    formatItem: function(item, i, max){
                        return item.name;
                    },
                    formatMatch: function(item, i, max){
                        return item.name;
                    },
                    formatResult: function(item){
                        return item.name;
                    }
                });
                $(me).result(function(event, jsonData, formatted){
                    $(me_hidden).attr("value", jsonData.id);
                    //$("#" + me_id).change();
                    //$(select_hidden).change();
                });
        }
    );

};

$(document).ready(function(){
	
	$(".button-clone").click(function(e){
	    $(this).next().show();
	    $(this).hide();
	});
	
	$(".button-delete").click(function(e){
	    var button = $(e.target);
	    var grpname = $(button).nextAll(".form-contents").find("input[name='groupname']").val();
	    var rid = $(button).nextAll(".form-contents").find("input[name='id']").val()
	    var url = "ajax/handler/profile/deleteadditional/?rid=" + rid;

	    if (confirm('Are you shure you want to delete this element?')) {
		    $.post(url, {groupname: grpname, id: rid}, function(data) {
		    	if (data.status == 'error') {
		    		$(button).nextAll(".form-contents").find(".form-response").removeClass("error confirm").addClass(data.status).html(data.message).wait(2000).animate({"height": "toggle", "opacity": "toggle"}, { duration: "normal" });
		    	} else {
		    		//$(button).nextAll(".form-contents").find(".form-response").removeClass("error confirm").addClass(data.status).html(data.message);
		    		$(button).closest(".form-wrapper").animate({ "backgroundColor": "#ff8080" }, { duration: "fast" }).animate({"height": "toggle", "opacity": "toggle"}, { duration: "normal" });
		    	}
		    }, "json");
	    }
	});
    
    $(".image-actions .delete").click (function(e){
        var button = $(e.target);
        if (!confirm('Are you shure you want to delete this element?'))
            return false;
    });
    
	
    jQuery.each($(".box-wrapper .validate form"), function(){
    	$(this).validate();
	});


    jQuery.each($(".box-wrapper .ajax form, .box-wrapper .textmode form"), function(){
    	$(this).validate({
            //debug: true,
    		submitHandler: function(form) {
    	        $(form).ajaxSubmit({
    	            dataType: "json",
    	            beforeSubmit: function(){
    	                $(form).find("input[type=submit]").attr("disabled", true);
    	            },
    	            success: function(j){
    	                $(form).find(".form-response").removeClass("error confirm").addClass(j.status).html("");
    	                $(form).find("input[type=submit]").attr("disabled", false);
    	
    	                if (j.message){
    	                    $(form).find(".form-response").html(j.message);
    	                }
    	                else {
    	                    $.each(j.messages, function(message){
    	                        $(form).find(".form-response").append("<div>" + this.message + "</div>");
    	                        $(form).find("[name="+this.field+ "]").addClass("error").trigger("change");
    	                    });
    	                }
                        $(form).find(".form-response").hide().
                        animate({ "height": "toggle", "opacity": "toggle" }, { duration: "fast" }).
                        wait(2000).
                        animate({ "height": "toggle", "opacity": "toggle" }, { duration: "fast" });

                        if ($(form).hasClass("reload")) {
                            $(form).reloadpage();
                        }
    	            }
    	        })
    	    }
    	});
	});
    
    jQuery.each($(".community-edit"), function(){
        var forms = $(".smile-ui-tab", this);
        var switcher = $(".forms-switcher", this);
        var inputs = $("input[type=radio]", switcher )
        var showId = location.href.split("#")[1];
        forms.addClass("smile-ui-tab-hidden");
        //alert(showId);
        if ( typeof(showId)!='undefined' && showId.length > 0){
            $("#" + showId).removeClass("smile-ui-tab-hidden");
            switcher.find("input[value=" + showId + "]").click();
        }
        else
            forms.eq(0).removeClass("smile-ui-tab-hidden");
        
        inputs.click( function (e) {
            //forms.hide();
            forms.addClass("smile-ui-tab-hidden");
            $("#"+$(e.target).attr("value")).removeClass("smile-ui-tab-hidden");
        });
        
    });
    
    if ( typeof(userLogin)!="undefined" && typeof(domain)!="undefined" ) {
        $("#photo-general").after("<a href=\"http://" + userLogin + "." + domain + "/photos/add/gallery\">Добавить галерею</a>");
        $("#video-general").after("<a href=\"http://" + userLogin + "." + domain + "/videos/add/gallery\">Добавить галерею</a>");
    }
    $(".button, .button-active", ".message-history").click(function(){
        var container = $(this).closest(".message-history");
        container.toggleClass("edit");
        return false;
    });
    $(".message-history .link-delete").click(function(){
        var container = $(this).closest(".message-history");
        var collform = $("#deleteCollections");
        var inputsChecked = $("input:checked", collform);
        var trTitle = inputsChecked.closest("tr");
        var trBody = trTitle.next();
         
        collform.ajaxSubmit({
            success: function(){
                trTitle.fadeOut("slow");
                trBody.fadeOut("slow");
            }
        });
        return false;
    });

    $(".poll-box form").submit(function(){
        var self = $(this); 
        if (self.find("input:checked").length == 0){
            return false;
        }
    });
    
    $(".search-filter input").click(function(){
        //$(this).attr("value", "");
        $(this).select();
    });
});