var RSSRequestObject = false; // XMLHttpRequest Object
var Backend = 'js/eventrss.php'; // Backend url
window.setInterval("update_timer()", 1200000); // update the data every 20 mins


if (window.XMLHttpRequest) // try to create XMLHttpRequest
	RSSRequestObject = new XMLHttpRequest();

if (window.ActiveXObject)	// if ActiveXObject use the Microsoft.XMLHTTP
	RSSRequestObject = new ActiveXObject("Microsoft.XMLHTTP");


/*
* onreadystatechange function
*/
function ReqChange() {

	// If data received correctly
	if (RSSRequestObject.readyState==4) {
	
		// if data is valid
		if (RSSRequestObject.responseText.indexOf('invalid') == -1) 
		{ 	
			// Parsing Feeds
			var node = RSSRequestObject.responseXML.documentElement; 

			var content ='';
			var content2 ='';
			
			// Browse events
			var items = node.getElementsByTagName('entry');
			if (items.length != 0) {
			
				var content ='<div class="textbox eventDesc eventBlockTitle">БЛИЖАЙШИЕ ВЕЧЕРИНКИ:</div>';
				var content2 ='<div class="textbox eventDesc eventBlockTitle" style="margin-top:45px;">ПРОШЕДШИЕ ВЕЧЕРИНКИ:</div>';
			
				var partiesArray = new Array();
				
				for (var n=items.length-1; n >= 0; n--)
				{
					var MainBlock = items[n].getElementsByTagName('content').item(0).firstChild.data;
					
					// get date
					
					var findDateWord = /When: /;
					
					var datePosStart = MainBlock.search(findDateWord)+6;
					var datePosEnd = datePosStart +16;
					
					var itemDate = MainBlock.substring(datePosStart,datePosEnd);
					
					var itemDateArray = itemDate.split(" ",4);
					
					// 0 - day, 1 - month, 2 - date, 3 - year
					
					var dateWithoutComma = itemDateArray[2].replace(",", "");
					var yearCorrect = itemDateArray[3].replace("<", "");
					
					if (dateWithoutComma=='1') {RusMonth='01';}
					else if (dateWithoutComma=='2') {dateWithoutComma='02';}
					else if (dateWithoutComma=='3') {dateWithoutComma='03';}
					else if (dateWithoutComma=='4') {dateWithoutComma='04';}
					else if (dateWithoutComma=='5') {dateWithoutComma='05';}
					else if (dateWithoutComma=='6') {dateWithoutComma='06';}
					else if (dateWithoutComma=='7') {dateWithoutComma='07';}
					else if (dateWithoutComma=='8') {dateWithoutComma='08';}
					else if (dateWithoutComma=='9') {dateWithoutComma='09';}

					var monthInNum = itemDateArray[1];
					
					if (monthInNum=='Jan') {monthInNum='01';}
					else if (monthInNum=='Feb') {monthInNum='02';}
					else if (monthInNum=='Mar') {monthInNum='03';}
					else if (monthInNum=='Apr') {monthInNum='04';}
					else if (monthInNum=='May') {monthInNum='05';}
					else if (monthInNum=='Jun') {monthInNum='06';}
					else if (monthInNum=='Jul') {monthInNum='07';}
					else if (monthInNum=='Aug') {monthInNum='08';}
					else if (monthInNum=='Sep') {monthInNum='09';}
					else if (monthInNum=='Oct') {monthInNum='10';}
					else if (monthInNum=='Nov') {monthInNum='11';}
					else if (monthInNum=='Dec') {monthInNum='12';}
					
					var RusDay = itemDateArray[0];
					
					if (RusDay=='Mon') {RusDay='пндлнк';}
					else if (RusDay=='Tue') {RusDay='втрнк';}
					else if (RusDay=='Wed') {RusDay='срд';}
					else if (RusDay=='Thu') {RusDay='чтврг';}
					else if (RusDay=='Fri') {RusDay='птнц';}
					else if (RusDay=='Sat') {RusDay='сббт';}
					else if (RusDay=='Sun') {RusDay='вскрс';}

					// write date in beggining of array
					
					partiesArray[n] = yearCorrect+'|'+monthInNum+'|'+dateWithoutComma+'|'+RusDay+'|';
					
					// get and write time
										
					var findTimeWord = /pm to/;
					var TimePosStart = MainBlock.search(findTimeWord);
					if (TimePosStart == -1) {
						var itemTime = 'NoTime';
					} else {
						TimePosEnd = TimePosStart;
						TimePosStart = TimePosStart-5;
						var itemTime = MainBlock.substring(TimePosStart,TimePosEnd);
						var itemTimeArray = itemTime.split(":",2);
						var itemHour = itemTimeArray[0];						
						if (itemHour=='8') {itemHour='20'}
						else if (itemHour=='9') {itemHour='21'}
						else if (itemHour=='10') {itemHour='22'}
						else if (itemHour=='11') {itemHour='23'}
						else if (itemHour=='7') {itemHour='19'}
						else if (itemHour=='6') {itemHour='18'}
						else if (itemHour=='5') {itemHour='17'}
						else if (itemHour=='4') {itemHour='16'}
						else if (itemHour=='3') {itemHour='15'}
						else if (itemHour=='2') {itemHour='14'}
						else if (itemHour=='1') {itemHour='13'}
						itemTime = itemHour+':'+itemTimeArray[1];
					}
					partiesArray[n] += itemTime+'|';

					//  get and write location

					var findLocWord = /Where: /;
					var LocPosStart = MainBlock.search(findLocWord);
					if (LocPosStart == -1) {
						var itemLocation = 'NoLoc';
					} else {
						findStatusWord = /Event Status/;
						var StatusPosStart = MainBlock.search(findStatusWord);
						LocPosStart = LocPosStart+7;
						var LocPosEnd = StatusPosStart-6;
						var itemLocation = MainBlock.substring(LocPosStart,LocPosEnd);
						
						var isMstrsk = itemLocation.search(/mstrsk/);
						if ( itemLocation.search(/mstrsk/) >= 0 || itemLocation.search(/мастерская/) >= 0 || itemLocation.search(/Мастерская/) >= 0 )
						{
						itemLocation = '<a class="eventLink" href="http://www.mstrsk.ru" target="_blank">Мастерская</a>';
						}
					}
					
					partiesArray[n] += itemLocation+'|';

					// get and write title
					
					var itemTitle = items[n].getElementsByTagName('title').item(0).firstChild.data;
					partiesArray[n] += itemTitle+'|';
					
					// get and write description
					
					var findDescWord = /Description: /;
					var findLinkWord = /galloween.livejournal.com/;
					var DescrPosStart = MainBlock.search(findDescWord);
					var LinkPosStart = MainBlock.search(findLinkWord);
					if (LinkPosStart != -1) { var DescrPosEnd = LinkPosStart - 8; }

					if (DescrPosStart == -1) {
						var itemDescrBr = 'NoDesc';
					} else {
						DescrPosStart = DescrPosStart+13;							
						if (LinkPosStart != -1) { var itemDescr = MainBlock.substring(DescrPosStart,DescrPosEnd); } else { var itemDescr = MainBlock.substring(DescrPosStart); }
						var itemDescrBr = itemDescr.replace(/\n|\r\n?/g,'<br />'); 
					}
					partiesArray[n] += itemDescrBr;
					
					// get link
								
					if (LinkPosStart == -1) {
						var itemLink = 'NoLink';
					} else {
						LinkPosStart = LinkPosStart-7;
						var itemLink = MainBlock.substring(LinkPosStart);
					}
					partiesArray[n] += '|'+itemLink;
					
// end read calendar					
					
				}
				
				partiesArray.sort();
				
				var PastPartiesArray = new Array();
		
				var d = new Date();
				var curr_date = d.getDate();
				var curr_month = d.getMonth()+1;
				var curr_year = d.getFullYear();
				
				for (var n=0; n <= partiesArray.length-1; n++)
				{
				
				var contentArray = partiesArray[n].split("|");

				// 0 - year, 1 - month, 2 - date, 3 - day, 4 - time, 5 - location, 6 - title, 7 - description, 8 - Link

					var RusMonth = contentArray[1];
					
					if (RusMonth=='01') {RusMonth='янв';}
					else if (RusMonth=='02') {RusMonth='фев';}
					else if (RusMonth=='03') {RusMonth='мар';}
					else if (RusMonth=='04') {RusMonth='апр';}
					else if (RusMonth=='05') {RusMonth='мая';}
					else if (RusMonth=='06') {RusMonth='июн';}
					else if (RusMonth=='07') {RusMonth='июл';}
					else if (RusMonth=='08') {RusMonth='авг';}
					else if (RusMonth=='09') {RusMonth='сен';}
					else if (RusMonth=='10') {RusMonth='окт';}
					else if (RusMonth=='11') {RusMonth='ноя';}
					else if (RusMonth=='12') {RusMonth='дек';}

				// check if date has passed and if not, write content

				var eventYear = parseInt(contentArray[0],10);
				var eventMonth = parseInt(contentArray[1],10);
				var eventDate = parseInt(contentArray[2],10);
				
				if ( eventYear > curr_year ) {var printEvent=1;}
				else if ( eventYear == curr_year && eventMonth > curr_month ) {var printEvent=1;}
				else if (eventYear >= curr_year && eventMonth == curr_month && eventDate >= curr_date) {var printEvent=1;}
				else {var printEvent=0;}
					
					if (printEvent==1) {

					content += '<div class="events textbox eventTitle"><span class="eventDate">' + contentArray[2] +' '+ RusMonth + '</span> <span class="eventDay">/ ' + contentArray[3];
					if (contentArray[4] != 'NoTime') { content += ' / ' + contentArray[4] }
					content += '</span><br />';
					if (contentArray[8] != 'NoLink') { content += '<a class="eventLink noUnderline" target="_blank" href="' + contentArray[8] + '">' }
					content += contentArray[6];
					if (contentArray[8] != 'NoLink') { content += '</a>' }
					if (contentArray[5] != 'NoLoc') { content += '<br><span class="eventLocation"> @ ' + contentArray[5] + '</span>' }
					content += '</div>';
					if (contentArray[7] != 'NoDesc') { content += '<div class="events textbox eventDesc">' + contentArray[7] + '</div>'; }
					if (contentArray[8] != 'NoLink') { content += '<div class="events textbox eventTitle moreInfoLink"><a class="eventLink noUnderline" target="_blank" href="' + contentArray[8] + '">подробности</a></div>' }
						
					} else if (printEvent==0) { // past events
					PastPartiesArray.push(partiesArray[n]);				
					}
				
				}
				
				if (PastPartiesArray.length > 0) {
					PastPartiesArray.reverse();
					for (var n=0; n <= PastPartiesArray.length-1; n++)
					{					
					var contentArray2 = PastPartiesArray[n].split("|");					
					if (contentArray2[8] != 'NoLink') { content2 += '<a class="eventLink noUnderline" target="_blank" href="' + contentArray2[8] + '">' }					
					content2 += '<div class="events textbox eventTitle pastEvent"><span class="eventDate">' + contentArray2[2] +' '+ RusMonth + '</span> <span class="eventDay">/ ' + contentArray2[3];
					if (contentArray2[4] != 'NoTime') { content2 += ' / ' + contentArray2[4] }
					content2 += '</span><br />';					
					content2 += contentArray2[6];
					content2 += '</div>';
					if (contentArray2[8] != 'NoLink') { content2 += '</a>' }					
					}
				}

			}
			// Display the result
			document.getElementById("googleCal").innerHTML = content;
			document.getElementById("pastEvents").innerHTML = content2;
			

			// Tell the reader the everything is done
//			HideShow('googleCalStatus');
			
			// finished
			googleCalFinished = 1;
			
		}
		else {
			// Tell the reader that there was error requesting data
//			document.getElementById("googleCalStatus").innerHTML = '<div class="colors textbox">Не могу загрузить календарь...</div>';
			googleCalFinished = 1;
		}	
		
	}
	
}

/*
* Main AJAX RSS reader request
*/
function LoadGoogleCal() {

	// change the status to requesting data
//	HideShow('googleCalStatus');
//	document.getElementById("googleCalStatus").innerHTML = '<div class="colors textbox">Свет мой зеркальце скажи, да всю правду покажи, какие у Паши Головина ближайшие вечеринки???</div>';
	
	// Prepare the request
	RSSRequestObject.open("GET", Backend , true);
	// Set the onreadystatechange function
	RSSRequestObject.onreadystatechange = ReqChange;
	// Send
	RSSRequestObject.send(null); 
}

/*
* Timer
*/
function update_timer() {
	LoadGoogleCal();
}




