var camMaximized = false;
var cam1Maximized = false;
var cam2Maximized = false;
var cams = new Array();
//var bigCameraCount = 0;
var totalUpdateTime = 0;
var rssHref = siteRoot + "RSSTrafficMessages.php";
var marker;
//var camIcon,camVIcon;
//var data;
//var list;
var i;
var gid;
var url;
var camerasCount = 0;
var refreshTimer;
var markerManager;
var webcamCollection = [];
var advancedUser;
var RefreshRate = 10;

//var videoCams = new Array(52,104,103,27,3,11,41,53,91,17,60,61,25,23,24,36,44,43,45,110,111,68,69,70,71);
var videoCams = new Array(17,18,45,44,43,24,23,25,53,52,104,103,110,111);

createCamIcon = function() {
	var camIcon = new GIcon(G_DEFAULT_ICON);
	camIcon.image = "http://www.doroga.tv/images/cam.png";

	camIcon.shadow = "";
	camIcon.iconSize = new GSize(13, 13);
	camIcon.iconAnchor = new GPoint(7, 7);
	return camIcon;
	//camIcon.iconSize = new GSize(20, 19);
	//camIcon.iconAnchor = new GPoint(10, 8);
}
createCamVIcon = function() {
	var camVIcon = new GIcon(G_DEFAULT_ICON);
	camVIcon.image = "http://www.doroga.tv/images/camv.png";

	camVIcon.shadow = "";
	camVIcon.iconSize = new GSize(13, 13);
	camVIcon.iconAnchor = new GPoint(7, 7);
	return camVIcon;
	//camIcon.iconSize = new GSize(20, 19);
	//camIcon.iconAnchor = new GPoint(10, 8);
}
createMarker = function(obj) {
	if($.inArray(parseInt(obj.CameraId),videoCams) > -1 && region == 'nnov' ) {
		var marker = new GMarker(new GLatLng(parseFloat(obj.Latitude), parseFloat(obj.Longtitude)), {title: obj.CameraName, icon:createCamVIcon()});
	} else {
		var marker = new GMarker(new GLatLng(parseFloat(obj.Latitude), parseFloat(obj.Longtitude)), {title: obj.CameraName, icon:createCamIcon()});
	}

	marker.cam_id = parseInt(obj.CameraId);
	marker.title = obj.CameraName;
	marker.descr = obj.Description;
	marker.glink = obj.GoogleLink + gkey;
	GEvent.addListener(marker, "click", function(){
		openInfoWindow(marker);
		//delete selectedTab,tabs,table,control_cell,banner_cell,cell,cam_cell;
	});
	delete html;
	return marker;
}

genInfoWindowTabs = function(marker) {
	// создаем каркас балуна
	var table = document.createElement('table');
	table.setAttribute("style","width:400px;height:265px;");
	table.setAttribute("cellspacing","0");
	table.setAttribute("cellpadding","0");
	var row = table.insertRow(-1);
	var title_cell=row.insertCell(-1);
	title_cell.setAttribute('align','center');
	title_cell.innerHTML = '<b><a href="/jams/'+marker.cam_id+'">'+marker.title+'</a></b>';
	title_cell.style.display = 'none';
	
	var cell=row.insertCell(-1);
	cell.innerHTML = '&nbsp;';
	
	var row = table.insertRow(-1);
	var cam_cell=row.insertCell(-1);
	cam_cell.width = "320";
	cam_cell.setAttribute('valign','top');

	var banner_cell=row.insertCell(-1);
	banner_cell.setAttribute('valign','top');
	
	var row = table.insertRow(-1);
	var control_cell=row.insertCell(-1);
	control_cell.setAttribute('colspan','2');
	//control_cell.setAttribute('height','10');
	control_cell.innerHTML = '';

	var imgcam = document.createElement('img');
	imgcam.setAttribute("width","320");
	imgcam.setAttribute("id","webcam");
	imgcam.setAttribute('style','display:none;margin: 0;');
	
	var firstLoad = true;
	$(imgcam).hide();
	$(imgcam).attr("height","240");
	$(imgcam).attr("src",siteRoot+'getcam.php?w=320&h=240&id='+marker.cam_id+'&pin='+getCookie('dtv_session')+'&rnd='+Math.random()).load(function() {
		$(this).fadeIn(300, function() {
			if(firstLoad == false) return;
			firstLoad = false;

			
			var btdiv = document.createElement('div');
			btdiv.setAttribute('id','timer_refresh_block');
			btdiv.onclick = changeRefreshRate;
			
			//btdiv.innerHTML = '<table width="320"><tr><td align="left">Время обновления <a onclick="changeRefreshRateLeft(); return false;" href="#"><img alt="<" align="top" style="vertical-align:text-bottom;" src="/images/left.gif"></a> <span id="camera_refresh_rate" style="font-weight: bold;">'+RefreshRate+'</span> <a onclick="changeRefreshRateRight(); return false;" href="#"><img alt=">" align="top" style="vertical-align:text-bottom;" src="/images/right.gif"></a></td><td align="right"></td></tr></table>';
			btdiv.innerHTML = '<img alt="Timer" align="middle" style="vertical-align:text-bottom;" src="/images/timer.png"><div id="camera_refresh_rate">'+RefreshRate+'</div>';
			$(btdiv).bind("mouseover",function () { $(this).stop(true);$(this).animate({ opacity:.8},350) });
			$(btdiv).bind("mouseout",function () { $(this).stop(true);$(this).animate({ opacity:.3},200) });
			
			control_cell.appendChild(btdiv);
            $(imgcam).fadeIn(300, function() {
            	$(title_cell).fadeIn(300, function() {
            		$(btdiv).fadeIn(300,function() {
            			if( !getCookie('advancedUser') ) {
            				$(btdiv).animate( { opacity: 0.2}, 70, function () {
            					$(btdiv).animate( { opacity: 0.8}, 70, function () {
            						$(btdiv).animate( { opacity: 0.2}, 70, function () {
            							$(btdiv).animate( { opacity: 0.8}, 70, function () {
            								$(btdiv).animate( { opacity: 0.3}, 70 );
            							} );
            						} );
            					} );
            				} );
						}
            		});
            	});
            });
			delete btdiv,firstLoad;
		});
	});
	
    
	var iframe = document.createElement('iframe');
	iframe.setAttribute('frameborder','no');
	iframe.setAttribute('scrolling','no');
	iframe.setAttribute('hspace','0');
	iframe.setAttribute('vspace','0');
	iframe.setAttribute('style','border:0;min-height:240px;overflow:hidden;overflow-x:hidden;width:100px;');
	iframe.setAttribute('src', wwwRoot+"abc.php?region="+region+"&cam_id="+marker.cam_id+"&zoneid=361" );

	cam_cell.appendChild( imgcam );
	banner_cell.appendChild( iframe );
	
    var descr = document.createElement('div');
    descr.setAttribute('style','padding:3px;');
    var desc_text = document.createElement('p');
    desc_text.setAttribute('style','text-align: justify; margin: 0; padding: 0 5px 0 0;');
    desc_text.appendChild( document.createTextNode(marker.descr) );
    var desc_img = document.createElement('img');
    desc_img.setAttribute('src',marker.glink);
    desc_img.setAttribute('align','left');
    desc_img.setAttribute('style','padding: 0 18px 18px 0;');
    
    descr.appendChild(desc_img);
    descr.appendChild(desc_text);
    
    return [ table, descr];
}
openInfoWindow = function(marker) {
	var selectedTab = 0;
    info = genInfoWindowTabs(marker);
	//Создаем содержимое вкладки Веб-камера
	var tabs = new Array();
	tabs.push(new GInfoWindowTab('Веб-камера',info[0]));
	
	if($.inArray(parseInt(marker.cam_id),videoCams) > -1 && region == 'nnov') {
		var rnd = Math.round(Math.random()*100000000);
		var file = siteRoot + 'cam'+ marker.cam_id+'.swf?junk='+rnd;
		var host = siteRoot.replace("http://","").replace("/","");
		tabs.push(new GInfoWindowTab('Видео','<iframe scrolling="no" hspace="0" vspace="0" style="width: 411px; height: 262px; overflow:hidden;" frameborder="0" src="'+wwwRoot+'stream.php?&zoneid=361&region='+region+'&host='+host+'&cam_id='+marker.cam_id+'"></iframe>'));

		selectedTab = 0;
	}
	
	// Создаем содержимое вкладки Описание
	
	tabs.push(new GInfoWindowTab('Описание',info[1]));

	// Открываем баллун
	map.openInfoWindowTabsHtml(
		marker.getLatLng(),
		tabs,
		{
			selectedTab: selectedTab,
			onOpenFn: function () {
				refreshTimer = setTimeout(function() { refreshCam(marker.cam_id) }, RefreshRate*1000);
				DTVLocation.changeHash( 'cam',marker.cam_id );
				//loadCam(marker.cam_id);
				//swfobject.registerObject("camplayer", "9.0.0", "/zorg/dtv/web/ei.swf");
				//swfobject.embedSWF(siteRoot + 'cam'+marker.cam_id+'.swf?rnd='+Math.floor(Math.random()*10000000), "player", '320','261','9.0.0', "/zorg/dtv/web/ei.swf");

			},                        
			onCloseFn: function() { clearTimeout(refreshTimer); DTVLocation.removeParam('cam'); delete refreshTimer;},
			maxWidth: 430
		}
	);
}
function loadCam(cam_id,tab_num) {
	swfobject.embedSWF(siteRoot + 'cam'+cam_id+'.swf?rnd='+Math.floor(Math.random()*10000000), "player", '320','261','9.0.0', "/zorg/dtv/web/ei.swf");
}
function displayCamInfo(camid){
	for(ind in webcamCollection) {
		if(webcamCollection[ind].cam_id == camid) {
			openInfoWindow(webcamCollection[ind]);
			break;
		}
	}
}
function getCams() {
	$.ajax({
		url: siteRoot+"backend/jams_executeCams.php?jsoncallback=?",
		dataType: 'json',
		async: false,
		success: function(data){
			for(var ind in data) {
				if(data[ind].Longtitude && data[ind].Latitude) {
					var marker = createMarker(data[ind]);
					webcamCollection.push(marker);
					map.addOverlay(marker);
					//markerManager.addMarker(marker, 0);
				}
			}
			//markerManager.addMarkers(webcamCollection, 0);
			//RefreshJams();
			var cam = DTVLocation.getValue('cam');

			if(cam > 0) {
				displayCamInfo(cam);
			} else {
				if(!getCookie('randcam')) showRandomCam();
			}
			
		}
	});  
}

function showRandomCam() {
	if(!getCookie('randcam')) setCookie('randcam', 1, "Mon, 01-Jan-2100 00:00:00 GMT", "/");
	indRnd = Math.round(Math.random()*webcamCollection.length-1);
	if( webcamCollection.length > 0 ) {
		cid = webcamCollection[indRnd].cam_id;
		displayCamInfo(cid);
	}
}

function refreshCam(cam_id) {
	var img = $("#webcam").get(0);
	if(typeof img != 'undefined') {
		img.setAttribute("src",siteRoot+'getcam.php?w=320&h=240&id='+cam_id+'&pin='+getCookie('dtv_session')+'&rnd='+Math.random());
	}
	refreshTimer = setTimeout(function() { refreshCam(cam_id) }, RefreshRate*1000);
}

function getMessages() {
	$.getJSON(siteRoot+"backend/jams_executeMessages.php?jsoncallback=?", {}, function(response){
		var data = eval(response);
		//var message = "<div>";
		var message = "";
		var MRD = "";
		var MessageDate;
		var months = new Array("января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря");
		var dy,dm,dd,dh,di;

		for(var i in data) {
			if (data[i].MessageRegistrationDate) {
				if (data[i].MessageRegistrationDate.length < 16) {
					message = "<div>Ошибка запроса сообщений о пробках :(<div>";
					return;
				} else {           
					dy = data[i].MessageRegistrationDate.substr(0, 4);
					dm = data[i].MessageRegistrationDate.substr(5, 2);
					dd = data[i].MessageRegistrationDate.substr(8, 2);
					dh = data[i].MessageRegistrationDate.substr(11, 2);
					di = data[i].MessageRegistrationDate.substr(14, 2);
					MessageDate = new Date(dy, dm, dd, dh, di);        

					if (MRD.substr(0, 10) != data[i].MessageRegistrationDate.substr(0, 10)) {
						if (MRD != "") message += "<br><br>";
						MRD = data[i].MessageRegistrationDate;          
						//message += "<b><center>" + MessageDate.getDate() + " " + months[MessageDate.getMonth() - 1] + "</center></b>";
						message += "<b><center>" + dd + " " + months[dm - 1] + "</center></b>";
					}

					message += "<p>";
					message += dh + ":" + di;

					if (data[i].MessageTitle)
					{
						message += " - ";
						message += data[i].MessageTitle;      
					}
					message += " - ";
					message += data[i].MessageContents;
				}
			}
		}
		//message += "</div>";

		//if (message == "<div></div>")
		if (message == "") {
			message = "<div>Новых сообщений о пробках нет<div>";
		}
		$("#messages_content").html(message);
	});
}

function changeRefreshRateRight () {
	if(RefreshRate < 120) {
		if (RefreshRate > 14) {
			RefreshRate *= 2;
		} else {
			RefreshRate += 5;
		}
		$("#camera_refresh_rate").html(RefreshRate.toString());	
	}
	
}
function changeRefreshRateLeft() {
	if(RefreshRate > 5) {
		if (RefreshRate < 16) {
			RefreshRate -= 5;
		} else {
			RefreshRate /= 2;
		}
		$("#camera_refresh_rate").html(RefreshRate.toString());	
	}
}

function changeRefreshRate() {
	if(!getCookie('advancedUser')) {
		setCookie('advancedUser','1');
	}
	
	if (totalUpdateTime >= 20) {
		totalUpdateTime = 0;
	}

	if (RefreshRate > 14) {
		RefreshRate *= 2;
	} else {
		RefreshRate += 5;
	}
	
	if (RefreshRate == 240) {
		RefreshRate = 5;
	}
	$("#camera_refresh_rate").html(RefreshRate.toString());
}

$(document).ready(function() {
	$('html > head').append('<link rel="alternate" type="application/rss+xml" title="Сообщения о пробках Дорога.ТВ - RSS лента" href="'+rssHref+'" />');
	//$("#content").css("height","640px");
	createCamIcon();
	$("#sm_jams").addClass('highlit');
	$('#rss_link').attr('href', rssHref);
	if(GBrowserIsCompatible()) {
		//markerManager = new GMarkerManager(map);
		map.disableScrollWheelZoom();
		RefreshJams();
	}
	getCams();
		
});