// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

var asics = new Object();

jQuery.fn.fadeToggle = function(){
    if(this.css("display") == 'none') {
        this.fadeIn()
    } else {
        this.fadeOut()
    }
}

asics.urlize_form_params = function (form) {
  var results = [];
  $(form.serializeArray()).each(function (x) {if(this.value != ""){results.push([this.name, this.value].join('/'))};});
  return results.sort().join('/');
}

asics.add_close_buttons = function (){
    $(".closure").each(function(i){
        var expendcontent = $(this);
        if (expendcontent.children(".close").size() == 0){
            expendcontent.prepend("<a href='#' class='close'><img src='/img2/inline_close.png'></a>");
            expendcontent.children(".close").click(function(){

		asics.unload_tinymce(expendcontent);

                if (expendcontent.parents("tr").length > 0) {
                    expendcontent.parents("tr").fadeOut();
                } else {
                    expendcontent.fadeOut();
                }
                return false;
            })
        }
    })
}

// Remove any tinyMCE editors so tinyMCE doesn't crash
asics.unload_tinymce = function(element) {
    element.find('span.mceEditor').each(function() {
	tinyMCE.get(this.id.replace(/_parent$/, '')).remove();
    });
}

asics.resize_textareas = function() {
    resize_textarea = function() {
        collapsed = 150
        var lines = $(this).val().split("\n");
        var count = lines.length;

        for (var i=0; i < lines.length; i++) {
            count += parseInt(lines[i].length / 70);
        };

        var rows = parseInt(collapsed / 20);
        if (count > rows) {
            $(this).css({'height': (collapsed * 2) + 'px'})
        }
        if (count <= rows) {
            $(this).css({'height': collapsed + 'px'})
        }
    }
    resized_textareas = $("textarea:not(.no_resize)")
    resized_textareas.keypress(resize_textarea)
    resized_textareas.bind('focus', resize_textarea)
    resized_textareas.bind('beforepaste', resize_textarea)
}

asics.load_optional_js = function() {

}

asics.add_ratings = function() {
    $(function(){
        r = $('input[type=radio].star-rating')
        if (r.length > 0) {
            $.rating.groups = {}
            r.rating({required: true})
        }
    })

    $(function(){
        r = $('input[type=radio].star-rating-split4')
        if (r.length > 0) {
            r.rating({required: true, split: 4})
        }
    })
}

asics.add_fancy_iframes = function() {
    f = $('.fancy_popup')
    if (f.length > 0) {
        if( f.hasClass('login_popup')) {
            f.fancybox({
                zoomSpeedIn:	0,
                zoomSpeedOut:	0,
                overlayShow: false,
                frameHeight: 280,
                frameWidth: 500
            })

        } else {
            f.fancybox({
                zoomSpeedIn:	0,
                zoomSpeedOut:	0,
                overlayShow: true
            })

        }
    }
}


asics.fancy_iframes_fix = function() {
    if (!$.fn.fancybox) {
        return
    }
    $.fn.fancybox.showIframe = function() {
		$("#fancy_loading").hide();
		$("form", $($("#fancy_frame").contents())).attr({target: '_top'});
		$("#fancy_frame").show();
	};

}

asics.load360viewer = function(variationId, imageId, productCode, pvColorCode, url) {
    var viewerSuffix = "variation="+productCode+"_"+pvColorCode+"&image="+imageId;
    if(url.indexOf('?') != -1) { url += "&" + viewerSuffix; } 
    else { url += "?" + viewerSuffix; }

    $("#product_rotation_viewer").load(url);
    return false;
}

asics.extractAnchorParams = function() {
    // Load data from document fragment/params
    var data = document.location.hash.substring(1); // skip leading '#'
    if (data.length > 0) {
	var params = [];
	data = data.split("&");
	for(index in data) {
	    var split = data[index].split("=");
	    var key = split[0];
	    var val = split[1];
        if (val != undefined && val.length > 0) {
          params[key] = val;
        }
	}
	return params;
    } else {
	return null;
    }
}

asics.shoe_advisor_onchange = function(url, all) {
    var list = $('#result-item');
    list.addClass('pending');

    var url = url + asics.urlize_form_params($('#shoe-advisor-form'));
    if (all) url += "?all=true";

    if (url.indexOf("?") == -1 && url.slice(-1) != '/') url = url.concat('/');
    $.getJSON(url, null, function(json) {
	var size = json["count"];
	var html = json["html"];
	list.html(html);

	list.removeClass('pending');
	$("#search-results #intro").css("display", "none");
	if (size == 0) {
	    $("#results-text").css("display", "none");
	} else {
	    var text = $("#results-text");
	    text.html(json["header"]);
	    text.css("display", "block");
	}
	if (size > json["max"]) {
	    $("#results-more").css("display", "block");
	} else {
	    $("#results-more").css("display", "none");
	}

	$('#shoe-count').html(size.toString());
	$('#results-more-count').html(size.toString());
    });
}

// Extract parameters from options and url fragment and reset form
asics.shoe_advisor_load = function(url, options) {
    var changed = false;

    var setParams = function(params) {
	// set use first
	var use;
	if (options.use != null) {
	    use = options.use
	    $("select[name=use]").val(use).change();
	    delete options.use;
	}

	// then competition category
	var category;
	if (options.competition_category != null) {
	    category = options.competition_category;
	    $("select[name=competition_category]").val(category).change();
	    delete options.competition_category;
	}

	// Check passed in options
	for(key in options) {
	    $("select[name="+key+"]").val(options[key]).change();
	    changed = true;
	}
    };
    setParams(options);

    // Check fragment
    anchorParams = asics.extractAnchorParams()
    if (anchorParams != null) setParams(anchorParams);

    // Load shoes if necessary
    if (changed) {
	asics.shoe_advisor_onchange(url);
    }
}

asics.shoe_advisor_onclick = function() {
    document.location = '#' + $('#shoe-advisor-form').serialize();
}

asics.shoe_advisor_labels = {}

asics.shoe_advisor_replace_selects = function(url, loadShoes) {
    $("#shoe-advisor-form select").each(function() {
	var select = $(this);
	var selectName = select.attr("name");
	var id = select.attr("name");

	var h = '<span id="'+id+'" class="selectbox';

	// Disable weight if necessary
	if (selectName == "weight") {
	    var gender = $("select[name=gender]");
	    if (gender[0] != null && gender[0].value == "") h += " disabled";
	}

	h += '">';

	var selectedLabel = $($("select[name="+selectName+"] option[selected]")[0]).text();
	if (selectedLabel == "") selectedLabel = asics.shoe_advisor_labels[selectName];


	h += '<span class="selected">'+selectedLabel+'</span>';
	h += '<span class="option-group '+asics.shoe_advisor_option_group_class(selectName)+'">';
	select.find("option").each(function() {
	    var opt = $(this);

	    var label;
	    if ((opt.text() == "") && (asics.shoe_advisor_labels[selectName] != null)) {
		label = asics.shoe_advisor_labels[selectName];
	    } else {
		label = opt.text();
	    }
	    h += '<span class="'+asics.shoe_advisor_select_class(selectName, opt.attr("value"))+'"><a href="#" rel="'+opt.attr("value")+":"+selectName+'">'+label+"</a></span>";
	});

	h += '</span></span>';
	select.after(h);
	select.hide();
    });

    // set onclick for selected option
    $("#shoe-advisor-form .selectbox").click(function() {
	var box = $(this);
	if (!box.hasClass("disabled"))  {
	    if (!box.hasClass("focus")) {
		box.addClass("focus");
		box.parents("body").append('<a href="#" id="shoe-select-shadow">&nbsp;</a>');
		$("#shoe-select-shadow").click(function() {
		    box.click();
		    return false;
		});
	    } else {
		box.removeClass("focus");
		$("#shoe-select-shadow").remove();
	    }
	}
	return false;
    });

    // set onchange for selects
    $("#shoe-advisor-form select").change(function() {
	var label = $(this).find("option[selected]").text();
	if (label == "") label = asics.shoe_advisor_labels[this.name];
	$("#"+this.name + " .selected").text(label);
    });

    // set onchange for gender
    //if (select_name == "gender") asics.shoe_advisor_select_gender(value);
    $("#shoe-advisor-form select[name=gender]").change(function() {
	asics.shoe_advisor_select_gender(this.value);
    });


    // Set onclick for options
    $("#shoe-advisor-form .selectbox span:not(.selected) > a").click(function() {
	var parent = $(this).parents(".selectbox");
	var selected = parent.find(".selected");

	var rel = $(this).attr("rel").split(":");
	var val = rel[0];
	var name = rel[1];

	$("select[name="+name+"]").val(val).change();
	parent.click();

	if (loadShoes) asics.shoe_advisor_onchange(url);

	return false;
    });
}

asics.shoe_advisor_option_group_class = function(field) {
    var cssClass = "";
    if (field == "weight") {
	cssClass = $("select[name=gender]").val().toLowerCase();
    }
    return cssClass;
}

asics.shoe_advisor_select_class = function(field, value) {
    var cssClass = "";
    if (field == "weight") {
	if (value == "") {
	    cssClass = "blank";
	} else {
	    cssClass = value.split("_")[0];
	}
    }
    return cssClass;
}

asics.shoe_advisor_select_gender = function(value) {
    var del, add, text;
    if (value == "Men") {
	del = "women";
	add = "men";
	text = asics.shoe_advisor_label_weight_gender;
	$("#weight").removeClass("disabled");
    } else if (value == "Women") {
	add = "women";
	del = "men";
	text = asics.shoe_advisor_label_weight_gender;
	$("#weight").removeClass("disabled");
    } else {
	del = "men women";
	add = "";
	text = asics.shoe_advisor_label_weight_no_gender;
	$("#weight").addClass("disabled");
    }

    $("#weight .option-group").addClass(add).removeClass(del);
    $("#weight .blank a").text(text);
    $("select[name=weight] option[value='']").text(text);
    $("select[name=weight]").val("").change();
}

asics.productCatalogFilter = function(params) {
  this.set = function(key, val) {
    if(key == 'sort') {
      $("#sort-by li.selected").removeClass("selected");
      $("#sort-by-li-"+val).addClass("selected");
    } else {
      $("#filter-"+key+" li.selected").removeClass("selected");
      $("#filter-"+key+" li#filter-"+key+"-"+val).addClass("selected");
    }
    this.fields[key] = val;
  };

  this.apply = function(key, value) {
    this.set(key, value);
    this.updateLocation();
    this.loadProducts();
    return false;
  }

  this.sorted_ids = function(order_by) {
    if(order_by == 'none') {
      return all_product_ids;
    }

    var ascending = false;
    if(order_by == 'high_price') {
      ascending = true;
    }
    var label = ((order_by == 'low_price') || (order_by == 'high_price')) ? 'price' : order_by;

    var result = sorts.sort(function(a,b) {
      if(a[label] != b[label]) {
        var v1 = parseInt(a[label]);
        var v2 = parseInt(b[label]);
        if(ascending) {
          return v1 < v2 ? -1 : 1;
        } else {
          return v1 > v2 ? -1 : 1;
        }
      }
      return parseInt(a['id']) < parseInt(b['id']) ? -1 : 1;
    });
    result = $.map(result, function(v) { return v['id']; });

    return result;
  }

  // result will have the same order as a
  this.intersect = function(a, b) {
    if(typeof a == 'undefined' || a == null) { return b; }
    if(typeof b == 'undefined' || b == null) { return a; }

    var result = new Array();
    if(a.length > 0 && b.length > 0) {
      for(var i=0; i<a.length; i++) {
        if($.inArray(a[i], b) > -1) {
          result.push(a[i]);
        }
      }
    }
    return result;
  }

  this.loadProducts = function() {
    $("#product-catalog").addClass("pending");

    var params = this.fieldsAsParams();
    var pathname = document.location.pathname;
    if(pathname.charAt(pathname.length - 1) == '/'){
      pathname = pathname.replace(/.$/, "");
    };

    var product_ids = all_product_ids;
    $.each(this.fields, function(key,val) {
      if((key != 'kind') && (typeof product_ids == 'object') && (product_ids != null)) {
        if(typeof products_json[key] != 'undefined') {
          product_ids = filter.intersect(product_ids, products_json[key][val]);
        }
      }
    });

    //sort it
    if((typeof product_ids == 'object') && (product_ids != null)) {
      if((typeof this.fields['sort'] != 'undefined') && (this.fields['sort'] != null)) {
        product_ids = filter.intersect(filter.sorted_ids(this.fields['sort']), product_ids);
      }
    }

    $('#product-catalog').html('');
    if((typeof product_ids == 'object') && (product_ids != null)) {
      var i;
      var buf;
      for(i=0; i<product_ids.length; i++) {
        if(i % 5 == 0) { buf = "<div class='catalog-item-box clearfix2'>"; }
        buf += $('#product-catalog-templates #product-template-'+product_ids[i]).html();
        if((i+1) % 5 == 0) {
          buf += "</div>";
          $('#product-catalog').append(buf);
          buf = "";
        }
      }
      if(buf == undefined) {
        $('#product-catalog').append("No product found.");
      } else if(buf != "") {// not closed yet
        buf += "</div>";
        $('#product-catalog').append(buf);
        buf = "";
      }
    }

    $("#catalog-header span strong").text(product_ids.length);
    $("#product-catalog").removeClass("pending");
  }

  this.updateLocation = function() {
    var params = this.fieldsAsParams();
    document.location = '#' + params;
  }

  this.fieldsAsParams = function() {
    var hash = [];
    for(index in this.fields) {
      var val = this.fields[index];
      hash.push(index + "=" + this.fields[index]);
    }
    return hash.join("&");
  }

  this.clear = function() {
    var kind = this.fields["kind"];
    if (kind != null) {
      this.fields = {"kind": kind};
    } else {
      this.fields = {};
    }
    var filter = this;
    $("ul.item").each(function() {
        var field = this.id.replace(/filter-/, "");
        if (field != "") { filter.set(field, "all"); }
        });
    filter.set('sort','none');
    this.updateLocation();
    this.loadProducts();
  }

  this.fields = {};

  var filter = this;

  // Add on-click to all filter links
  $("a[id^=sort-by-]").each(function() {
    $(this).click(function() {
      var field = 'sort';
      var val = $(this).attr('id').split("-")[2];
      filter.apply(field, val);
      return false;
    });
  });

  // Add on-click to all filter links
  $("#catalog-filter a:not(.clear_all)").each(function() {
    $(this).click(function() {
      var id = $(this).parent()[0].id.split("-");
      var field = id[1];
      var val = id[2];
      if (field == null) {
        filter.clear();
      } else {
        filter.apply(field, val);
      }
      return false;
    });
  });

  // load data from params, dont load products as they should already be loaded.
  for(index in params) {
    this.set(index, params[index]);
  }

  // Load data from document fragment/params
  var data = document.location.hash.substring(1);
  if (data.length > 0) {
    data = data.split("&");
    for(index in data) {
      var split = data[index].split("=");
      var key = split[0];
      var val = split[1];
      if (val.length > 0) {
        this.set(key, val);
      }
    }
  };

  for(var i in this.fields){ //if fields is not empty
    this.loadProducts();
  }
}

asics.newsletter_subscribe = function(form) {
    $.post(form.action, $(form).serializeArray(), function(response) {
	$('#subscribe-box').html(response);
    });

    return false;
}

asics.bind_base64_ajax = function() {
    $("a.base64ajax:not(.boundAjax)").click(function(evt){
        // to encode to solve quote escape problem
        asics.setup_inline_editor($.base64Decode($(this).attr("ref")));
    })
    $("a.base64ajax").addClass("boundAjax");
}

asics.enable_wysiwyg_editor = function() {
    if ($(".mceEditor").length == 0) {
        return;
    }
    if (typeof(tinyMCE) == "undefined") {
        return;
    }
    // // alert("enable_wysiwyg_editor")
    // if (typeof(tinyMCE) == "undefined") {
    //     window.tinyMCEPreInit = {base: '/javascripts/tiny_mce'}
    //     jQuery.ajax({
    //         url: "/javascripts/tiny_mce/tiny_mce_src.js",
    //         async: false,
    //         dataType: "script",
    //         global: false
    //     });
    // }
    //    asics.wysiwyg_media_library_subcategory = #{category.to_json};

// return
    tinyMCE.init({
        mode  : "textareas",
        // mode  : "none",
        theme : "advanced",
        plugins: "asics_image",
        theme_advanced_buttons1 : "undo,redo,formatselect,removeformat,forecolor,bold,underline,strikethrough,|,bullist,numlist,|,blockquote,|,sub,sup,|,link,unlink,|,asics_image",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        skin : "wp_theme",
        theme_advanced_toolbar_location   : "top",
        theme_advanced_toolbar_align      : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing           : true,
        theme_advanced_blockformats : "p,h2,h3,h4",
        editor_selector   : "mceEditor",
        editor_deselector : "mceNoEditor",
        convert_urls : false,
        auto_resize: true,
        extended_valid_elements : "iframe[src|width|height|name|align|frameborder|scrolling|marginheight|marginwidth]"
        // forced_root_block: false
    });

    /// workaround to solve confliction of TinyMCE and jQuery Form plugin
    /// (see http://www.nabble.com/Problem-With-jquery-form-plugin-and-tinymce-td14788650s27240.html)
    $().bind('form-pre-serialize', function(event, $form, options) { tinyMCE.triggerSave(); });

}

asics.ajaxifyForm = function(f, replaceTarget, redirectTarget) {

    if (typeof(tinyMCE) != "undefined") {
        f.bind('form-pre-serialize', function(event, $form, options) {
            try{
                tinyMCE.triggerSave();
            }catch(e){
                console.debug(e);
            }
        });
    }

    if (f.find("input[type=file]").length > 0) {
	asics.configure_file_upload(f[0]);
    }

    var form = f;

    f.ajaxForm({
	beforeSubmit: function() {
	    var uuid = form[0].uuid;
	    if (uuid != null) {
		form.find(".submit_busy span").width("0%");
		form.find(".submit_busy span").prepend("<strong style='font-size:12px;padding-left:85px;'></strong>");
		/* call the progress-updater repeatedly */
		form[0].progressTimer = setInterval(function () {
		    $.getJSON("/progress?X-Progress-ID="+uuid, function(json) {
			asics.updateUploadProgress(form, json);
		    });
		}, 500);
	    }
	},
        success: function(res_text, status) {
	    if (form[0].progressTimer != null) clearInterval(form[0].progressTimer);
            if(replaceTarget) {
                var rt = $(replaceTarget);
                asics.unload_tinymce(rt);
                rt.hide();
                rt.html(res_text);
                rt.fadeIn();
                rt.css({"background-color":"#ffff99"});
            } else {
		window.location.href = redirectTarget;
            }
        },
        error: function(res1, status) {
	    //if (form[0].progressTimer != null) window.clearInterval(form[0].progressTimer);

	    //console.log('got it');
            //console.log(replaceTarget);

            var et = jQuery(replaceTarget);
            et.html(res1.responseText);
            var f = $("form[class!=\"delete-btn\"]", et);
            asics.ajaxifyForm(f, replaceTarget, redirectTarget);
        }
    })
}

asics.setup_inline_editor = function(data){
    eval('var data_object = ' + data);

    var in_place_edit = data_object.in_place_edit;

    ajaxify_form = function(res, status){
        var et = jQuery(in_place_edit.edit_editor_at);
        et.html(res);
        var f = $("form[class!=\"delete-btn\"]", et);

        if (in_place_edit.do_update_url) {
            f.attr({action: in_place_edit.do_update_url});
        }

        if (!in_place_edit.without_ajax_form) {
	    asics.ajaxifyForm(f, in_place_edit.replace_to, in_place_edit.redirect_to);
        }
    }

    jQuery.ajax({
        url: in_place_edit.load_editor_url,
        type: in_place_edit.load_method,
        dataType: "html",
        contentType: "application/json",
        processData: false,
        data: data,
        success: function(res, status){
            ajaxify_form(res, status);
        },
        error: function(res, status) {
            if (in_place_edit.merb_env == 'development') {
                asics._show_error_page_in_iframe(res);
            }
        }

    })

}

asics.add_busy_indicator = function(){
  $(".inplace_form input[type='submit']").click(function(evt){
    $(this).wrap("<div class='submit_busy clearfix'><span></span></div>")
  })
}

asics.add_expandable_buttons = function() {
    $(".expandable_field > label").click(function(evt){
        $(this).next('div').toggle()
    })
}

asics.delete_message = function() {
    var message = arguments[0];
    if (message == undefined){ message = "Are you sure?";}
    return confirm(message);
};

asics.polish_admin_tables = function() {
    $(".admin .widefat tbody tr:odd").css("background-color", "#EEE")
    $(".admin .widefat .row_count_number").remove()
    $(".admin .widefat").each(function(evt){
        number = 0
        $('tr', $(this)).each(function(evt){
            $("<td class='row_count_number'>" + number + ". </td>").prependTo($(this))
            number = number + 1
        })
        $(".thead td:first", $(this)).html("")
    })

}

asics.configure_file_upload = function(form) {
    /* generate random progress-id */
    var uuid = "";
    for (i = 0; i < 32; i++) {
	uuid += Math.floor(Math.random() * 16).toString(16);
    }
    form.uuid = uuid;
    and_or_question = $(form).attr("action").indexOf("?") >= 0 ? "&" : "?"
    $(form).attr("action", $(form).attr("action") + and_or_question + "X-Progress-ID="+uuid);
}

asics.updateUploadProgress = function(form, json) {
    var progress;
    if (json.state == 'starting') {
	progress = 0;
    } else if (json.state == 'uploading') {
	progress = json.received/json.size;
    } else if (json.state == 'done') {
	progress = 1.0;
	clearInterval(form[0].progressTimer);
    }
    form.find(".submit_busy span").width((progress * 100).toString() + "%");
	if(progress != 1.0){
		form.find(".submit_busy strong").text((progress * 100).toFixed(2).toString() + "%");
	}
	else{
		form.find(".submit_busy strong").text("handling files...");
	}
}


///
/// helper methods for media library
///

asics.open_sub_window = function(url, width, height) {
    if(width == undefined) width = 500;
    if(height == undefined) height = 600;

	var option = 'menubar=0,location=0,status=1,scrollbars=1,width=' + width + ',height=' + height;

    // set a rand number
    var randNum;
    var time = new Date();
    randNum = time.getHours().toString() + time.getMinutes().toString() + time.getSeconds().toString();

    var sub_window = window.open(url, "media_library" + randNum, option);
    sub_window.focus();
    return sub_window;
};

asics.bind_media_library_popups = function() {
    $(".media_library_tag_field:not(.boundAjax)").each(function() {
        var the_media_field = $(this);
        var image_preview = $(".image_preview", the_media_field); /// <div>
        var request_path = '/admin/media_library?subcategory=' + the_media_field.attr('title') + 
        "&height=" + the_media_field.attr('height') + "&width=" + the_media_field.attr('width');
        var image_preview_width = the_media_field.attr('width');
				var image_preview_height = the_media_field.attr('height');
        var refresh_image_preview = function(src_url) {
            if (! src_url) return;
            /// set src_url value as hidden parameter
            $(":hidden", the_media_field).val(src_url)
            /// tag name and attrs
            var tag_name = "img";
            var tag_attr = null;
            var m = src_url.match(/\.(\w+)$/);
            var tag = null;
            if (m && m[1] == "swf") {
                tag_attr = { type: "application/x-shockwave-flash",
                             pluginspage: "http://www.adobe.com/go/getflashplayer",
                             allowScriptAccess: "sameDomain" };
                tag = $('<embed/>').attr({'src': src_url, 'title': src_url});
            } else if (m && (m[1] == "flv" || m[1] == "f4v")) {
              tag = $('<div class="flv_media">' + src_url + '</div>');
            } else if (m && (m[1] == "pdf")) {
              tag = $('<div class="pdf">' + src_url + '</div>');
            } else {
	            if(image_preview_width != "0" && image_preview_height != "0"){
								tag = $('<img/>').attr({'height': image_preview_height, 'width':image_preview_width, 'src': src_url, 'title': src_url});
							}
							else{
								tag = $('<img/>').attr({'src': src_url, 'title': src_url});
							}
            }

            image_preview.empty();
            if (tag_attr) tag.attr(tag_attr);
            tag.appendTo(image_preview);
        };
        var add_image_close_button = function() {
            /// return if image close button already exist
            if ($(".delete_image", image_preview).length > 0) {
				$(".delete_image", image_preview).click(add_image_close_function);
				return
			};
            /// return if neither <img> nor <embed> exist
            var e = image_preview;
            if ($(".flv_media", e).length == 0 && $("img", e).length == 0 && $("embed", e).length == 0 && $("object", e).length == 0) return;
            /// create image close button
            var image_close_button = $("<img class=\"delete_image\" src=\"/img2/fancy_closebox.png\"/>");
            image_close_button.prependTo(image_preview).click(add_image_close_function);
         };

		var add_image_close_function = function(){
		   image_preview.empty();
           $(":hidden", the_media_field).val('');
           if($(".flv_media").length == 0) {
             $(".flv_media").remove();
           }
           $(this).remove();
		};
        ///
        add_image_close_button();

        $(".open_popup_window", this).click(function() {
            asics.open_sub_window(request_path);
            window._callback_when_selected = function(asset_id, asset_uri) {
                refresh_image_preview(asset_uri);
                add_image_close_button();
            }
        });
    });

    $(".media_library_tag_field").addClass("boundAjax");
}

asics.toggle_rating = function(){
  if($("#own").attr("checked")){
    $("#rating_box").show();
    $("#rate_label").hide();
  }
  else{
    $("#rating_box").hide();
    $("#rate_label").show();
  }
}

asics.toggle_newsletter_form = function(){
  if ($.cookie && $.cookie('logged_in') == 'yes') {
    if ($.cookie('general_subscribed') == 'true') {
      // do nothing
    } else {
      $("#logged-in-subscribe-form").show();
    }
  } else {
    $("#guest-subscribe-form").show();
  }
}

/** ------------------------------------
/**  Live convert to  URL Title Function
/** -------------------------------------*/
asics.to_ayami_url_title = function(origin, url_id)
       {
           if(origin == undefined){return;}
           var s1 = arguments[0] || "";
           var el = document.getElementById(url_id);
           if(el == null){ return;}
           var temp = document.getElementById(origin).value;
           if(temp == null){ return;}
           var return_text = asics.live_url_title(temp);
           el.value = "" + return_text;
}

asics.live_url_title = function(origin)
        {
            if(origin == undefined){return;}
            var defaultTitle = '';
            var NewText = origin;
            if (defaultTitle != '')
            {
                if (NewText.substr(0, defaultTitle.length) == defaultTitle)
                {
                    NewText = NewText.substr(defaultTitle.length);
                }
            }

            NewText = NewText.toLowerCase();
            var separator = "-";
            NewText = NewText.replace(/\_/g, separator);

            // Foreign Character Attempt
            var table ={
               '223':'ss','224':'a','225':'a','226':'a','229':'a','227':'ae','230':'ae','228':'ae',
               '231':'c','232':'e','233':'e','234':'e','235':'e','236':'i','237':'i','238':'i',
               '239':'i','241':'n','242':'o','243':'o','244':'o','245':'o','246':'oe','249':'u',
               '250':'u','251':'u','252':'ue','255':'y','257':'aa','269':'ch','275':'ee','291':'gj',
               '299':'ii','311':'kj','316':'lj','326':'nj','353':'sh','363':'uu','382':'zh','256':'aa',
               '268':'ch','274':'ee','290':'gj', '298':'ii','310':'kj','315':'lj','325':'nj','352':'sh',
               '362':'uu','381':'zh'
            }

            NewText = NewText.replace('/<(.*?)>/g', '');
            NewText = NewText.replace('/\�\d+\;/g', '');
            NewText = NewText.replace('/\&\#\d+?\;/g', '');
            NewText = NewText.replace('/\&\S+?\;/g','');
            NewText = NewText.replace(/['\"\?\.\!*$\#@%;:,=\(\)\[\]]/g,'');      //'
            NewText = NewText.replace(/\s+/g, separator);
            NewText = NewText.replace(/\//g, separator);
            NewText = NewText.replace(/\+/g, separator);
            NewText = NewText.replace(/[-_]+/g, separator);
            NewText = NewText.replace(/\&/g,'');
            NewText = NewText.replace(/-$/g,'');
            NewText = NewText.replace(/_$/g,'');
            NewText = NewText.replace(/^_/g,'');
            NewText = NewText.replace(/^-/g,'');

            return NewText;
          }

asics.get_tech_tour_slots = function(tour_id, selected_slot_id){
  $('#loading_img').show();
  $.ajax({
    url: "/admin/tech_tours/"+tour_id+"/slots?selected_slot_id="+selected_slot_id,
    success: function(data) {
      $('#loading_img').hide();
      $('#tech_tour_slot_selector').html(data);
    },
    error: function(data) {
      $('#loading_img').hide();
    }
  });
}

$(document).ready(function(){

    $("body").ajaxComplete(function(evt, request, settings){
        asics.bind_base64_ajax()
        asics.add_close_buttons()
        asics.add_ratings()
        asics.add_busy_indicator()
        asics.add_fancy_iframes()
        asics.fancy_iframes_fix()
        asics.add_expandable_buttons()
        asics.enable_wysiwyg_editor()
        asics.resize_textareas()
        asics.bind_media_library_popups()
    });

    asics.bind_base64_ajax()
    asics.add_ratings()
    asics.add_fancy_iframes()
    asics.fancy_iframes_fix()
    asics.load_optional_js()
    asics.add_busy_indicator()
    asics.add_expandable_buttons()
    asics.resize_textareas()
    asics.bind_media_library_popups()
    $('.delete').click(function() {
        var answer = confirm('Are you sure?');
        return answer;
    });
    asics.toggle_rating();
    asics.toggle_newsletter_form();
});
