Îðãàíàéçåð

Äîìàøíÿÿ ñòðàíèöà Àëåêñåÿ Àëåêñàíäðîâà

 



<SCRIPT LANGUAGE="JavaScript">

<!--

// Alex Alexandrov wrote:

// This scrpt was taken from a book called "Learn Advanced Java Script" Chapter 14.

// The guys who wrote that book wanted us to leave a copyright. So here it goes:

// 	THIS SCRPIT IS COPYRIGHTED//

// 	Be AWARE TO PUT IT ON YOUR PAGE//

// Boolean variable specified if alert should be displayed if cookie exceeds 4KB

var caution = false

// name - name of the cookie

// value - value of the cookie

// [expires] - expiration date of the cookie (defaults to end of current session)

// [path] - path for which the cookie is valid (defaults to path of calling document)

// [domain] - domain for which the cookie is valid (defaults to domain of calling document)

// [secure] - Boolean value indicating if the cookie transmission requires a secure transmission

// * an argument defaults when it is assigned null as a placeholder

// * a null placeholder is not required for trailing omitted arguments

function setCookie(name, value, expires, path, domain, secure) {

	var curCookie = name + "=" + escape(value) +

		((expires) ? "; expires=" + expires.toGMTString() : "") +

		((path) ? "; path=" + path : "") +

		((domain) ? "; domain=" + domain : "") +

		((secure) ? "; secure" : "")

	if (!caution || (name + "=" + escape(value)).length <= 4000)

		document.cookie = curCookie

	else

		if (confirm("Cookie ïðåâûøàåò 4KB è áóäåò âûðåçàí !"))

			document.cookie = curCookie

}



// name - name of the desired cookie

// * return string containing value of specified cookie or null if cookie does not exist

function getCookie(name) {

	var prefix = name + "="

	var cookieStartIndex = document.cookie.indexOf(prefix)

	if (cookieStartIndex == -1)

		return null

	var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)

	if (cookieEndIndex == -1)

		cookieEndIndex = document.cookie.length

	return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))

}



// name - name of the cookie

// [path] - path of the cookie (must be same as path used to create cookie)

// [domain] - domain of the cookie (must be same as domain used to create cookie)

// * path and domain default if assigned null or omitted if no explicit argument proceeds

function deleteCookie(name, path, domain) {

	if (getCookie(name)) {

		document.cookie = name + "=" + 

		((path) ? "; path=" + path : "") +

		((domain) ? "; domain=" + domain : "") +

		"; expires=Thu, 01-Jan-70 00:00:01 GMT"

	}

}



function fixDate(date) {

	var base = new Date(0)

	var skew = base.getTime()

	if (skew > 0)

		date.setTime(date.getTime() - skew)

}



function initCookie(monthName) {

	// initializes cookie with the following format:

	// ^1^^2^^3^^4^...^30^^31^



	// initialize accumulative variable

	var text = ""

	for (var i = 1; i <= 31; ++i) {

		text += "^" + i + "^"

	}



	var now = new Date()

	fixDate(now)



	// set time to one month (31 days) in the future

	now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)



	setCookie(monthName + "Calendar", text, now)

}



function getSpecificReminder(num, monthName) {

	var prefix = "^" + num + "^"

	var totalCookie = getCookie(monthName + "Calendar")

	var startIndex = totalCookie.indexOf(prefix, 0)

	var startData = totalCookie.indexOf("^", startIndex + 1) + 1

	if (num == 31)

		var endData = totalCookie.length

	else

		var endData = totalCookie.indexOf("^", startData)

	

	return totalCookie.substring(startData, endData)

}



function setSpecificReminder(num, monthName, newValue) {

	var prefix = "^" + num + "^"

	var totalCookie = getCookie(monthName + "Calendar")

	var startIndex = totalCookie.indexOf(prefix, 0)

	var startData = totalCookie.indexOf("^", startIndex + 1) + 1

		if (num == 31)

		var endData = totalCookie.length

	else

		var endData = totalCookie.indexOf("^", startData)

	var now = new Date()

	fixDate(now)



	// set time to one month (31 days) in the future

	now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)



	setCookie(monthName + "Calendar", totalCookie.substring(0, startData) + newValue + totalCookie.substring(endData, totalCookie.length), now)

}



function getInput(num, monthName) {

	if (!getCookie(monthName + "Calendar")) 

		initCookie(monthName)

	var newValue = prompt("Ââåäèòå çàïèñü ñîîòâåòñòâóþùåé äàííîé äàòå:", getSpecificReminder(num, monthName))

	if (newValue) // user did not cancel

		setSpecificReminder(num, monthName, newValue)

}



function getTime() {

	// initialize time-related variables with current time settings

	var now = new Date()

	var hour = now.getHours()

	var minute = now.getMinutes()

	now = null

	var ampm = "" 



	// validate hour values	and set value of ampm

	if (hour >= 12) {

		hour -= 12

		ampm = "PM"

	} else

		ampm = "AM"

	hour = (hour == 0) ? 12 : hour



	// add zero digit to a one digit minute

	if (minute < 10)

		minute = "0" + minute // do not parse this number!



	// return time string

	return hour + ":" + minute + " " + ampm

}



function leapYear(year) {

	if (year % 4 == 0) // basic rule

		return true // is leap year

	return false // is not leap year

}



function getDays(month, year) {

	// create array to hold number of days in each month

	var ar = new Array(12)

	ar[0] = 31 // January

	ar[1] = (leapYear(year)) ? 29 : 28 // February

	ar[2] = 31 // March

	ar[3] = 30 // April

	ar[4] = 31 // May

	ar[5] = 30 // June

	ar[6] = 31 // July

	ar[7] = 31 // August

	ar[8] = 30 // September

	ar[9] = 31 // October

	ar[10] = 30 // November

	ar[11] = 31 // December



	// return number of days in the specified month (parameter)

	return ar[month]

}



function getMonthName(month) {

	// create array to hold name of each month

	var ar = new Array(12)

	ar[0] = "ßÍÂÀÐÜ"

	ar[1] = "ÔÅÂÐÀËÜ"

	ar[2] = "ÌÀÐÒ"

	ar[3] = "ÀÏÐÅËÜ"

	ar[4] = "ÌÀÉ"

	ar[5] = "ÈÞÍÜ"

	ar[6] = "ÈÞËÜ"

	ar[7] = "ÀÂÃÓÑÒ"

	ar[8] = "ÑÅÍÒßÁÐÜ"

	ar[9] = "ÎÊÒßÁÐÜ"

	ar[10] = "ÍÎßÁÐÜ"

	ar[11] = "ÄÅÊÀÁÐÜ"



	// return name of specified month (parameter)

	return ar[month]

}



function setCal() {

	// standard time attributes

	var now = new Date()

	var year = now.getYear()

	var month = now.getMonth()

	var monthName = getMonthName(month)

	var date = now.getDate()

	now = null



	// create instance of first day of month, and extract the day on which it occurs

	var firstDayInstance = new Date(year, month, 1)

	var firstDay = firstDayInstance.getDay()

	firstDayInstance = null



	// number of days in current month

	var days = getDays(month, year)



	// call function to draw calendar

	drawCal(firstDay + 1, days, date, monthName, 1900 + year)

}



function drawCal(firstDay, lastDate, date, monthName, year) {

	// constant table settings

	var headerHeight = 35 // height of the table's header cell

	var border = 0 // 3D height of table's border

	var cellspacing = 0 // width of table's border

	var headerColor = "00008b" // color of table's header

	var headerSize = "+2" // size of tables header font

	var colWidth = 45 // width of columns in table

	var dayCellHeight = 15 // height of cells containing days of the week

	var dayColor = "000000" // color of font representing week days

	var cellHeight = 25 // height of cells representing dates in the calendar

	var todayColor = "red" // color specifying today's date in the calendar

	var timeColor = "purple" // color of font representing current time

	var dayCellcolor="87ceda"

	var monthColor="6485ed"



	// create basic table structure

	var text = "" // initialize accumulative variable to empty string

	text += '<CENTER>'

	text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>' // table settings

	text += 	'<TH COLSPAN=7 HEIGHT=' + headerHeight + ' BGCOLOR='+ monthColor +'>' // create table header cell

	text += 		'<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>' // set font for table header

	text += 			monthName + ' ' + year 

	text += 		'</FONT>' // close table header's font settings

	text += 	'</TH>' // close header cell



	// variables to hold constant settings

	var openCol = '<TD align=right WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + ' BGCOLOR='+ dayCellcolor +'>'

	openCol += '<FONT SIZE=-1 COLOR="' + dayColor + '">'

	var closeCol = '</FONT></TD>'



	// create array of abbreviated day names

	var weekDay = new Array(7)

	weekDay[0] = "Âñ"

	weekDay[1] = "Ïí"

	weekDay[2] = "Âò"

	weekDay[3] = "Ñð"

	weekDay[4] = "×ò"

	weekDay[5] = "Ïò"

	weekDay[6] = "Ñá"

	

	// create first row of table to set column width and specify week day

	text += '<TR ALIGN="center" VALIGN="center">'

	for (var dayNum = 0; dayNum < 7; ++dayNum) {

		text += openCol + weekDay[dayNum] + closeCol 

	}

	text += '</TR>'

	

	// declaration and initialization of two variables to help with tables

	var digit = 1

	var curCell = 1

	

	for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {

		text += '<TR ALIGN="right" VALIGN="top">'

		for (var col = 1; col <= 7; ++col) {

			if (digit > lastDate)

				break

			if (curCell < firstDay) {

				text += '<TD></TD>';

				curCell++

			} else {

				if (digit == date) { // current cell represent today's date

					text += '<TD HEIGHT=' + cellHeight + ' BGCOLOR="#00FFFF">'

					text += '<FONT COLOR="' + todayColor + '">'

					text += '<A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Çàïèñàòü èëè ïðî÷åñòü çàïèñü çà ' + monthName + ' ' + digit + '\'; return true"><FONT SIZE=-1 COLOR="' + todayColor + '">' + digit + '</FONT></A>'

					text += '<BR>'

					text += '<FONT COLOR="' + timeColor + '" SIZE=2>'

					text += '<CENTER>' + getTime() + '</CENTER>'

					text += '</FONT>'

					text += '</TD>'

				} else

					text += '<TD HEIGHT=' + cellHeight + ' BGCOLOR="#C0C0C0"><FONT SIZE=-1><A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Çàïèñàòü èëè ïðî÷åñòü çàïèñü çà ' + monthName + ' ' + digit + '\'; return true">' + digit + '</A></FONT></TD>'

				digit++

			}

		}

		text += '</TR>'

	}

	

	// close all basic table tags

	text += '</TABLE>'

	text += '</CENTER>'



	// print accumulative HTML string

	document.write(text) 

}



setCal()



// -->