jQuery.preloadImages = function()
{
  for(var i=0; i<arguments.length; i+=1)
  {
    jQuery("<img>").attr("src", arguments[i]);
  }
}

$.preloadImages(
    "/site_media/images/button_post_0.gif", 
    "/site_media/images/button_post_1.gif",
    "/site_media/images/button_post_1.gif", 
    "/site_media/images/button_preview_0.gif",
    "/site_media/images/button_preview_1.gif",
    "/site_media/images/button_preview_2.gif",
    "/site_media/images/button_preview_1.gif",
    "/site_media/images/button_preview_2.gif"
);

var GeoValid = function(country, region, country_edit, region_edit) {
    this.country = country;
    this.region = region;
    this.country_edit = country_edit;
    this.region_edit = region_edit;
}

var IsGeoValid = function(company, person, product, publicservice, service, website) {
    this.company = company;
    this.person = person;
    this.product = product;
    this.publicservice = publicservice;
    this.service = service;
    this.website = website;
}

var initialGeo = new GeoValid(false, true, true, true);
var geoValid = new GeoValid(true, true, true, true);
var geoError = new GeoValid(false, false, false, false);
var isGeoValid = new IsGeoValid(initialGeo, initialGeo, geoValid, initialGeo, initialGeo, geoValid);
var isGeoError = new IsGeoValid(geoError, geoError, geoError, geoError, geoError, geoError);

var BLACKLIST = {}

BLACKLIST.complaint_id = "";
BLACKLIST.reason_type = [];
BLACKLIST.reason_number = 1;
BLACKLIST.reason_id = [];
BLACKLIST.isEdit = [false, false, false, false, false, false];
BLACKLIST.promptText = "click here and start typing";
BLACKLIST.reasonText = ["First", "Next", "In addition", "Moreover", "Finally", "Certainly"];
BLACKLIST.numberOfItemsAdded = 0;
BLACKLIST.itemCategory = "";
BLACKLIST.item = [];
BLACKLIST.itemCount = 0;

var postComplaint = function() {
    $.post("/ajax/post_complaint/", {complaintId: BLACKLIST.complaint_id}, function(data){
        window.location = '/spread_the_word/' + BLACKLIST.complaint_id;
    });
}

var Website = function(category, suf) {
    this.name = $("#id_" + category + "_name" + suf).val();
    this.title = $("#id_" + category + "_title" + suf).val();
    this.category = category;
}

var PublicService = function(category, suf) {
    Website.call(this, category, suf);
    this.sector = $("#id_" + category + "_sector" + suf).val();
    this.country = $("#id_" + category + "_country" + suf).val();
    this.region = $("#id_" + category + "_region" + suf).val();
    this.city = $("#id_" + category + "_city" + suf).val();
    this.url = $("#id_" + category + "_url" + suf).val();
}
PublicService.prototype = new Website();
delete PublicService.prototype.title;

var Service = function(category, suf) {
    PublicService.call(this, category, suf);
    this.industry = $("#id_" + category + "_industry" + suf).val();
}
Service.prototype = new PublicService();
delete Service.prototype.sector;

var Product = function(category, suf) {
    Service.call(this, category, suf);
    this.productCategory = $("#id_" + category + "_category" + suf).val();
    this.manufacturer = $("#id_" + category + "_manufacturer" + suf).val();
}
Product.prototype = new Service();
delete Product.prototype.country;
delete Product.prototype.region;
delete Product.prototype.city;

var Company = function(category, suf) {
    Service.call(this, category, suf);
    this.address = $("#id_" + category + "_address" + suf).val();
}
Company.prototype = new Service();

var Person = function(category, suf) {
    Company.call(this, category, suf);
}
Person.prototype = new Company();
delete Person.prototype.industry;

var Item = function(category, suf) {
    switch(category) {
        case "company":
            Company.call(this, category, suf);
            prependHttp(category, "url", suf);
            break;
        case "person":
            Person.call(this, category, suf);
            prependHttp(category, "url", suf);
            break;
        case "product":
            Product.call(this, category, suf);
            prependHttp(category, "url", suf);
            break;
        case "publicservice":
            PublicService.call(this, category, suf);
            prependHttp(category, "url", suf);
            break;
        case "service":
            Service.call(this, category, suf);
            prependHttp(category, "url", suf);
            break;
        case "website":
            Website.call(this, category, suf);
            prependHttp(category, "name", suf);
            break;
    }
}

var genericEditLinkClicked = function(itemNumber) {
    closeAnyEdits();
    BLACKLIST.isEdit[itemNumber] = true;
    $.get("/ajax/edit_item/", {itemNumber: itemNumber, complaintId: BLACKLIST.complaint_id}, 
        function(data){
            category = $(".ireason_type_" + itemNumber).text();
            $(".reasonblock_" + itemNumber).html(data);
            $(".isave_" + itemNumber).click(function(event) {
                event.preventDefault();
                genericSaveLinkClicked(itemNumber);
            });
            $(".save-button").attr("src", "/site_media/images/b_save_1.gif");
            $(".save-button").mouseover(function() {
                $(".save-button").attr("src", "/site_media/images/b_save_2.gif");
            }).mouseout(function() {
               $(".save-button").attr("src", "/site_media/images/b_save_1.gif"); 
            });
            $("#edit-form").validate();
            enableHierarchy(category, "_edit");
            attachAutocomplete(category, "_edit");
            $(".instruments").hide();
            buttonPost.disable();
            buttonPreview.disable();
            if (category !== "website") {
                prependHttpCaller(category, "url", "_edit");
            } else {
                prependHttpCaller(category, "name", "_edit");
            }
        }
    );
}

var saveLinkClicked = function(itemNumber, itemId, category) {
    if ( 
        $("#edit-form").validate().form() === true && 
            isGeoValid[category]["country_edit"] === true && isGeoValid[category]["region_edit"] === true
            ) {
        $(".instruments").show();
        var saveItem = new Item(category, "_edit");
        saveItem['itemNumber'] = itemNumber;
        saveItem['itemId'] = itemId;
        $.post("/ajax/save_item/", saveItem, function(data){
            displayEditedReason(itemNumber, data);
        });
        buttonPost.enable();
        buttonPreview.enable();
    } else {
        displayGeoError(category, "_edit");
    }
}

var addItem = function() {    
    var complaint = new Complaint();
        
    var postItem = function(complaintId) {
        BLACKLIST.item[BLACKLIST.itemCount] = new Item(BLACKLIST.itemCategory, "");
        BLACKLIST.item[BLACKLIST.itemCount].complaintId = complaint.id = complaintId;
        $.post("/ajax/add_item/", BLACKLIST.item[BLACKLIST.itemCount], function(data) {
            displayReason(data, BLACKLIST.itemCategory);
            BLACKLIST.itemCount += 1;
        });
    }
    
    BLACKLIST.itemCategory = $("#id_item_category").val();

    if ($("#id_company_name").val() === BLACKLIST.promptText) {
        $("#id_company_name").val("");
    }
    if ( //1 === 1
        $("#complaint-form").validate().form() === true &&
            isGeoValid[BLACKLIST.itemCategory]["country"] === true &&
                isGeoValid[BLACKLIST.itemCategory]["region"] === true
        ) {
          
        if (BLACKLIST.item.length === 0) {
            $.post("/ajax/create_complaint/", complaint, function(data) {
                postItem(data);
            });
        } else {
            postItem(BLACKLIST.item[0].complaintId);
        } 
        
        buttonPost.enable();
    } else {
       displayGeoError(BLACKLIST.itemCategory, "");
    }
    if (BLACKLIST.itemCount === 1) {
        hints.turnOff();
    }
}

var Button = function(button, action) {
    this.disable = function() {
        $("#" + button).attr("src", "/site_media/images/" + button + "_0.gif");
        $("#" + button).mouseover(function() {
            $("#" + button).css("cursor", "default");
            $("#" + button).attr("src", "/site_media/images/" + button + "_0.gif");
        }).mouseout(function() {
           $("#" + button).attr("src", "/site_media/images/" + button + "_0.gif"); 
        });
        $("#" + button).unbind("click");
        $("#" + button).click(dummyLinkClicked);
    }
    this.enable = function() {
        $("#" + button).unbind("click");
        $("#" + button).click(function(event) {
            event.preventDefault();
            action.call(this)
        });
        $("#" + button).attr("src", "/site_media/images/" + button + "_1.gif");
        $("#" + button).mouseover(function() {
            $("#" + button).css("cursor", "pointer");
            $("#" + button).attr("src", "/site_media/images/" + button + "_2.gif");
        }).mouseout(function() {
           $("#" + button).attr("src", "/site_media/images/" + button + "_1.gif"); 
        });
    }
}

var buttonPost = new Button("button_post", postComplaint);
var buttonPreview = new Button("button_preview", addItem);

var Hints = function() {
    this.turnOn = function() {
        $.cookie("isHintOn", "true");
        $("#hint-text").text("Don't need hints?")
        $("#hint-switch a").text("Switch them off");
        $(".form-hint").show();
        this.isOn = true;
    }
    this.turnOff = function() {
        $.cookie("isHintOn", "false");
        $("#hint-text").text("Need hints?")
        $("#hint-switch a").text("Switch them on");
        $(".form-hint").hide();
        this.isOn = false;
        
    }
    this.isOn = false;
    this.sw = function() {
        if (this.isOn) {
            this.turnOff();
            this.isOn = false;
        } else {
            this.turnOn();
            this.isOn = true;
        }
    }
}

var hints = new Hints();

$(document).ready(function() {
    switch($.cookie("isHintOn")) {
        case null:
            hints.turnOn();
            break;
        case "true":
            hints.turnOn();
            break;
        case "false":
            hints.turnOff();
            break;
        default:
            hints.turnOn();
            break;
    }
        
    $("#complaint-form").validate();
    for (var i=1; i<5; i+=1) {
        $(".reasonblock_" + i).hide();
    }
    $("#id_item_category").change(onSelectChange);      
    $("#complaint-form").submit(dummyLinkClicked);
    attachAutocomplete("company", "");
    createNamePrompt("#id_company_name");
    enableHierarchy("company", "");
    prependHttpCaller("company", "url", "");
    // attachAutocomplete("product", "");
    // createNamePrompt("#id_product_name");
    // enableHierarchy("product", "");
    // prependHttpCaller("product", "url", "");
    jQuery("select#id_item_category option[selected]").removeAttr("selected");
    // jQuery("select#id_item_category option[value='product']").attr("selected", "selected");
    jQuery("select#id_item_category option[value='company']").attr("selected", "selected");
    buttonPost.disable();
    buttonPreview.enable();
    $("#hint-switch a").click(function(event) {
        event.preventDefault();
        hints.sw();
    });
});

var removePrompt = function(formFieldId) {
    $(formFieldId).val("");
    $(formFieldId).removeClass("prompt");
}

var enableHierarchy = function(category, suf) {
    toggleForm(suf, category, "country", "region", "city");
    toggleForm(suf, category, "region", "city");
}

var toggleForm = function(suf, category, higherFormField, lowerFormField, lowestFormField) {
    if ($("#id_" + category + "_" + lowerFormField + suf).val() === "") {
       $("#id_" + category + "_" + lowerFormField + suf).attr("disabled", true);
    }
    $("#id_" + category + "_" + higherFormField + suf).keyup(function() {
        switch(higherFormField) {
            case "country":
                checkCountryValidity(suf, category, higherFormField, lowerFormField, lowestFormField);
                break;
            case "region":
                checkRegionValidity(suf, category, higherFormField, lowerFormField, lowestFormField);
                break;
        }
    });
}

var checkCountryValidity = function(suf, category, higherFormField, lowerFormField, lowestFormField) {
    $.get("/add_complaint/check_" + higherFormField + "/", 
        { country: $("#id_" + category + "_" + higherFormField + suf).val() }, function(data) {
        if (data === "true") {
            $("#id_" + category + "_" + lowerFormField + suf).removeAttr("disabled");
            $("#country-error").remove();
            isGeoValid[category]["country" + suf] = true;
            isGeoError[category]["country" + suf] = false;
        }
        else {
            $("#id_" + category + "_" + lowerFormField + suf).val("");
            $("#id_" + category + "_" + lowerFormField + suf).attr("disabled", true);
            isGeoValid[category]["country" + suf] = false;
            if (lowestFormField) {
                $("#id_" + category + "_" + lowestFormField + suf).val("");
                $("#id_" + category + "_" + lowestFormField + suf).attr("disabled", true);
            }
        }
    });
}

var checkRegionValidity = function(suf, category, higherFormField, lowerFormField, lowestFormField) {
    $.get("/add_complaint/check_" + higherFormField + "/", 
        { region: $("#id_" + category + "_" + higherFormField + suf).val(),
          country: $("#id_" + category + "_" + "country" + suf).val() }, function(data) {
        if (data === "true") {
            $("#id_" + category + "_" + lowerFormField + suf).removeAttr("disabled");
            $("#region-error").remove();
            isGeoValid[category]["region" + suf] = true;
            isGeoError[category]["region" + suf] = false;
        }
        else {
            $("#id_" + category + "_" + lowerFormField + suf).val("");
            $("#id_" + category + "_" + lowerFormField + suf).attr("disabled", true);
            isGeoValid[category]["region" + suf] = false;
            if (lowestFormField) {
                $("#id_" + category + "_" + lowestFormField + suf).val("");
                $("#id_" + category + "_" + lowestFormField + suf).attr("disabled", true);
            }
        }
    });
}

var clearForm = function(category) {
    switch(category) {
        case "company": 
            $("#id_" + category + "_name").val('');
            $("#id_" + category + "_industry").val('');
            $("#id_" + category + "_country").val('');
            $("#id_" + category + "_region").val('');
            $("#id_" + category + "_city").val('');
            $("#id_" + category + "_address").val('');
            $("#id_" + category + "_url").val('');
            break;
        case "person":
            $("#id_" + category + "_name").val("");
            $("#id_" + category + "_country").val("");
            $("#id_" + category + "_region").val("");
            $("#id_" + category + "_city").val("");
            $("#id_" + category + "_address").val("");
            $("#id_" + category + "_url").val("");
            break;
        case "product":
            $("#id_" + category + "_name").val('');
            $("#id_" + category + "_category").val('');
            $("#id_" + category + "_manufacturer").val('');
            $("#id_" + category + "_url").val('');
            break;
        case "publicservice":
            $("#id_" + category + "_name").val('');
            $("#id_" + category + "_sector").val('');
            $("#id_" + category + "_country").val('');
            $("#id_" + category + "_region").val('');
            $("#id_" + category + "_city").val('');
            $("#id_" + category + "_url").val('');
            break;
        case "service":
            $("#id_" + category + "_name").val('');
            $("#id_" + category + "_industry").val('');
            $("#id_" + category + "_country").val('');
            $("#id_" + category + "_region").val('');
            $("#id_" + category + "_city").val('');
            $("#id_" + category + "_url").val('');
            break;
        case "website":
            $("#id_" + category + "_name").val('');
            $("#id_" + category + "_title").val('');
            break;
    }
}

var displayReason = function(data, category) {
    $("#item-error").remove();
    if (data.indexOf("Validation failed") === -1) {
        genericDisplayReason(BLACKLIST.reason_number, data);
        genericAttachInstruments(BLACKLIST.reason_number);
        $(".imgblock").attr("src", "/site_media/images/available_" + BLACKLIST.reason_number + ".gif");
        BLACKLIST.reason_number += 1;
        BLACKLIST.numberOfItemsAdded += 1;
        clearForm(category);
        enableHierarchy(category, "");
    } else {
        $(".reason").before('<div class="reasonblock" id="item-error">There has been an error adding the item, please check the URL and data you entered and try again. Contact us if the problem persists.</div>');
    }
}

var displayEditedReason = function(editItemNumber, data){
    $("#item-error").remove();
    if (data.indexOf("Validation failed") === -1) {
        $(".reasonblock_" + editItemNumber).html(data);
        hideMetaData(editItemNumber);
        genericAttachInstruments(editItemNumber, true);
    } else {
        $(".reason").before('<div class="reasonblock" id="item-error">There has been an error updating the item, please check the URL and data you entered and try again. Contact us if the problem persists.</div>');
    }
}

var Complaint = function() {
    this.title = $("#id_title").val();
    this.body = $("#id_body").val();
}

var genericSaveLinkClicked = function(itemNumber) {
    BLACKLIST.isEdit[itemNumber] = false;
    $("body").css("cursor", "auto");
    $("#isave_" + itemNumber).css("cursor", "wait");
    saveLinkClicked(itemNumber, BLACKLIST.reason_id[itemNumber], BLACKLIST.reason_type[itemNumber]);
    $("body").css("cursor", "auto");
    $("#isave_" + itemNumber).css("cursor", "auto");
}

var displayGeoError = function(category, suf) {
    if (isGeoError[category]["country" + suf] === false && isGeoValid[category]["country" + suf] === false) {
        $("#id_" + category + "_country" + suf).after("<label id='country-error'>Please choose a valid country</label>");
        isGeoError[category]["country" + suf] = true;
    }
    if (isGeoError[category]["region" + suf] === false && isGeoValid[category]["region" + suf] === false) {
        $("#region-error").remove();
        $("#id_" + category + "_region" + suf).after("<label id='region-error'>Please choose a valid region</label>");
        isGeoError[category]["region"] = true;
    }
}

var prependHttp = function(category, field, suf) {
    var url = $("#id_" + category + "_" + field + suf).val();
    if (url.indexOf("http://") === -1 && url !== "") {
        $("#id_" + category + "_" + field + suf).val("http://" + url);
    }
}

var prependHttpCaller = function(category, field, suf) {
    $("#id_" + category + "_" + field + suf).blur(function() {
        prependHttp(category, field, suf);
    });
}

var onSelectChange = function(){  
    var selected = $("#id_item_category option:selected");       
    var output = "";  
    if(selected.val() !== 0){
        var category = selected.val();
        $("#reason_form_block").load("/ajax/load_form/?" + category, function(){
            attachAutocomplete(category, "");
            enableHierarchy(category, "");
            if (category !== "website") {
                prependHttpCaller(category, "url", "");
            } else {
                prependHttpCaller(category, "name", "");
            }
            createNamePrompt("#id_" + category + "_name");
        });
    }  
}

var createNamePrompt = function(formFieldId) {
    $(formFieldId).addClass("prompt");
    $(formFieldId).focus(function() {
        $(formFieldId).removeClass("prompt");
        if ($(formFieldId).val() === BLACKLIST.promptText)
            $(formFieldId).val("");
    });
    $(formFieldId).blur(function() {
        if ($(formFieldId).val() === "") {
            $(formFieldId).addClass("prompt");
            $(formFieldId).val(BLACKLIST.promptText);
        }
    });
}

var autoComplete = function(field) {
    $("#id_" + field).autocomplete("/ajax/" + field + "/autocomplete/", {cacheLength: 1, multiple: false, multipleSeparator: ' '});  
}

var flushGeo = function(category, suf) {
    $("#id_" + category + "_country" + suf).change(function() {
        $("#id_" + category + "_region" + suf).flushCache();
    });
    $("#id_" + category + "_region" + suf).change(function() {
        $("#id_" + category + "_city" + suf).flushCache();
    });
}

var attachGeoFields = function(category, suf) {
    autoComplete(category + "_country" + suf);
    autoComplete(category + "_region" + suf);
    autoComplete(category + "_city" + suf);
    flushGeo(category, suf);
}

var attachAutocomplete = function(category, suf) {
    autoComplete(category + "_name" + suf);
    switch (category) {  
        case "company":
            attachGeoFields(category, suf);
            autoComplete(category + "_industry" + suf);
            autoComplete(category + "_address" + suf);
            autoComplete(category + "_url" + suf);
            break;
        case "person":
            attachGeoFields(category, suf);
            autoComplete(category + "_address" + suf);
            autoComplete(category + "_url" + suf);
            break;
        case "product":
            autoComplete(category + "_category" + suf);
            autoComplete(category + "_manufacturer" + suf);
            autoComplete(category + "_url" + suf);
            break;  
        case "publicservice":
            attachGeoFields(category, suf);
            autoComplete(category + "_sector" + suf);
            autoComplete(category + "_url" + suf);
            break;
        case "service":
            attachGeoFields(category, suf);
            autoComplete(category + "_industry" + suf);
            autoComplete(category + "_url" + suf);
            break;    
    }
}

var swapReasons = function(firstItem, secondItem) {
    var reason_swap = BLACKLIST.reason_type[firstItem];
    BLACKLIST.reason_type[firstItem] = BLACKLIST.reason_type[secondItem];
    BLACKLIST.reason_type[secondItem] = reason_swap;
    var reason_id_swap = BLACKLIST.reason_id[firstItem];
    BLACKLIST.reason_id[firstItem] = BLACKLIST.reason_id[secondItem];
    BLACKLIST.reason_id[secondItem] = reason_id_swap;
    var reason_type_one = $(".reason_type_" + firstItem).text();
    var reason_type_two = $(".reason_type_" + secondItem).text();
    $(".reason_type_" + firstItem).text(reason_type_two);
    $(".reason_type_" + secondItem).text(reason_type_one);
    var reason_body_one = $(".reason_body_" + firstItem).html();
    var reason_body_two = $(".reason_body_" + secondItem).html();
    $(".reason_body_" + firstItem).html(reason_body_two);
    $(".reason_body_" + secondItem).html(reason_body_one);
}

var genericUpLinkClicked = function(itemNumber) {
    if (BLACKLIST.isEdit[itemNumber - 1] === true){
        genericSaveLinkClicked(itemNumber);
        var isEditTwoSwap = true;
    }
    else if (BLACKLIST.isEdit[itemNumber] === true){
        genericSaveLinkClicked(itemNumber);
        var isEditOneSwap = true;
    }
    swapReasons(itemNumber - 1, itemNumber);
    $.post("/ajax/moveup_item/", {complaintId: BLACKLIST.complaint_id, itemNumber: itemNumber});
    if (isEditTwoSwap === true){
        genericEditLinkClicked(itemNumber);
    }
    else if (isEditOneSwap === true){
        genericEditLinkClicked(itemNumber - 1);
    }
}

var enableSaveButton = function() {
    $(".isave_1").attr("src", "/site_media/images/b_save_1.gif");
    $("#button_preview").mouseover(function() {
        $("#button_preview").attr("src", "/site_media/images/b_add_2.gif");
    }).mouseout(function() {
       $("#button_preview").attr("src", "/site_media/images/b_add_1.gif"); 
    });
}

var genericDeleteLinkClicked = function(deleteItemNumber) {
    $.post("/ajax/delete_item/", {complaintId: BLACKLIST.complaint_id, itemNumber: deleteItemNumber},
        function(data){
            $(".editfirstword").text(BLACKLIST.reasonText[deleteItemNumber - 1]);
            var i = deleteItemNumber + 1;
            while(i <= BLACKLIST.numberOfItemsAdded){
                genericUpLinkClicked(i);
                i += 1;
            }
            $(".reasonblock_" + BLACKLIST.numberOfItemsAdded).hide();
            if (BLACKLIST.reason_number > 1)
                BLACKLIST.reason_number--;
            if (BLACKLIST.numberOfItemsAdded > 0) 
                BLACKLIST.numberOfItemsAdded--;
            idownOff(BLACKLIST.numberOfItemsAdded);
            $(".imgblock").attr("src", "/site_media/images/available_" + BLACKLIST.numberOfItemsAdded + ".gif");
            switch (BLACKLIST.numberOfItemsAdded) {
                case 0:
                    buttonPost.disable();
                    break;
                case 1:
                    idownOff(1);
                    break;
                case 4:
                    $("#button_preview").attr("src", "/site_media/images/button_preview_1.gif");
                    $(".reason").show();
            }
        }
    );
}

var idownOff = function(itemNumber){
    $(".idown_" + itemNumber).css("background", "url(/site_media/images/i_down_a.gif) left center no-repeat");
    $(".idown_" + itemNumber).unbind("click");
    $(".idown_" + itemNumber).click(dummyLinkClicked);
    $(".idown_" + itemNumber).css("text-decoration", "none");
    $(".idown_" + itemNumber).css("color", "#a9a9a9");
}

var idownOn = function(itemNumber){
    $(".idown_" + itemNumber).css("background", "url(/site_media/images/i_down.gif) left center no-repeat");
    $(".idown_" + itemNumber).unbind("click");
    $(".idown_" + itemNumber).click(function(event) {
        event.preventDefault();
        $("body").css("cursor", "auto");
        $("#idown_" + itemNumber).css("cursor", "wait");
        genericUpLinkClicked(itemNumber + 1);
        $("body").css("cursor", "auto");
        $("#idown_" + itemNumber).css("cursor", "auto");
    });
    $(".idown_" + itemNumber).css("text-decoration", "underline");
    $(".idown_" + itemNumber).css("color", "#004eae");
}

var hideMetaData = function(itemNumber) {
    $(".complaint_id").hide();
    $(".ireason_type_" + itemNumber).hide();
    $(".ireason_id_" + itemNumber).hide();
}

var iupOff = function(){
    $(".iup_1").css("background", "url(/site_media/images/i_up_a.gif) left center no-repeat");
    $(".iup_1").click(dummyLinkClicked);
    $(".iup_1").css("text-decoration", "none");
    $(".iup_1").css("color", "#a9a9a9");
}

var genericAttachInstruments = function(itemNumber, edit) {
    $(".iedit_" + itemNumber).unbind("click"); 
    $(".iedit_" + itemNumber).click(function(event) {
        event.preventDefault();
        $("body").css("cursor", "wait");
        $("#iedit_" + itemNumber).css("cursor", "wait");
        genericEditLinkClicked(itemNumber);
        $("body").css("cursor", "auto");
        $("#iedit_" + itemNumber).css("cursor", "auto");
    });
    $(".idelete_" + itemNumber).unbind("click");
    $(".idelete_" + itemNumber).click(function(event) {
        event.preventDefault();
        $("body").css("cursor", "wait");
        $("#idelete_" + itemNumber).css("cursor", "wait");
        genericDeleteLinkClicked(itemNumber);
        $("body").css("cursor", "auto");
        $("#idelete_" + itemNumber).css("cursor", "auto");
        deleted = true;
    });
    if ((!edit && itemNumber === BLACKLIST.reason_number) || (edit && itemNumber === BLACKLIST.reason_number-1)) {
       idownOff(itemNumber);
    } else {
        idownOn(itemNumber);
    }
    if (itemNumber === 1) {
        iupOff();
    }
    else {
        $(".iup_").unbind("click");
        $(".iup_" + itemNumber).click(function(event) {
            event.preventDefault();
            $("body").css("cursor", "wait");
            $("#iup_" + itemNumber).css("cursor", "wait");
            genericUpLinkClicked(itemNumber);
            $("body").css("cursor", "auto");
            $("#iup_" + itemNumber).css("cursor", "auto");
        });
        idownOn(itemNumber - 1);
    }
}

var closeAnyEdits = function() {
    for (var i=1; i<6; i+=1) {
        if (BLACKLIST.isEdit[i] === true)
            genericSaveLinkClicked(i);
    }
}

var dummyLinkClicked = function() {
    return false;
}

var genericDisplayReason = function(itemNumber, data) {
    $(".reasonblock_" + itemNumber).show();
    $(".reasonblock_" + itemNumber).html(data);
    $(".editfirstword").text(BLACKLIST.reasonText[itemNumber]);
    hideMetaData(itemNumber);
    BLACKLIST.reason_type[itemNumber] = $(".ireason_type_" + itemNumber).text();
    BLACKLIST.reason_id[itemNumber] = $(".ireason_id_" + itemNumber).text();
    if (BLACKLIST.complaint_id === '') { 
        BLACKLIST.complaint_id = $(".complaint_id").text();
    }
    var is_valid = $(".validation").text();
    if (is_valid) {
        BLACKLIST.reason_number--;
    }
    switch (itemNumber) {
        case 5:
            $("#button_preview").attr("src", "/site_media/images/add.gif");
            $("#complaint-form").submit(dummyLinkClicked);
            $(".reason_number").hide();
            $(".reason").hide();
            break;
        }   
}