text:
PRIVATE = null;
EVERYONE = null;
ALL_REGISTERED_USERS = null;
ALL_ELAB_USERS = null;
CUSTOM_PERMISSIONS_ONLY = null;
// --
DETERMINED_BY_GROUP = null;
NO_ACCESS = null;
VIEWING = null;
DOWNLOADING = null;
EDITING = null;

GET_POLICY_DEFAULTS_LINK = null;
GET_INSTITUTIONS_LINK = null;
GET_ALL_INSTITUTIONS_LINK = null;

CREATE_FAVOURITE_GROUP_LINK = null;
UPDATE_FAVOURITE_GROUP_LINK = null;

REVIEW_WORK_GROUP_LINK = null;

// declarations for autocompleters
// (IDs can be any strings - the only constraint is that they should hold unique names for each autocompleter)
var f_group_autocompleter_id = 'f_group_autocompleter';
var individual_people_autocompleter_id = 'ip_autocompleter';
var attributions_autocompleter_id = 'attributions_autocompleter';
// associative array that holds all instances of autocompleters on a page
var autocompleters = new Array();

var policy_settings = new Object();
var permissions_for_set = {};
var permission_settings = new Array();

var attribution_settings = new Array();

var receivedPolicySettings = null;
var receivedProjectInstitutions = null;

var currentFavouriteGroupSettings = {};

function init_sharing() {
    PRIVATE = parseInt($('const_private').value);
    EVERYONE = parseInt($('const_everyone').value);
    ALL_REGISTERED_USERS = parseInt($('const_all_registered_users').value);
    ALL_ELAB_USERS = parseInt($('const_all_elab_users').value);
    CUSTOM_PERMISSIONS_ONLY = parseInt($('const_custom_permissions_only').value);

    DETERMINED_BY_GROUP = parseInt($('const_determined_by_group').value);
    NO_ACCESS = parseInt($('const_no_access').value);
    VIEWING = parseInt($('const_viewing').value);
    DOWNLOADING = parseInt($('const_downloading').value);
    EDITING = parseInt($('const_editing').value);
	//no favourite groups currently in use in methodbox
    //replaceFavouriteGroupRedboxActionURL();
}

function setSharingElementVisibility(sharing_scope)
{
    switch(sharing_scope)
    {
        case PRIVATE:
            // $('include_custom_sharing_div_' + EVERYONE).hide();
            // $('include_custom_sharing_div_' + ALL_REGISTERED_USERS).hide();
            // $('include_custom_sharing_div_' + ALL_ELAB_USERS).hide();
            // $('cb_use_whitelist').disabled = true;
            // $('cb_use_blacklist').disabled = true;
            setCustomSharingDivVisibility(PRIVATE);
            break;
        case EVERYONE:
            // $('include_custom_sharing_div_' + EVERYONE).show();
            // $('include_custom_sharing_div_' + ALL_REGISTERED_USERS).hide();
            // $('include_custom_sharing_div_' + ALL_ELAB_USERS).hide();
            // $('cb_use_whitelist').disabled = false;
            // $('cb_use_blacklist').disabled = false;
            setCustomSharingDivVisibility(EVERYONE);
            break;
        case ALL_REGISTERED_USERS:
            // $('include_custom_sharing_div_' + EVERYONE).hide();
            // $('include_custom_sharing_div_' + ALL_REGISTERED_USERS).show();
            // $('include_custom_sharing_div_' + ALL_ELAB_USERS).hide();
            // $('cb_use_whitelist').disabled = false;
            // $('cb_use_blacklist').disabled = false;
            setCustomSharingDivVisibility(ALL_REGISTERED_USERS);
            break;
        case ALL_ELAB_USERS:
            // $('include_custom_sharing_div_' + EVERYONE).hide();
            // $('include_custom_sharing_div_' + ALL_REGISTERED_USERS).hide();
            // $('include_custom_sharing_div_' + ALL_ELAB_USERS).show();
            // $('cb_use_whitelist').disabled = false;
            // $('cb_use_blacklist').disabled = false;
            setCustomSharingDivVisibility(ALL_ELAB_USERS);
            break;
        case CUSTOM_PERMISSIONS_ONLY:
            // $('include_custom_sharing_div_' + EVERYONE).hide();
            // $('include_custom_sharing_div_' + ALL_REGISTERED_USERS).hide();
            // $('include_custom_sharing_div_' + ALL_ELAB_USERS).hide();
            // $('cb_use_whitelist').disabled = false;
            // $('cb_use_blacklist').disabled = false;
            setCustomSharingDivVisibility(CUSTOM_PERMISSIONS_ONLY);
            break;
        default:

    }
}

function setCustomSharingDivVisibility(sharing_scope)
{
    // if ((sharing_scope >= ALL_ELAB_USERS && sharing_scope <= EVERYONE && $('include_custom_sharing_'+sharing_scope).checked)
        // || sharing_scope == CUSTOM_PERMISSIONS_ONLY)
    if (sharing_scope == CUSTOM_PERMISSIONS_ONLY)
        {
        $('specific_sharing').show();
    }
    else
    {
        $('specific_sharing').hide();
    }
}

function loadDefaultProjectPolicy(project_id) {
    $('policy_loading_spinner').style.display = "inline";

    request = new Ajax.Request(GET_POLICY_DEFAULTS_LINK,
    {
        method: 'get',
        parameters: {
            policy_type: 'default',
            entity_type: 'Project',
            entity_id: project_id
        },
        onSuccess: function(transport){
            $('policy_loading_spinner').style.display = "none";

            // "true" parameter to evalJSON() activates sanitization of input
            var data = transport.responseText.evalJSON(true);

            if (data.status == 200) {
                msg = data.found_exact_match ? 'Default policy found and loaded' : 'Couldn\'t find default policy for this Project,\nsystem defaults loaded instead.'
                alert(msg);

                receivedPolicySettings = data;

                parsePolicyJSONData(data);
                updateSharingSettings();
            }
            else {
                error_status = data.status;
                error_message = data.error
                alert('An error occurred...\n\nHTTP Status: ' + error_status + '\n' + error_message);
            }
        },
        onFailure: function(transport){
            $('policy_loading_spinner').style.display = "none";
            alert('Something went wrong, please try again...');
        }
    });

}

function parsePolicyJSONData(data) {
    // re-initialize data structures in case this is run more than one time
    policy_settings = new Object();
    permissions_for_set = {};
    permission_settings = new Array();

    policy_settings = data.policy

    for(var i = 0; i < data.permission_count; i++)
    {
        // permission IDs are present - if required
        // example: perm_id = data.permissions[i][0];

        // process all permissions and categorize by contributor types
        perm_settings = data.permissions[i][1];

        switch(perm_settings.contributor_type) {
            case "FavouriteGroup":
                // the only thing to check here is that the current FavouriteGroup is a whitelist/blacklist
                // (skip this group if it is; process identically to other contributor types otherwise)
                if(perm_settings.whitelist_or_blacklist)
                    continue;

            case "Person":
            case "WorkGroup":
            case "Project":
            case "Institution":
                addContributor(perm_settings.contributor_type, perm_settings.contributor_name, perm_settings.contributor_id, perm_settings.access_type);
                break;
            default:
        // do nothing for unknown permission types
        }
    }
}

function updateSharingSettings() {
    // ************** STANDARD SETTINGS ***************
    // reset previous settings
    $('include_custom_sharing_' + EVERYONE).checked = false;
    $('include_custom_sharing_' + ALL_REGISTERED_USERS).checked = false;
    $('include_custom_sharing_' + ALL_ELAB_USERS).checked = false;

    $('access_type_select_' + EVERYONE).selectedIndex = 0;
    $('access_type_select_' + ALL_REGISTERED_USERS).selectedIndex = 0;
    $('access_type_select_' + ALL_ELAB_USERS).selectedIndex = 0;

    // set all main policy settings..
    // ..sharing scope
    $('sharing_scope_' + policy_settings.sharing_scope).checked = true;

    // ..access_type and usage of custom permissions
    if(policy_settings.sharing_scope >= ALL_ELAB_USERS && policy_settings.sharing_scope <= EVERYONE) {
        access_type_select = $('access_type_select_' + policy_settings.sharing_scope)
        for(var i = 0; i < access_type_select.options.length; i++)
            if(access_type_select.options[i].value == policy_settings.access_type) {
                access_type_select.selectedIndex = i;
                break;
            }

        if(policy_settings.use_custom_sharing)
            $('include_custom_sharing_' + policy_settings.sharing_scope).checked = true;
    }

    // ..whitelist / blacklist settings
    $('cb_use_whitelist').checked = policy_settings.use_whitelist;
    $('cb_use_blacklist').checked = policy_settings.use_blacklist;

    // make sure that correct DIVs on the page are visible (same mechanism as if the
    // selections were made on the page, rather than from JavaScript)
    setSharingElementVisibility(policy_settings.sharing_scope);

    // ************** CUSTOM PERMISSIONS ***************
    // build custom permissions list and set relevant other options
//methodbox doing this differently by using the controller to build list of workgroups
    // updateCustomSharingSettings();
}

function updateCustomSharingSettings() {
    // iterate through all categories of contributors in existing permissions
    // and build the "shared with" list

    var shared_with = '';

    for(contributor_type in permissions_for_set)
        for(var i = 0; i < permission_settings[contributor_type].length; i++) {
            shared_with += '' + contributor_type + ': ' + permission_settings[contributor_type][i][0]
            + '  ('+ accessTypeTranslation(permission_settings[contributor_type][i][2]) +')'
            + '   '
            + '[remove]
';
        }

    // remove the last line break
    if(shared_with.length > 0) {
        shared_with = shared_with.slice(0,-5);
    }

    // update the page
    if(shared_with.length == 0) {
        $('shared_with_list').innerHTML = 'No one';
    }
    else {
        $('shared_with_list').innerHTML = shared_with;
    }

    // UPDATE THE FIELDS WHICH WILL BE SUBMITTED WITH THE PAGE
    $('sharing_permissions_contributor_types').value = "";
    $('sharing_permissions_values').value = "";

    for(contributor_type in permissions_for_set) {
        // assemble all permission data for current contributor type in a hash
        if(permission_settings[contributor_type].length > 0) {
            $('sharing_permissions_contributor_types').value += "\"" + contributor_type + "\", ";
            $('sharing_permissions_values').value += "\"" + contributor_type + "\"" + ": {"

            for(var i = 0; i < permission_settings[contributor_type].length; i++) {
                $('sharing_permissions_values').value += permission_settings[contributor_type][i][1] + ": {\"access_type\": " + permission_settings[contributor_type][i][2] + "}, ";
            }

            // "-2" in slice() required to remove the last joining comma and space from hash
            $('sharing_permissions_values').value = $('sharing_permissions_values').value.slice(0,-2);
            $('sharing_permissions_values').value += "}, ";
        }
    }

    // "-2" in slice() required to remove the last joining comma and space from arrays
    $('sharing_permissions_values').value = "{" + $('sharing_permissions_values').value.slice(0,-2) + "}";
    $('sharing_permissions_contributor_types').value = "[" + $('sharing_permissions_contributor_types').value.slice(0,-2) + "]";
}

function accessTypeTranslation(access_type) {
    txt = '';

    switch(access_type) {
        case DETERMINED_BY_GROUP:
            txt = 'individual access rights for each member';
            break;
        case NO_ACCESS:
            txt = 'no access';
            break;
        case VIEWING:
            txt = 'viewing only';
            break;
        case DOWNLOADING:
            txt = 'viewing and downloading only';
            break;
        case EDITING:
            txt = 'viewing, downloading and editing';
            break;
    }

    return(txt);
}

// removes a contributor from "shared with" list and updates the displayed list
function deleteContributor(contributor_type, contributor_id) {
    // update the index list (decrement count of the elements of 'contributor_type' type);
    // (the key can stay there, even if the count goes down to zero)
    permissions_for_set[contributor_type]--;

    // remove the actual record for the contributor
    for(var i = 0; i < permission_settings[contributor_type].length; i++)
        if(permission_settings[contributor_type][i][1] == contributor_id) {
            permission_settings[contributor_type].splice(i, 1);
            break;
        }

    // update the page
    // updateCustomSharingSettings();
}

// adds a contributor to "shared with" list and updates the displayed list
function addContributor(contributor_type, contributor_name, contributor_id, access_type) {
    new_entry = true;

    // check if such (legal!) type of contributor was encoutered before --
    // if so, increment the number of occurrences of this type;
    // if not, add to set of contributor types and initialise array
    if(contributor_type in permissions_for_set)
        // such type has been seen before - check if this contributor isn't in the list yet
        if(checkContributorNotInList(contributor_type, contributor_id))
            permissions_for_set[contributor_type]++;
        else
            new_entry = false;
    else {
        permissions_for_set[contributor_type] = 0;
        permission_settings[contributor_type] = new Array();
    }

    if(new_entry) {
        // add current values into the associative array of permissions:
        // first index is the category of contributor type of the permission, the second - consecutive
        // number of occurrences of permissions for such type of contributor
        permission_settings[contributor_type][permissions_for_set[contributor_type]] =
        [contributor_name, contributor_id, access_type];

        // update visible page
        updateCustomSharingSettings();
    }
    else {
        alert('The following entity was not added (already in the list):\n\n' +
            contributor_type + ': ' + contributor_name);
    }
}

function checkContributorNotInList(contributor_type, contributor_id) {
    rtn = true;

    if(permission_settings[contributor_type]) {
        for(var i = 0; i < permission_settings[contributor_type].length; i++)
            if(permission_settings[contributor_type][i][1] == contributor_id) {
                rtn = false;
                break;
            }
    }

    return(rtn);
}

// ***************  Project & Institution Selection  *****************

function updateProjectInstitutionVisibility(step_idx) {
    switch(step_idx) {
        case 1:
            $('proj_select_step_1').className = "note_text";
            $('proj_select_step_2').className = "note_text_disabled";
            $('proj_select_step_3').className = "note_text_disabled";

            $('proj_select_step_div_1').show();
            $('proj_select_step_div_2').hide();
            $('proj_select_step_div_3').hide();

            $('proj_select_prev_link').hide();
            $('proj_select_next_link').show();
            $('proj_select_add_link').hide();
            break;

        case 2:
            $('proj_select_step_1').className = "note_text_disabled";
            $('proj_select_step_2').className = "note_text";
            $('proj_select_step_3').className = "note_text_disabled";

            $('proj_select_step_div_1').hide();
            $('proj_select_step_div_2').show();
            $('proj_select_step_div_3').hide();

            $('proj_select_prev_link').show();
            $('proj_select_next_link').show();
            $('proj_select_add_link').hide();
            break;

        case 3:
            $('proj_select_step_1').className = "note_text_disabled";
            $('proj_select_step_2').className = "note_text_disabled";
            $('proj_select_step_3').className = "note_text";

            $('proj_select_step_div_1').hide();
            $('proj_select_step_div_2').hide();
            $('proj_select_step_div_3').show();

            $('proj_select_prev_link').show();
            $('proj_select_next_link').hide();
            $('proj_select_add_link').show();
            break;
    }
}

function projectInstitutionStepAction(step_increment) {
    // check if not moving before Step 1 and past Step 3
    new_step_idx = parseInt($('proj_select_step_index').value) + step_increment

    if(new_step_idx >= 1 && new_step_idx <= 3) {
        $('proj_select_step_index').value = new_step_idx

        switch(new_step_idx) {
            case 1:
                updateProjectInstitutionVisibility(new_step_idx);
                break;

            case 2:
                if(step_increment > 0) {
                    selected_option = $('proj_project_select').options[$('proj_project_select').selectedIndex];
                    loadInstitutionsForProject(selected_option.value, selected_option.text);
                }
                else {
                    updateProjectInstitutionVisibility(new_step_idx);
                }
                break;

            case 3:
                replaceReviewWorkGroupURL();
                updateProjectInstitutionVisibility(new_step_idx);
                break;
        }
    }

}

function loadInstitutionsForProject(project_id, project_name) {
    $('institutions_loading_spinner').style.display = "inline";

    // choose a URL to get values from - if project wasn't selected, return all institutions
    request_url = (project_id == "") ? GET_ALL_INSTITUTIONS_LINK : GET_INSTITUTIONS_LINK;

    request = new Ajax.Request(request_url,
    {
        method: 'get',
        parameters: {
            id: project_id
        },
        onSuccess: function(transport){
            $('institutions_loading_spinner').style.display = "none";

            // "true" parameter to evalJSON() activates sanitization of input
            var data = transport.responseText.evalJSON(true);

            if (data.status == 200) {
                receivedProjectInstitutions = data;

                // clear any previous contents
                $('proj_institution_select').options.length = 0;
                next_index_to_use = 0;

                // if a particular project has been selected, add an option "all project"
                if(project_id != "") {
                    $('proj_institution_select').options[0] = new Option("All "+ project_name +" Project", "");
                    next_index_to_use++;
                    prefix_txt = project_name + " @ ";
                }
                else {
                    prefix_txt = '';
                }

                // fill with new contents
                for(var i = 0; i < data.institution_list.length; i++) {
                    $('proj_institution_select').options[next_index_to_use] = new Option(prefix_txt + data.institution_list[i][0], data.institution_list[i][1]);
                    next_index_to_use++;
                }

                // show relevant bits of the page
                updateProjectInstitutionVisibility(2);
            }
            else {
                error_status = data.status;
                error_message = data.error
                alert('An error occurred...\n\nHTTP Status: ' + error_status + '\n' + error_message);
            }
        },
        onFailure: function(transport){
            $('institutions_loading_spinner').style.display = "none";
            alert('Something went wrong, please try again...');
        }
    });

}

function determineProjectInstitutionSelection() {
    project_id = $('proj_project_select').options[$('proj_project_select').selectedIndex].value;
    institution_id = $('proj_institution_select').options[$('proj_institution_select').selectedIndex].value;
    access_type = parseInt($('proj_access_type_select').options[$('proj_access_type_select').selectedIndex].value);

    if(project_id == "") {
        add_type = "Institution";
        add_id = parseInt(institution_id);

        for(var i = 0; i < receivedProjectInstitutions.institution_list.length; i++)
            if(receivedProjectInstitutions.institution_list[i][1] == institution_id)
                add_name = receivedProjectInstitutions.institution_list[i][0];
    }
    else if(institution_id == "") {
        add_type = "Project";
        add_id = parseInt(project_id);
        add_name = $('proj_project_select').options[$('proj_project_select').selectedIndex].text;
    }
    else {
        institution_id = parseInt(institution_id);

        add_type = "WorkGroup";
        add_name = $('proj_institution_select').options[$('proj_institution_select').selectedIndex].text;

        for(var i = 0; i < receivedProjectInstitutions.institution_list.length; i++)
            if(receivedProjectInstitutions.institution_list[i][1] == institution_id)
                add_id = receivedProjectInstitutions.institution_list[i][2];
    }

    var result = new Array();
    result['type'] = add_type;
    result['name'] = add_name;
    result['id'] = add_id;
    result['access_type'] = access_type;

    return(result);
}

function addProjectInstitution() {
    var selection = determineProjectInstitutionSelection();
    add_type = selection['type'];
    add_name = selection['name'];
    add_id = selection['id'];
    access_type = selection['access_type'];

    // add to list and update..
    addContributor(add_type, add_name, add_id, access_type);
    // ..and reset this section to run from new
    $('proj_select_step_index').value = 1;
    $('proj_project_select').selectedIndex = 0;
    $('proj_access_type_select').selectedIndex = 0;
    updateProjectInstitutionVisibility(1);
}

function addProjectInstitutionReviewed() {
    // add the originally selected project / institution / workgroup
    originally_selected_project_institution = determineProjectInstitutionSelection();
    add_type = originally_selected_project_institution['type'];
    add_name = originally_selected_project_institution['name'];
    add_id = originally_selected_project_institution['id'];
    access_type = originally_selected_project_institution['access_type'];
    addContributor(add_type, add_name, add_id, access_type);

    // add individual access permissions if any of the selections for members
    // differ from originally selected access type
    search_str = 'work_group_access_rights_select_person_';

    all_selects = $$('select');
    for(var i = 0; i < all_selects.length; i++) {
        if(all_selects[i].id.substr(0, search_str.length) == search_str) {
            cur_access_type = parseInt(all_selects[i].value);

            // only add person, corresponding to current 'select' element if access type differs from original selection
            if(cur_access_type != access_type) {
                cur_id = parseInt(all_selects[i].id.substr(search_str.length));
                addContributor('Person', $('work_group_member_person_'+cur_id).innerHTML, cur_id, cur_access_type);
            }
        }
    }

    // reset this section to run from new
    $('proj_select_step_index').value = 1;
    $('proj_project_select').selectedIndex = 0;
    $('proj_access_type_select').selectedIndex = 0;
    updateProjectInstitutionVisibility(1);

    RedBox.close();
}

// ***************  Favourite Groups  *****************

function updateGroupMembers() {
    // iterate through all currently selected members and display them

    var group_members = '';

    for(id in currentFavouriteGroupSettings) {
        //alert(id + "\n" + currentFavouriteGroupSettings[id]);
        member_name = autocompleters[f_group_autocompleter_id].getValueFromJsonArray(autocompleters[f_group_autocompleter_id].itemIDsToJsonArrayIDs([id])[0], 'name');
        group_members += member_name
        + ' ('+ accessTypeTranslation(currentFavouriteGroupSettings[id]) +')'
        + '   '
        + '[edit]'
        + '  '
        + '[remove]
';
    }

    // remove the last line break
    if(group_members.length > 0) {
        group_members = group_members.slice(0,-5);
    }

    // update the page
    if(group_members.length == 0) {
        $('group_member_list').innerHTML = 'No one';
    }
    else {
        $('group_member_list').innerHTML = group_members;
    }
}

function addGroupMembers() {
    var selIDs = autocompleters[f_group_autocompleter_id].getRecognizedSelectedIDs();

    if(selIDs == "") {
        // no people to add
        alert("Please choose people to add to your favourite group!");
        return(false);
    }
    else {
        // some people to add - known that don't have duplicates
        // within the new list, but some entries in the new list
        // may replicate those in the main member list: check this
        var duplicates_found = false;

        for(var i = 0; i < selIDs.length; i++) {
            id = parseInt(selIDs[i]);
            if(currentFavouriteGroupSettings[id] == null)
                currentFavouriteGroupSettings[id] = parseInt($('group_access_type_select').options[$('group_access_type_select').selectedIndex].value);
            else
                duplicates_found = true;
        }

        if(duplicates_found) {
            alert("Some of the people added successfully, but some duplicates were encountered - these were skipped.");
        }

        // reset selection, remove all tokens from autocomplete text box and update the current selection list
        $('group_access_type_select').selectedIndex = 0;
        autocompleters[f_group_autocompleter_id].deleteAllTokens();
        updateGroupMembers();

        return(!duplicates_found);
    }
}

function deleteGroupMember(person_id) {
    delete currentFavouriteGroupSettings[person_id];
    updateGroupMembers();
}

function editGroupMember(person_id, access_type) {
    if(autocompleters[f_group_autocompleter_id].getRecognizedSelectedIDs() != "")
        if(! confirm('This will replace any people in the "Add members" section that were not yet added as favourite group members.\n\nAre you sure you want to proceed?'))
            return(false);

    // no "tokens" are present in the 'autocomplete display' field OR the user has agreed to reset their selection --
    // remove the clicked person from the list..
    delete currentFavouriteGroupSettings[person_id];
    updateGroupMembers();

    // ..remove any 'tokens' from 'autocomplete display' field and add the current person there (along with their selected access type)
    autocompleters[f_group_autocompleter_id].deleteAllTokens();
    autocompleters[f_group_autocompleter_id].prepopulateAutocompleterDisplayWithTokens([person_id]);
    for(var i = 0; i < $('group_access_type_select').options.length; i++)
        if(parseInt($('group_access_type_select').options[i].value) == access_type) {
            $('group_access_type_select').selectedIndex = i;
            break;
        }
}

function postFavouriteGroupData(new_group) {
    // check if the name is present
    if($('group_name').value.length == 0) {
        alert('Please specify the name for this group');
        $('group_name').focus();
        return(false);
    }

    // check if no tokens remain in the autocomplete text box
    if(autocompleters[f_group_autocompleter_id].getRecognizedSelectedIDs() != "") {
        alert('You didn\'t press "Add" link to add members from the autocomplete field');
        $('f_group_autocomplete_input').focus();
        return(false);
    }

    // check if some members are added
    var count = 0;
    for(id in currentFavouriteGroupSettings)
        count++;

    if(count == 0 && !confirm('There are no members in this group now.\n\nDo you want to proceed?')) {
        $('f_group_autocomplete_input').focus();
        return(false);
    }

    $('fav_group_loading_spinner').style.display = "inline";

    request_link = (new_group ? CREATE_FAVOURITE_GROUP_LINK : UPDATE_FAVOURITE_GROUP_LINK)
    request = new Ajax.Request(request_link,
    {
        method: 'post',
        parameters: {
            id: $('f_group_id').value,  // empty ID will be submitted on "create" action, but it doesn't make a difference
            favourite_group_name: $('group_name').value,
            favourite_group_members: Object.toJSON(currentFavouriteGroupSettings)
            },
        onSuccess: function(transport){
            $('fav_group_loading_spinner').style.display = "none";

            // "true" parameter to evalJSON() activates sanitization of input
            var data = transport.responseText.evalJSON(true);

            if (data.status == 200) {
                // reload list of favourite groups
                reloadFavouriteGroupSelect(data.favourite_groups);

                // if this is creation of a new group and need to share with it, add it to
                // "shared_with" list
                if(new_group && $('group_sharing_required').checked) {
                    addContributor(data.group_class_name, data.group_name, data.group_id, DETERMINED_BY_GROUP);
                    RedBox.close();
                    return(true);
                }
                else {
                    // if the group was in the "shared_with" list do the following:
                    // - remove / re-add current group + refresh the "shared_with" list in case any of the favourite group names have changed;
                    // - then close the modal popup window
                    if(! checkContributorNotInList(data.group_class_name, data.group_id)) {
                        deleteContributor(data.group_class_name, data.group_id);
                        addContributor(data.group_class_name, data.group_name, data.group_id, DETERMINED_BY_GROUP);
                    }
                    RedBox.close();
                    return(true);
                }
            }
            else if (data.status == 403) {
                // this value is returned by us when duplicate group name was found
                alert(data.error_message);
                $('group_name').focus();
                return(false);
            }
            else {
                error_status = data.status;
                error_message = data.error_message;
                alert('An error occurred...\n\nHTTP Status: ' + error_status + '\n' + error_message);
                return(false);
            }
        },
        onFailure: function(transport){
            $('fav_group_loading_spinner').style.display = "none";
            alert('Something went wrong, please try again...');
            return(false);
        }
    });

}

function deleteSelectedFavouriteGroup() {
    var warning_msg = 'Are you sure you want to delete this group?\n\nPlease note that it will be deleted permanently and'
    + ' any assets shared with that group will no longer be accessible to its former members';

    if( ! confirm(warning_msg) ) {
        return(false);
    }

    $('f_group_deleting_spinner').style.display = "inline";

    delete_link = $('delete_f_group_li').firstDescendant().href;
    request = new Ajax.Request(delete_link,
    {
        method: 'delete',
        parameters: {},
        onSuccess: function(transport){
            $('f_group_deleting_spinner').style.display = "none";

            // "true" parameter to evalJSON() activates sanitization of input
            var data = transport.responseText.evalJSON(true);

            if (data.status == 200) {
                // reload list of favourite groups
                reloadFavouriteGroupSelect(data.favourite_groups);

                // check if deleted group was in "shared_with" list - if so, remove it & refresh list
                if(! checkContributorNotInList(data.group_class_name, data.group_id)) {
                    deleteContributor(data.group_class_name, data.group_id);
                }

                alert('Favourite group deleted successfully');
                return(true);
            }
            else {
                error_status = data.status;
                error_message = data.error_message;
                alert('An error occurred...\n\nHTTP Status: ' + error_status + '\n' + error_message);
                return(false);
            }
        },
        onFailure: function(transport){
            $('f_group_deleting_spinner').style.display = "none";
            alert('Something went wrong, please try again...');
            return(false);
        }
    });

}

function reloadFavouriteGroupSelect(favourite_group_data) {
    $('favourite_group_select').options.length = 0;
    for(var i = 0; i < favourite_group_data.length; i++) {
        $('favourite_group_select').options[i] = new Option(favourite_group_data[i][0], favourite_group_data[i][1]);
    }

    // make sure that select box stays disabled if there are no entries after reload
    if(favourite_group_data.length > 0) {
        $('favourite_group_select').disabled = false;
        $('add_f_group_link').disabled = false;
        $('edit_f_group_li').style.display = "block";
        $('delete_f_group_li').style.display = "block";
    }
    else {
        $('favourite_group_select').options[0] = new Option("You don't have any favourite groups", "");
        $('favourite_group_select').disabled = true;
        $('add_f_group_link').disabled = true;
        $('edit_f_group_li').style.display = "none";
        $('delete_f_group_li').style.display = "none";
    }

    // when that is done, need to make sure that URLs for the currently selected group are up to date
    replaceFavouriteGroupRedboxActionURL();

    return(true);
}

// links to RedBox popups are very complex and need to be generated by Ruby code
// at the server side; however, for 'edit' / 'delete' links ID of the favourite
// group is required, hence a JavaScript helper is needed to add this ID to the URL
// at runtime at client side
function replaceFavouriteGroupRedboxActionURL() {

    // if the favourite group select box is disabled - there are no groups to select from
    if($('favourite_group_select').disabled) {
        return(false);
    }

    // **************** EDIT LINK ******************

    var search_str = 'parameters:';
    var search_str_id = '\'id\': \'';
    var search_str_auth_token = '\'authenticity_token=\' + encodeURIComponent(\'';

    var new_id = $('favourite_group_select').options[$('favourite_group_select').selectedIndex].value

    var parameters = {};
    parameters['id'] = new_id;

    var main_ancestor_element = $('edit_f_group_li');
    var main_element_html = main_ancestor_element.innerHTML;

    var first_str_index_to_replace = main_element_html.indexOf(search_str) + search_str.length;

    if(main_element_html.substr(first_str_index_to_replace, search_str_auth_token.length) == search_str_auth_token) {
        var authenticity_token_start_index = main_element_html.indexOf(search_str_auth_token, first_str_index_to_replace) + search_str_auth_token.length;
        parameters['authenticity_token'] = main_element_html.substr(authenticity_token_start_index, 40); // length of authenticity token is always 40 characters

        var last_str_index_to_replace = main_element_html.indexOf(')', authenticity_token_start_index) + 1; // 1 is the length of the ')' bracket

        var replace_string = main_element_html.substring(0,first_str_index_to_replace) +
        Object.toJSON(parameters).replace(/\"/g, '\'') + // replace all double quotes with single ones in the JSON representation of "parameters" hash
        main_element_html.substr(last_str_index_to_replace);
    }
    else {
        first_str_index_to_replace = main_element_html.indexOf(search_str_id) + search_str_id.length;
        var last_str_index_to_replace = main_element_html.indexOf('\'', first_str_index_to_replace); // 1 is the length of the quote

        var replace_string = main_element_html.substring(0,first_str_index_to_replace) +
        new_id +
        main_element_html.substr(last_str_index_to_replace);
    }

    // set the replaced HTML
    main_ancestor_element.innerHTML = replace_string;

    // **************** DELETE LINK ******************
    // read the old url and extract the base part
    var old_delete_url = $('delete_f_group_li').firstDescendant().href;
    var last_idx_to_use = old_delete_url.lastIndexOf('/') + 1; // -1 to compensate for the removed slash
    var delete_url_base = old_delete_url.substring(0, last_idx_to_use);

    // set the new url
    $('delete_f_group_li').firstDescendant().href = delete_url_base + parseInt($('favourite_group_select').options[$('favourite_group_select').selectedIndex].value);

    return(true);
}

// links to RedBox popups are very complex and need to be generated by Ruby code
// at the server side; however, for 'review workgroup member permissions' link ID and type of
// work group is required, hence a JavaScript helper is needed to add this ID / type to the URL
// at runtime at client side (when 'next' / 'prev' steps links are activated)
function replaceReviewWorkGroupURL() {
    // get current project / institution / workgroup selection
    proj_inst_selection = determineProjectInstitutionSelection();

    // remove "__type__/__id__/__access_type__" from the end of the search string
    var last_idx_to_use = REVIEW_WORK_GROUP_LINK.lastIndexOf('/');
    var search_string = REVIEW_WORK_GROUP_LINK.substring(0, last_idx_to_use);

    last_idx_to_use = search_string.lastIndexOf('/');
    search_string = search_string.substring(0, last_idx_to_use);

    last_idx_to_use = search_string.lastIndexOf('/');
    search_string = search_string.substring(0, last_idx_to_use);

    var parent_element = $('work_group_parent_span');
    var parent_element_html = parent_element.innerHTML;

    last_idx_to_use = parent_element_html.indexOf(search_string) + search_string.length;
    var last_idx_to_replace = parent_element_html.indexOf('\'', last_idx_to_use);

    var replace_string = parent_element_html.substring(0,last_idx_to_use) +
    '/' + proj_inst_selection['type'] + '/' + proj_inst_selection['id'] + '/' + proj_inst_selection['access_type'] +
    parent_element_html.substr(last_idx_to_replace);

    parent_element.innerHTML = replace_string;
}

// ***************  Individual People  *****************

function addIndividualPeople() {
    var selIDs = autocompleters[individual_people_autocompleter_id].getRecognizedSelectedIDs();

    if(selIDs == "") {
        // no people to add
        alert("Please choose people to share with!");
        return(false);
    }
    else {
        // some people to add - known that don't have duplicates
        // within the new list, but some entries in the new list
        // may replicate those in the main member list: check this
        var duplicates_found = false;

        for(var i = 0; i < selIDs.length; i++) {
            id = parseInt(selIDs[i]);
            access_type = parseInt($('individual_people_access_type_select').options[$('individual_people_access_type_select').selectedIndex].value);
            person_name = autocompleters[individual_people_autocompleter_id].getValueFromJsonArray(autocompleters[individual_people_autocompleter_id].itemIDsToJsonArrayIDs([id])[0], 'name');
            addContributor('Person', person_name, id, access_type);
        }

        // reset selection, remove all tokens from autocomplete text box and update the current selection list
        $('individual_people_access_type_select').selectedIndex = 0;
        autocompleters[individual_people_autocompleter_id].deleteAllTokens();

        return(true);
    }
}

// ***************  Whitelist / Blacklist  *****************

// will create new whitelist/blacklist (based on 'grp_name' parameter) and
// automatically cause the 'edit' action on that group afterwards
function createWhitelistBlacklist(grp_name) {
    alert('This is the first time you have requested to edit this group.\n' +
        'It doesn\'t exist yet and will be created first. After that you\n' +
        'will automatically see another screen that will allow you to add\n' +
        'people to this group.');

    $(grp_name + '_creation_spinner').style.display = "inline";

    request = new Ajax.Request(CREATE_FAVOURITE_GROUP_LINK,
    {
        method: 'post',
        parameters: {
            favourite_group_name: grp_name,
            favourite_group_members: "{}"
        },
        onSuccess: function(transport){
            $(grp_name + '_creation_spinner').style.display = "none";

            // "true" parameter to evalJSON() activates sanitization of input
            var data = transport.responseText.evalJSON(true);

            if (data.status == 200) {
                // whitelist/blacklist was created successfully..
                // ..replace 'create' link with 'update' one
                $(grp_name + '_create_span').style.display = "none";
                $(grp_name + '_edit_span').style.display = "inline";

                // ..set the ID of the new group to allow calling 'edit' action on it
                $(grp_name + '_group_id').value = data.group_id;

                // ..now need to show the RedBox popup to allow adding members to the new group
                editWhitelistBlacklist(grp_name);
                return(true);
            }
            else if (data.status == 403) {
                // this value is returned by us when duplicate group name was found
                alert(data.error_message);
                return(false);
            }
            else {
                error_status = data.status;
                error_message = data.error_message;
                alert('An error occurred...\n\nHTTP Status: ' + error_status + '\n' + error_message);
                return(false);
            }
        },
        onFailure: function(transport){
            $(grp_name + '_creation_spinner').style.display = "none";
            alert('Something went wrong, please try again...');
            return(false);
        }
    });

}

function editWhitelistBlacklist(grp_name) {
    replaceWhitelistBlacklistRedboxURL(grp_name);
    $(grp_name + '_edit_redbox').onclick();
    return(true);
}

// links to RedBox popups are very complex and need to be generated by Ruby code
// at the server side; however, for 'edit' / 'delete' links ID of the favourite
// group is required, hence a JavaScript helper is needed to add this ID to the URL
// at runtime at client side
function replaceWhitelistBlacklistRedboxURL(grp_name) {

    var search_str = 'parameters:';
    var search_str_id = '\'id\': \'';
    var search_str_auth_token = '\'authenticity_token=\' + encodeURIComponent(\'';

    var new_id = parseInt($(grp_name + '_group_id').value);

    var parameters = {};
    parameters['id'] = new_id;

    var main_ancestor_element = $(grp_name + '_redbox_link_div');
    var main_element_html = main_ancestor_element.innerHTML;

    var first_str_index_to_replace = main_element_html.indexOf(search_str) + search_str.length;

    if(main_element_html.substr(first_str_index_to_replace, search_str_auth_token.length) == search_str_auth_token) {
        var authenticity_token_start_index = main_element_html.indexOf(search_str_auth_token, first_str_index_to_replace) + search_str_auth_token.length;
        parameters['authenticity_token'] = main_element_html.substr(authenticity_token_start_index, 40); // length of authenticity token is always 40 characters

        var last_str_index_to_replace = main_element_html.indexOf(')', authenticity_token_start_index) + 1; // 1 is the length of the ')' bracket

        var replace_string = main_element_html.substring(0,first_str_index_to_replace) +
        Object.toJSON(parameters).replace(/\"/g, '\'') + // replace all double quotes with single ones in the JSON representation of "parameters" hash
        main_element_html.substr(last_str_index_to_replace);

        // set the replaced HTML
        main_ancestor_element.innerHTML = replace_string;
    }
    else {
    // do nothing, because ID of the whitelist/blacklist won't change and it was set once already
    }

    return(true);
}

// ***************  Resource Upload Validation  *****************

function validateSopFields(is_new_file) {
    // only make this test if that's a new SOP
    if(is_new_file) {
        if($('sop_data').value.length == 0) {
            alert("Please specify the name of the file to upload!");
            $('sop_data').focus();
            return(false);
        }
    }

    // other tests are applicable to both editing and creating new SOP
    if($('sop_title').value.length == 0) {
        alert("Please specify the title for the SOP!");
        $('sop_title').focus();
        return(false);
    }

    // check if no tokens remain in the attributions autocompleter
    // (only do this if the fold with attributions is expanded)
    if($('attributions_fold_content').style.display == "block" &&
        autocompleters[attributions_autocompleter_id].getRecognizedSelectedIDs() != "")
        {
        alert('You didn\'t press "Add" link to add items in the attributions autocomplete field.');
        $('attributions_autocomplete_input').focus();
        return(false);
    }

    // filename and title set - can submit
    $('sop_submit_btn').disabled = true;
    $('sop_submit_btn').value = (is_new_file ? "Uploading and Saving..." : "Updating...");
    $('sop_submit_btn').form.submit();
    return(true);
}

// ***************  Dataset Upload Validation  *****************

function validateDatasetFields() {
	if (!(/^[^\\\/\:\*\?\"\<\>\|\.]+(\.[^\\\/\:\*\?\"\<\>\|\.]+)*$/.test($('dataset_title').value))){
        alert("Title is not valid, please use letters, numbers or underscore only");
        $('dataset_title').focus();
        return(false);
    }
	$('dataset_submit_btn').disabled = true;
        $('dataset_submit_btn').value = ("Uploading and Saving...");
        $('spinner').show();
	$('dataset_submit_btn').form.submit();
	return(true);
}

// ***************  Script Upload Validation  *****************

function validateScriptFields(is_new_file) {
    // only make this test if that's a new Script
    if(is_new_file) {
        if (!(/^[^\\\/\:\*\?\"\<\>\|\.]+(\.[^\\\/\:\*\?\"\<\>\|\.]+)*$/.test($('script_title').value))){
            alert("Title is not valid, please use letters, numbers or underscore only");
            $('script_title').focus();
            return(false);
        }
        if($('script_data').value.length == 0) {
            alert("Please specify the name of the file to upload!");
            $('script_data').focus();
            return(false);
        }
    }

    // other tests are applicable to both editing and creating new SOP
    if($('script_title').value.length == 0) {
        alert("Please specify the title for the Script!");
        $('script_title').focus();
        return(false);
    }

    $('script_submit_btn').disabled = true;
    $('script_submit_btn').value = (is_new_file ? "Uploading and Saving..." : "Updating...");
    $('script_submit_btn').form.submit();
    return(true);
}

function validateGroupFields() {

    if($('group_name').value.length == 0) {
        alert("Please specify the title for the group!");
        $('group_name').focus();
        return(false);
    }

    $('group_submit_btn').disabled = true;
    $('group_submit_btn').value = ("Saving...");
    $('group_submit_btn').form.submit();
	RedBox.close();
    return(true);
}

function validateArchiveFields(is_new_file) {
    // only make this test if that's a new Script
    //  if(is_new_file) {
    //	  if($('_data').value.length == 0) {
    //	    alert("Please specify the name of the file to upload!");
    //	    $('script_data').focus();
    //	    return(false);
    //	  }
    //	}
    if (!(/^[^\\\/\:\*\?\"\<\>\|\.]+(\.[^\\\/\:\*\?\"\<\>\|\.]+)*$/.test($('archive_title').value))){
        alert("Title is not valid, please use letters, numbers or underscore only");
        $('archive_title').focus();
        return(false);
    }
    // other tests are applicable to both editing and creating new SOP
    if($('archive_title').value.length == 0) {
        alert("Please specify the title for the CSV Archive!");
        $('archive_title').focus();
        return(false);
    }

    $('archive_submit_btn').disabled = true;
    $('archive_submit_btn').value = (is_new_file ? "Uploading and Saving..." : "Updating...");
    $('archive_submit_btn').form.submit();
    return(true);
}

function validateSurveySearchFields() {
    // only make this test if that's a new Model

    // other tests are applicable to both editing and creating new Model
    //  if (typeof($('entry_ids'))=="undefined") {
//    var checks = $('entry_ids');
//    var checked = false;
//    for ( i=0; i < checks.length; i++ ) {
//        if (checks[i].checked) {
//            checked = true;
//        }
//    }
//    if(checked != true) {
//        alert("Please select at least one survey to search!");
//        $('search_query').focus();
//        return(false);
//    }

//    if($('entry_ids_').checked == false) {
//        alert("Please select at least one survey to search!");
//        $('search_query').focus();
//        return(false);
//    }

    if($('survey_search_query').value.length == 0) {
        alert("Please enter a term to search for!");
        $('survey_search_query').focus();
        return(false);
    }
    //  alert("What the deuce!");
    //    $('search_query').focus();
    //    return(false);

    // search term ok and at least one survey selected - can submit

    $('search_button').form.submit();
    return(true);
}

function validateDataFileFields(is_new_file) {
    // only make this test if that's a new Model
    if(is_new_file) {
        if($('file_metadata').value.length == 0) {
            alert("Please specify the name of the file to upload!");
            $('file_metadata').focus();
            return(false);
        }
    }

    // filename and title set - can submit
    $('dataset_submit_btn').disabled = true;
    $('dataset_submit_btn').value = "Uploading...";
    $('spinner').show();
    $('dataset_submit_btn').form.submit();
    return(true);
}

function validateSurveyFields(is_new_file) {
    // only make this test if that's a new Model
    //if(is_new_file) {
      //  if($('survey_data').value.length == 0) {
        //    alert("Please specify the name of the file to upload!");
          //  $('survey_data').focus();
            //return(false);
        //}
    //}

    // other tests are applicable to both editing and creating new Model
    if($('survey_title').value.length == 0) {
        alert("Please specify the title for the Survey!");
        $('survey_title').focus();
        return(false);
    }

    // filename and title set - can submit
    $('survey_submit_btn').disabled = true;
    $('survey_submit_btn').value = "Uploading details...";
    $('spinner').show();
    $('survey_submit_btn').form.submit();
    return(true);
}

// ***************  Attributions  *****************

function updateAttributionSettings() {
    // iterate through all attributions and build the "shared with" list;
    // in the meanwhile also assemble a minimized version of the array that
    // could be posted with the form (this won't have item titles in it)

    var attributed_to = '';
    var attributed_to_arr = new Array();

    for(var i = 0; i < attribution_settings.length; i++) {
        attr_type = attribution_settings[i][0];
        attr_title = attribution_settings[i][1];
        attr_id = attribution_settings[i][2];
        attr_contributor = autocompleters[attributions_autocompleter_id].getValueFromJsonArray(autocompleters[attributions_autocompleter_id].itemIDsToJsonArrayIDs([attr_id])[0], 'contributor');

        attributed_to += '' + attr_type + ': ' + attr_title
        + "  (" + attr_contributor + ")"
        + '   '
        + '[remove]
';

        attributed_to_arr.push([attr_type, attr_id]);
    }

    // remove the last line break
    if(attributed_to.length > 0) {
        attributed_to = attributed_to.slice(0,-5);
    }

    // update the page
    if(attributed_to.length == 0) {
        $('attributed_to_list').innerHTML = 'No attributions';
    }
    else {
        $('attributed_to_list').innerHTML = attributed_to;
    }

    // UPDATE THE FIELDS WHICH WILL BE SUBMITTED WITH THE PAGE
    $('attributions').value = Object.toJSON(attributed_to_arr);
}

function checkAttributionNotInList(attributable_type, attributable_id) {
    rtn = true;

    for(var i = 0; i < attribution_settings.length; i++)
        if(attribution_settings[i][0] == attributable_type && attribution_settings[i][2] == attributable_id) {
            rtn = false;
            break;
        }

    return(rtn);
}

// adds a contributor to "attributed to" list and updates the displayed list
function addAttribution(attributable_type, attributable_title, attributable_id) {
    if(checkAttributionNotInList(attributable_type, attributable_id)) {
        // add current values into the associative array of permissions:
        // first index is the category of contributor type of the permission, the second - consecutive
        // number of occurrences of permissions for such type of contributor
        attribution_settings.push([attributable_type, attributable_title, attributable_id]);

        // update visible page
        updateAttributionSettings();
    }
    else {
        alert('The following entity was not added (already in the list of attributions):\n\n' +
            attributable_type + ': ' + attributable_title);
    }
}

// removes attribution from "attributed to" list and updates the displayed list
function deleteAttribution(attributable_type, attributable_id) {
    // remove the actual record for the attribution
    for(var i = 0; i < attribution_settings.length; i++)
        if(attribution_settings[i][0] == attributable_type && attribution_settings[i][2] == attributable_id) {
            attribution_settings.splice(i, 1);
            break;
        }

    // update the page
    updateAttributionSettings();
}

function addAttributions() {
    var selIDs = autocompleters[attributions_autocompleter_id].getRecognizedSelectedIDs();

    if(selIDs == "") {
        // no attributions to add
        alert("Please choose some assets to add attributions to!");
        return(false);
    }
    else {
        // some attributions to add - known that don't have duplicates
        // within the new list, but some entries in the new list
        // may replicate those in the main attribution list: this
        // will be checked by addAttribution()

        for(var i = 0; i < selIDs.length; i++) {
            id = parseInt(selIDs[i]);
            title = autocompleters[attributions_autocompleter_id].getValueFromJsonArray(autocompleters[attributions_autocompleter_id].itemIDsToJsonArrayIDs([id])[0], 'title');
            type = autocompleters[attributions_autocompleter_id].getValueFromJsonArray(autocompleters[attributions_autocompleter_id].itemIDsToJsonArrayIDs([id])[0], 'type');
            addAttribution(type, title, id);
        }

        // remove all tokens from autocomplete text box
        autocompleters[attributions_autocompleter_id].deleteAllTokens();

        return(true);
    }
}

// ********************************************************

redpajama_set_name: RedPajamaGithub


text:
HESTIA (VESTA)
Posted on October 19, 2013 by Anna Solun | 3 comments
A Hellenic goddess of house, home, hearth and family as well as order and organisation. Hestia is Cronus and Rhea's eldest daughter and a sister to Demeter, Hera, Zeus, Poseidon and Hades. She has never got married nor had children herself. There was Hestia's sacred hearth in every house, village or town of the ancient Hellenic world and the first offering was always dedicated to this goddess. Her name means hearth, fireside. She was venerated in Rome as Vesta and considered to be one of the top deities of a Roman pantheon.
ABOUT GODDESS
Hestia was highly respected for her immaculate nature. She disapproved bloodshed, did not participate in wars and intrigues, did not gossip nor was spiteful. She valued peace most and apparently was disgusted by the behaviour of Olympic deities because she gave her place in the council of gods to Dyonisos as soon as he came to the mount (there could be no more than twelve deities in the Olympian council). Despite Poseidon and Apollo's wooing she decided to stay a virgin.
Hestia was particularly respected as a goddess literary closest to people. She resembles an Egyptian goddess Maat in the way that she does not appear in a lot of myths and does not have many temples, she is, however, a base of social order in Hellas and her cult is manifested through rituals. A hearth was situated in the centre of a Hellenic house, giving the inhabitants warmth and shelter when darkness fell, being a place where both sacrifices were offered to gods and food was prepared for people. When a baby was born, it was carried around a hearth and the family was asking the goddess for blessings, the child was then put on a cooled down ash of a heart to introduce it to heaven and earth. A marriage rite in ancient Hellas focused on a hearth too; a bride's mother was lightning a torch up in the hearth of her house and was carrying it in a procession to newly-weds' house where a new fire was lit up, from that moment marriage was considered to be concluded. Prayers have always begun with invoking Hestia, women have asked her to protect their children and grandchildren; she was also called upon before setting off a journey to help travellers come back home safely. It was a form of an early divination to observe a smoke from burning altars to see whether gods accepted the offering or not: if the smoke was rising straight to heavens, it was an omen of gods' grace but if the smoke was circling down among altars, it signified that deities were not supportive.
Her sacred flame was present in every Hellenic settlement, people were watching over it carefully because if fire extinguished, it would signify gods' disgrace (on a more practical level it was not easy to rekindle it in the times when matches have not been invented yet). The flame was only extinguished to be ritually renewed during the purification ceremonies. When ships were leaving Hellas to start a new colony, there was always a flame from the city they were setting off. This flame burning in a new place was a symbol of unity between the colony and its hometown. Outlaws and those escaping a vengeance or being chased, found a refugee by her altar, no one could hurt them from that moment on because they were protected by the goddess.
Hestia's cult as Vesta has developed in a special way in Rome where her temple was the only sacral building of a round shape and having a roof to protect the sacred flame against the rain. Similarly to the inhabitants of Hellas, Romans also believed that fire represented their state and it was essential to keep it burning, however according to Georges Dumezil* they have associated Vesta strictly with earth and its burning core hidden under a crust which was sometimes breaking through e.g during the eruption of a volcano. They also noticed the connection of fire with the nature's cycles, cultivation and life, especially with the beginning of life**. Also similarly to Hellas, Vesta's altar was a hearth in atrium; she was likewise associated mainly with women who generally functioned in a family space, not a public one. Interestingly, when it comes to order of Roman prayers Vesta was called upon as the last deity, not the first one as in Hellas.
Vesta's sacred fire was watched over by six (seven in the end-stage era of Rome) vestal virgins i.e. Vesta's priestesses. The service at the temple lasted thirty years; Rome's high priest (pontifex maximus) was choosing girls of preschool age originating from the patrician families who were to move to a three storey building of Atrium Vestae near forum.
Here is the reconstruction.
There were twelve younger girls in the house apart from main vestal virgins, they were adepts who were preparing themselves to the service in the goddess' temple and vowed chastity for thirty years (it liberated them from the custody of their fathers and other men, a vestal virgin was the daughter of a state). The thirty years of service was divided into three decades: for the first ten years they were learning, for the next ten years they watched over the fire and for the last ten years they were teaching young girls. There were not many requirements for a girl to become a vestal virgin, she only had to be healthy and sane, both her parents had to be alive and Roman citizens (at first only patricians, later also plebeians were included). In case of one of vestal virgins' sudden death, candidates to take her place were presented, the only requirement was woman's good opinion; she didn't have to be neither a child nor a virgin, usually young widows or even divorcees were appointed (although divorcees were considered to bring bad luck). Vestal virgins were easily recognised by their apparel, apart from a regular tunic and stola, they were wearing a white woollen fillet called infula, a white woollen veil worn during rituals and sacrifices called suffibulum, white and red woollen ribbons symbolising Vesta's fire and the vow of chastity and a long shawl draped over a left shoulder called palla.
Vestal virgins' duties included keeping the fire from extinguishing (allowing that happen was punished by flogging), bringing water from a sacred spring, taking care of sacred objects such as palladium***, preparing ritual food and mola salsa, a mixture of salt, flour and wheat, which was later used to sprinkle animal victims. Vestal virgins were so respected that they were often put in charge of executing testaments (this is what Julius Cesar and Mark Anthony did among others). Any inhabitant of Rome could receive fire to take it to their house and in the times of Empire, Vesta's hearth was considered to be the emperor's household fire.
Breaking the vow of chastity was punished by being buried alive in a tomb on Campus Sceleratus (Evil Field) with a supply of food and water for a couple of days only. This way of punishing resulted from the interdiction of spilling blood and burying within the city limits. During one thousand years of Vesta's fire cult only several of such cases were noted. The one from 114 bC is particularly interesting when as many as three Vestal virgins Aemilia, Marcia and Licinia were condemned death for 'multiple adultery'; most probably their processes were fabricated and they became scapegoats. Evidence against them included the Sibylline prophecies and witnesses describing literally orgies taking place in the Vestal house; the process itself was provoked by a thunder striking a travelling girl so superstitious Romans immediately thought of that as of gods' anger and started to search for a reason***. According to the legend Rhea Silvia, daughter of King Numitor of Alba Longa was also punished this way. Numitor's brother seized the throne and forced Rhea Silvia to become a Vestal virgin hoping this will prevent her from giving birth to a potential avenger who in turn would deprive him of power. However, Mars the god of war took advantage of Rhea Silvia who gave birth to twins Remus and Romulus. Children were left in a forest to die there, luckily their divine father sent a she-wolf to feed them with her own milk. Shame on him that he show no similar care about their mother and did not save her from the consequences that she had to face because of him; after all such deux ex machina (unexpected turn of events) is often featured in myths of Hellenic gods who seduced mortal women.
This story may be the symbol of how women were treated in Rome, it must be noted that comparing with average female inhabitants Vestal virgins were an exception. They were 'the daughters of Rome', so did not belong to their fathers, brothers or sons, they were respected, could act independently, vote, possess and manage property, give oaths because their word was trusted without question. They were free to travel in a carriage preceded by a lictor, they were participating in celebrations and performances with the right to sit in a reserved place of honour and had right to free a condemned prisoner (which they showed by touching him, also if a person sentenced to death saw a Vestal on his way to an execution place was automatically pardonned). Because of Vestal virgins' immaculate reputation they were entrusted with particularly valuable state documents such as treaties. Their person was sacrosanct so every attack on a Vestal virgin was considered to be a coup d'etat and punished by death for treason.
The chief Vestal (Virgo Vestalis Maxima or Vestalium Maxima – 'the greatest, the eldest of Vestals') was the only woman to be included in the College of Pontiffs gathering all the high priests of native Roman cults. After 30 years of service a former Vestal virgin was obtaining a pension and had the right to leave the temple, get married and give birth to children. A marriage to a former Vestal was considered to be a huge honour and very lucky. Emperor Elagabalus did something more and married a Vestal virgin Aquilia Severa who was an officeholder at the time of her marriage. It was a very logical thing to do from his point of view as a follower of Eastern religions (vide post about Ishtar and the instytution of sacred marriage between a king and a high priestess), however the Romans considered it to be a sacrilege.
The flame in the temple was renewed every year on March 1st and the goddess' festival called Vestalia was celebrated between 7th and 15th of June. The temple was the place where no one except of Vestal virgins had access to but on the first day of festival mothers were allowed to enter it to bring the offering of food.
Vesta's flame had been burning in Rome for about nine centuries until it was extinguished in 391/394 of our era when Emperor Theodosius forbade any other religions than Christianity. According to contemporary recordings Serena, a Christian and Emperor's adopted daughter, entered Vesta's temple, took a necklace off the statue of Rhea Silvia and put it on. An old woman, Coelia Concordia, the last Virgo Vestalis Maxima, got indignant seeing such an act of sacrilege and prophesied a punishment to her. Indeed, Serena had later the dreams about her own death (and she died executed during the siege of Rome in 409, accused of conspiring with the enemy and high treason). An old Vestal was not the only one who got outraged at what Theodosius was doing; plenty of Romans was saying aloud that the sack of Rome in 410 by the Visigoths led by King Alaric and the following fall of an actual power of Roman Empire was a punishment for a Christian annihilation of cults celebrating deities who were protecting the Eternal City for almost one thousand years.
IMAGES, SYMBOLS AND ANIMALS
Some sculptures of Hestia remained presenting her as a majestic woman wearing simple clothes and a veil and holding a stick or a staff in a hand. She was, however, mainly represented by a hearth and a burning flame itself.
DIVINATION MEANING
In positive meaning the person shown by this card is peaceful and balanced, often working in the profession dealing with implementing law or ensuring that everything is done in accordance to procedures. Somebody who values tradition and order and does not want to violate them. In negative meaning a person who is passive, conformist, shallow and superficial; possibly avoids making decisions and wants to make everybody happy. This person may be too strict and rigid and sticks to the decision made earlier no matter what. A person who is very much devoted to family and house.
Profession: an official, a clerk, a police officer, a firefighter, an auditor, a controller, an architect, an interior designer, parent working at home or a housewife/househusband, a clergy person, a priest/priestess, a monk/nun.
This cards concentrates mostly on family life as well as law&official cases. Make sure everything is ok in these areas of your life. Try to smooth over disputes with your loved ones, Hestia encourages you to be gentle. Even if you disagree with somebody, you do not have to impose your own opinions on them. Remember that holding grudges and keeping anger inside is mostly harmful to you.
Perhaps you do not have your own space in the house or it is only the place to sleep before you leave early for work. Your home should be your retreat and shelter from rush, stress and anger , not another source of them. If you cannot stand the atmosphere at home, this card definitely suggests moving out. You choose who should be in your environment. Either biological or emotional family gives us support and the feeling of continuity and belonging to a larger whole. Home is above all the feeling of belonging.
It is good to take care of your flat or house because your environment influences directly your mood, the level of energy and the ability to regenerate. This card suggest a major clean up or repairs, throwing unnecessary things away and rearranging your space. If you live in a house without a fireplace, you may consider installing it; you would be surprised how much it may improve the spirits at home.
In the situation you are inquiring you should act honestly and lawfully, otherwise consequences may be very serious.
This card also suggests a certain ritual: regardless of your religion or lack of faith, you should light a candle and/or an incense at least for a couple of minutes every day and while staring at it rethink your day, attitude and behaviour. Learn from your mistakes and then clean your mind from negative thoughts. We are accustomed to the fact that altar is situated at church and yet even the simplest domestic activities may be sacred. It is worth to follow the ancient who offered sacrifices and prepared food on the same hearth. What is intended for the body must be paired with what is intended for the spirit.
Never let your inner flame extinguish. Soul needs warmth to bloom.
Family. Home. House or flat. Religion. Law. Rules. Tradition. Journey. Celebrations and festivals. City.
If you are in the relationship: Marriage or official confirmation of a relationship. Do not forget to fan the flame in the relationship, otherwise it will be extinguished. Provide warmth in mutual relations. A moment when casual matters begin to dominate reality.
If you are single: Perhaps you pay too much attention to external aspect of romantic relationship. If you want your partner to declare their feelings, propose and start a family too fast, you may startle a potential candidate. Beware of thinking I want to be in a relationship with anyone, just not to be alone. Reluctance to engage emotionally. An inner need to remain single.
Promotion. A strong position. Respect of co-workers. Restriction of freedom. An influence of law or office on your work and the way it functions. An official control in your workplace. To resolve the problem you are inquiring you should follow precisely the letter of the law. Work at home.
Fever. Inflammation. Body temperature fluctuations. Exacerbation of medical condition. Patient care at home. Excess or lack of energy. Endangered parts of the body: heart, arteries, reproductory system, small intestine.
As I mentioned above Hestia/Vesta was manifesting herself through the fire itself, not necessarily through statues. This is why I appreciate the cards from Thalia Took and Kay Stevenson's decks which represent her in this way:
Hestia in The Goddess Oracle Deck by Thalia Took (as Vesta)
Hestia in Ancient Feminine Wisdom by Kay Stevenson&Brian Clark
Hestia in The Goddess Oracle deck by Hrana Janto&Amy Sophia Marashinsky
Hestia in The Goddess Wisdom Cards by Jill Fairchild, Regina Schaare & Sandra M. Stanton (as Vesta)
Hestia in Goddesses of the New Light by Pamela Matthews (as Vesta)
Hestia in Oracle of the Goddess by Anna Franklin&Paul Mason (as Vesta)
Hestia in Goddess Guidance Oracle Cards by Doreen Virtue (as Vesta)
Hestia in The Goddess Power by Cordelia Brabbs (as Vesta)
Beware! Hestia from Goddesses&Sirens by Stacey Demarco&Jimmy Manton (as Vesta) will hit you with a candlestick in a moment !
Hestia with her lips pumped up with silicone in Mythic Oracle by Carisa Mellado&Michele-lee Phelan
Hestia as Ten of Cups in in Universal Goddess Tarot by Maria Caratti&Antonella Platano
*Georges Dumezil, a French philologist exploring the roots of proto-Indo – European, presents numerous similarities between the Vedic (Agni), Persian and Hestia/Vesta cult of fire. The cult of fire and purity remained to this very day in the Zoroaster rites. Similarities with Celtic goddess Brigid are obvious, too.
** Esoteric tradition recognises Fire as the beginning, the first element followed by Water, Air and Earth. First four figures of Major Arcana in Tarot correspond to this division: The Mage, The High Priestess, The Empress and The Emperor as well as the traditional order of Minor Arcana: Wands (Fire), Chalices (Water), Swords (Air) and Coins (Earth).
***It also included protecting sacred objects such as palladion, a wooden statue of Pallas Athena which as the legend says was saved by Aeneas from burning Troy. Palladium was the symbol of city and its civilisation.
**** Additionally these are recordings of stories which seem very similar to Middle – Age legends. One of them tells the story of a Vestal virgin Tuccia who brought the water from the Tiber to the temple of Vesta in a sieve to prove her innocence (told by Pliny the Elder). Another legend speaks about a Vestal virgin Aemilia who let the sacred flame extinguish by accident and asked Vesta to protect her against the punishment. She rekindled the flame miraculously by throwing a piece of garment on the coals of the hearth (it brings the resemblance with Brigid and clooties).
Based on Mity Greków i Rzymian by Wanda Markowska, Dictionnaire de la mythologie grecque et romaine by Pierre Grimal, The Greek Myths by Robert Graves, Wikipedia and http://books.google.pl/books?id=cRS3E3u3HuAC&pg=PA104&lpg=PA104&dq=114+b.c.+vestal+virgins&source=bl&ots=KmguiRMVfX&sig=i6sp2-vfotMzp9TBhRX_reS2n7g&hl=en&sa=X&ei=1nu3T6SZCdDHtAbez7nzBw&redir_esc=y#v=onepage&q=114%20b.c.%20vestal%20virgins&f=false , http://www.roman-colosseum.info/roman-clothing/vestal-virgins-clothing.htm .
Posted in Earth Goddess, Goddess, Goddess of Authority, Sovereignty and Power, Goddess of Fire, Goddess of House and Family, Goddess of Time, Justice and Order, Hellenic and Roman Goddess, Virgin Goddess
Tagged aemilia, aeneas, agni, alaric, amy sophia marashinsky, ancient feminine wisdom, anna franklin, antonella platano, apollo, aquilia severa, athena, atrium vestae, brian clark, brigid, christianity, civilisation, cordelia brabbs, cronus, cult of fire, demeter, dyonisos, elagabalus, element of earth, element of fire, fire, georges dumezil, goddeses of the new light, goddess inspiration oracle, goddess wisdom cards, goddesses&sirens, hades, hearth, hellas, hellenic colonies, hera, hestia, hrana janto, ishtar, jill fairchild, jimmy manton, julius cesar, kay stevenson, licinia, lictor, maat, major arcana, marcia, maria caratti, mark anthony, minor arcana, mola salsa, offering, oracle of the goddess, palladium/palladion, pallas, pamela matthews, paul mason, pliny the elder, pontifex maximus, poseidon, regina schaare, remus, rhea, rhea silvia, rituals, roman empire, romulus, sandra m stanton, serena, stacey demarco, ten of cups, thalia took, the goddess oracle, the goddess oracle deck, the goddess power pack, the high priestess, the sack of rome 410, theodosius, troy, tuccia, universal goddess tarot, vesta, vestal virgins, vestalia, vestalium maxima, virgo vestalis maxima, visigoths, zeus

redpajama_set_name: RedPajamaCommonCrawl


text:
07521 663 055 hello@sparklesandswirls.com
What size cake do I need?
What flavour cake can I order?
How much do cakes cost?
Do you deliver cakes?
In 2014, I had an adorable baby boy. I also had two herniated disks, meaning I was bent over like a 90 year old and could barely leave the house. That year of maternity leave was more like eternity leave and towards the end I couldn't wait to get back to work; to adult company, and to using my brain.
Two years on, my late 30s have kicked in and so has the apathy for working in an office, doing the same thing I've been doing for over 14 years and trudging into London every day. I need something else from life, but with a restriction: when my son goes to school next year I want to be that parent who signs up for everything, and gets involved in every little detail of her kids school life (he'll thank me one day!).
When I first went back to work and shipped J off to nursery, I suffered the usual 'mummy guilt' – how could I desert my child to a stranger? Does the fact I want to work make me a terrible mum? Will my son hate me for not giving up work to spend every minute with him? Would I be doing my son or my career any favours if I wasn't fully committed to either? I was in a lucky position where my employer had introduced flexible working, so on top of being permitted to reduce my working days from five to four, I could work from home when necessary and flex my start/finish times (so long as the job got done of course).
But if I am in the office (which I invariably am these days), I have two hours of commuting to contend with, and husband has even longer. J is always one of the first children to be dropped off in the morning, and often the last to be picked up, and the guilt scales are tipping in favour of needing more time with him before I lose him to the education system.
So I quit my job.
I'm working out my notice period, but I don't think I've ever felt so at ease with a decision I've made about my career, or more excited about what the next chapter of life holds for us as a family.
I have learnt something important from being back at work, and seeing J develop and thrive at nursery. Being a working mum is ok, and doesn't mess up the relationship I have with my child. I know it's not for everyone, and I really take my hat off to stay-at-home mum's – I honestly don't know how you do it, just as I don't know how the mum's who work full time and manage the childcare do it either. I cherish the time I have with J (except when he's having a three-nager sulk, usually saved for my non-working days), and I hope in the future he'll feel he had a strong female role model in his life, and won't feel he's missed out on anything because I worked four days a week.
So what next?
For those who don't know, I quite like making cakes. My amazing friends Kate and Sam recently trusted me to make their wedding cake. I didn't want to let them down (especially when they told me the cake would be served straight after the ceremony, meaning people would be sober and remember it!) so I created this. They were married on Hove Bandstand so it seemed fitting.
At the wedding, people were asking me for business cards. I've been asked previously why I don't make cakes for a living, and I've always said I like having it as a hobby. But this time it was different. Coupled with the apathy I'm feeling for my job, I suddenly realised – why can't I do this? I actually make quite tasty cakes, and often get compliments – and working for myself means I can plan jobs around childcare. I read somewhere that 9 out of 10 new businesses fail, which is a pretty daunting stat, but what's to stop me being the 1 in 10 that succeeds?
This is the time to highlight just how brilliant my husband Mark is. We all joke about him being an accountant and needing to have a spreadsheet of numbers for everything, but this time I'm eternally grateful for it. He's worked out that we can survive on me taking a lower paid part-time job, using the rest of my week to start setting up the business (and keep the house clean apparently).
I've never set up a business. I have a Business degree and I know how to write a strategy, manage large budgets and run a team. But I don't know what comes next, and I feel compelled to record the steps I'm taking on this journey. So whether it's how I go about getting my Food Safety Certificate, testing the latest brand of sugarpaste, or sourcing the best quality cupcake wrappers at the lowest price, I'll be sharing it all here, warts and all.
You're never alone…
Real-life cake stuff (finally)
Cakes aside for a minute…
© Sparkles And Swirls. All Rights Reserved.
Sparkles&Swirls use cookies to help give you a better experience on our website. Read our Privacy Policy for more info. Close X


Let us be part of your memorable vacation in the Shediac and Parlee Beach area.
This modern 2 bedroom cottage has open concept living room, dining and kitchen with cathedral ceilings giving a bright cheery feeling. Our cottage sleeps 5 and master has a queen bed and the second has a set of bunk beds with double bed on bottom and single on top. It is just a 2 minute walk to beautiful Parlee Beach or 10 minutes walk to Pointe du Chene Wharf. The large deck on the back has patio furniture and propane bbq which makes a great place to have a meal or just sit and relax in the sun while overlooking the beautiful grounds of Parlee Beach. The yard provides lots of room for kids to play and is on a safe quiet street. Also all of our cottages are close to a walking /biking trail.
Full kitchen with stove, fridge, microwave, toaster, coffee maker,washer, dryer,high speed internet,dvd, cd player,cable tv,dishes,utensils,pots & pans, all linens, towels.
All our cottages are NON SMOKING units!!!


You know you have them. That one band/artist/genre that you're kind of embarrassed to admit?
Screw it! Rock out anyway. I AM NOT ASHAMED!!!!
Linsdey Stirling currently tops my guilty pleasure list.
So post one or two of yours. Just imagine how cathartic it will be... you know you can't bottle it up forever.
I'm not even sure why. Fortunately this is very infrequent. It's never happened with Bieber though. I've given him an honest try a few times but never got into it.
Lindsey Stirling isn't anything to feel guilty about.
Emm.....I really enjoy Fascination by Alphbeat. When I'm in certain happy moods.
Keep on Movin' by 5ive is also good.
I also like a Coldplay song. Don't tell anyone.
Most every Kelly Clarkson single made in the past three years.
Enrique Iglesias. Though if drunk I will freely admit enjoying this and other late-90s latin wave pop music.
Me: ~"I really identify with this song."
A Friend: "You're lying naked on the floor?"
I say it's just for the Spanish but I secretly dance around my room to the music when nobody's watching.
That, or a vast swath of mashups. The poppier the better. I prefer juxtaposition over megamashup. Like... Stacy's Mom is Always a Good Time (Fountains of Wayne vs. Owl City / Carly Ray Jepsen).
Sigh... Bone Thugs 'n Harmony.
Oh, there's no problem with that. ABBA is totes legit.
Walking on Sunshine. Oh oh.
UniqueScreenname wrote: Walking on Sunshine. Oh oh.
Boy Bands from the '90s.
Billy Joel and Phil Collins.
Billy Joel's late 60s band, Attila, were fantastic.
The only one I am even halfway afraid to admit is that I like Owl City. Most other people I am quite open about.
I am a firm believer in the idea that you should love what you do and who you are, and be very open about it. Owl City gets a pass because of the ridicule the guy gets is so large for no reason. He is no real teenage heartthrob like Justin Beiber or the like. He is an insomniac with musical talent, which only makes me more intrigued because I have always been fascinated by mental disorders. I refuse to take Psychology classes though. My reason: They make it boring.
The refrain to "Die Young" is disturbingly catchy.
But "tik tok" can build a fire and then proceed to die in it.
philsov wrote: The refrain to "Die Young" is disturbingly catchy.
If you're anything like me it's the backing tracks. When you take Kesha out of Kesha songs they suddenly turn into solid EDM tracks.
Also, to a stranger extent, Cher Lloyd. Intellectually, I should hate EVERYTHING about her voice and her songs, but... I don't? Like Ke$ha, I believe she's in on the joke.
Mighty Jalapeno wrote: Also, to a stranger extent, Cher Lloyd. Intellectually, I should hate EVERYTHING about her voice and her songs, but... I don't? Like Ke$ha, I believe she's in on the joke.
I think they both realize that music is also about image, and they are both dedicated to maintaing this persona and being able to have a popstar persona and an alter ego... It's like Hannah Montana but in real life.
And in that situation, there are often very competent songwriters and musicians involved in the music. People whose job is "make it catchy and hummable".
Think of it this way: you're all about the whole trade organic 85% dark chocolate, but there's no shame in not turning down a couple of Hershey's Kisses when they're offered. Especially the ones with almonds in. Omnom.
I love Lana Del Rey, despite the fact that her songs have all the lyrical themes that are everything I hate about hip-hop. Also, she does something reminiscent to rapping, but I would never actually call it that. It's just ridiculous, but I can't stop.
National Anthem wrote: Money is the reason we exist.
Everybody knows it. Kiss, kiss.
Those are literally the dumbest lyrics I've ever heard, but I haven't deleted the song. What's wrong with me?
I don't listen to his music, but I've gotten drunk with Justin Jeffre of 98 Degrees on more than one occasion.
That I think he's a pretty cool guy torments my very soul.
Regina Spektor is my guilty pleasure.
Dude, Regina Spektor is awesome. Unironically so.
Oh, have I really not posted this yet?
Adam H wrote: Oh, have I really not posted this yet?
Am I supposed to feel guilty about listening to her stuff?
Haha, no, she's just very different from the other musics I listen to with the people I hang out with.
There you go, Billy! Now you know what it's like!
I always get that reaction whenever I say "Regina Spektor"
But if I went back to highschool and let Damian listen to "No need to say goodbye" I would have been shanked on the spot.
Rivers Of Babylon. Pretty much every song by ABBA except those few that I genuinely like. Lana del Rey with her deep lyrics and all. How You Remind Me (I vaguely remember some reason for which I must hate Nickelback).
I also have to listen to Don't Cry For Me Argentina every once in a while.


Classic carols and beautiful new songs are woven together in four separate suites to create a work for the Advent, Christmas and Epiphany season. Flexible in its design, "Christmas Canticles" can be presented as an entire cantata complete with narration, or each suite can be used as a separate extended anthem. Available separately: SATB, Preview CD Pak, ChoirTrax CD, Full Orchestration, Preview CD, Chamber Orchestration, CD 10-Pak. Duration: ca. 30:00.


text:
Frank's Family
Map of The Park
The Park Blog
from the library of Harden house museum
New Milford history added to harden house museum
Some may know that Harden House Museum is listed with the Connecticut state register of historic places. Within you will find thousands of treasures, each screaming with a story of art, life and sincere interest and intrinsic value. While the majority of the art, furniture and collections of the museum are original to the Hardens themselves, on rare occasion we are thrilled to add a piece to the museum.
Today is one of those days and it comes with a lovely story.
First and foremost let us thank Mr. Joe Cats who donated this piece from his personal and private collection. Mr. Cats sits as President of New Milford Historical Society. His deep love and general curiosity of the town's history (both bold and quiet) makes him an asset to the historical preservation of this town. What's more is his love for sharing this history with you and me and frankly any person who shows the interest. I have had MANY lengthy conversations with Joe where we could each teach the other something and more so, Joe has taught me quite a bit more. Today he teaches us of the Wannopee Pottery Company which was here in New Milford in the early 1900's. Much of their pottery gained recognition as "lettuce leaf" pottery made famous by Mrs. Jackie Kennedy owning quite a few pieces while in her stay at the White House.
The blogs are written by our park Executive Director, Billy Buckbee. Some call him Mo but he's the guy with the beard you see around the park.
office@HarrybrookePark.org


We excited to be hosting this event for the 5th Year! We still have work that needs to be done. Come run through Florida Atlantic University's beautiful campus in the City of Boca Raton! It is a Walk / Run event… come out whether it's your first 5K or you are trying to set that PR!
This event will raise money to provide assistance to underprivileged youth through their educational experiences in Haiti. We have made great strides with the past couple of years. Help us continue to do so.
T-Shirts will be given to the first 200 paid registrants!
This wonderful event will bring together an estimated 300+ runners, walkers and attendees from the Palm Beach and Broward area. The event will kick off at 7:45 a.m. with a "JusteDance" Zumba warm up session. The actual walk/run will start at 8 a.m. Top qualifiers will be announced following the event.
For more information, please go to our Facebook page.
This is an official 5K!!!
We will be happy to answer any questions you may have regarding Sponsorship/Vendor opportunities. Please contact us at [email protected]. Please be sure to include your email address, phone number and nature of your inquiry.


text:
THE OPRAH WINFREY SHOW
Follow THE OPRAH WINFREY ...
The Oprah Winfrey Show Quick Links News Pictures RSS
The Oprah Winfrey Show Quick Links
News Pictures RSS
Ali Wentworth and THE OPRAH WINFREY SHOW - Ali Wentworth shows off her royal engagement ring replica while reporting for 'The Oprah Winfrey Show' London, England - Celebrities seen filming during preparations for the Royal Wedding of Prince William and Kate Middleton in central London. Thursday 28th April 2011
Dr. Phil Mcgraw, Oprah Winfrey, Phil Mcgraw and THE OPRAH WINFREY SHOW - Dr. Phil McGraw and his wife Robin McGraw Friday 7th May 2010 at Radio City Music Hall New York City, USA
Christina Aguilera, Oprah Winfrey and THE OPRAH WINFREY SHOW Friday 7th May 2010 arriving back at her hotel surrounded by paparazzi, ahead of her performance on 'The Oprah Winfrey Show' later today New York City, USA
Oprah Big On Tv, Bigger Online
Entity Index: 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


We have same day express delivery if you need to send flowers quickly.
Say it with flowers. You pay no commissions because we are the local Czech florist. We have been here for you since 1991.
Are you in your thoughts close to your family, relatives and friends at this difficult time? Flowers will say it.
Funeral heart There are 2 products.
Funeral heart in red colours 50 cm in a diameter.
For delivery in Brno you can choose all colours of ribbon.
For delivery in the Czech Republic you can choose only black and white ribbon.
Funeral heart in white colours 40 cm in a diameter.