Вопрос частый, и по-разному решаемый. Заметочку оставляю больше для себя, поэтому растекаться мыслью по древу не стану, а сразу перейду к коду.