is_archive() content being shown instead of is_category()

A category page is an archive page. So is_archive() will return true on a category page. Try to push down is_category() further, or use is_category() before is_archive().

Like This

if ( is_search() )
{
    // Search Result content
}
elseif( is_category() )
{
    // Category archive content
}
// check for tag, taxonomy, date before 
elseif ( is_archive() )
{
    // Default archive content for *every* type of archive
}
else
{
    // Default content for non-archives
}