﻿function AcceptClicked()
{
    var jshidden = document.getElementById('ctl00_ContentPlaceHolder1_jsHidden');
    jshidden.value = 'js';
    return true;
}
function ZoomExtent()
{
    ZoomingIn = false;
    SetStatusText('Zooms the map the the OldhamGeneric boundary');
    Map1.SetMode(0);
    ctl00_ContentPlaceHolder1_mapCallback.Callback('ZOOMEXTENT', Map1.GetCursor());
    SetDefaultModeText();
    return false;
}
function MapPostback(id, params)
{
    ZoomingIn = false;
    if(Map1.Mode != 4 && Map1.Mode != 5)
    {
        KeyMapPostback(id, params, Map1.GetCursor());
    }
}
function KeyMapPostback(id, params)
{
    ZoomingIn = false;
    if(!ctl00_ContentPlaceHolder1_mapCallback.CallbackInProgress)
    {
        mapcursor = Map1.GetCursor();
        ctl00_ContentPlaceHolder1_mapCallback.Callback(id, params, Map1.Mode, Map1.GetCursor());
    }
}
var ZoomingIn;
function ZoomIn()
{
    ZoomingIn = true;
    IsInfoMode = false;
    Map1.SetMode(0);
    Map1.SetCursor('');
    SetModeText('You are currently using the Zoom In tool');
    return false;
}
function ZoomOut()
{
    //SetModeText('You are currently using the Zoom In tool');
    Map1.SetCursor('');
    SetDefaultModeText();
    ctl00_ContentPlaceHolder1_mapCallback.Callback('ZOOMOUT', Map1.GetCursor());
    return false;
}
function MapClicked(x, y)
{
    var ret = true;
    if(ZoomingIn)
    {
        ctl00_ContentPlaceHolder1_mapCallback.Callback('ZOOMIN', x, y, Map1.GetCursor());
        ret = false;
    }
    if(IsInfoMode)
    {
        ret = false;
        ctl00_ContentPlaceHolder1_InfoCallback.Callback("FINDITEMS", x, y, Map1.GetCursor());
    }
    return ret;
}
function ScaleChanged()
{
    var ddl = document.getElementById('ctl00_ContentPlaceHolder1_ddlScales');
    ctl00_ContentPlaceHolder1_mapCallback.Callback('SCALE', ddl.options[ddl.selectedIndex].value, Map1.GetCursor());
}
function MouseMoved()
{
	var wx = Math.round(Map1.GetWorldX(Map1.lastmouseposx));
	var wy = Math.round(Map1.GetWorldY(Map1.lastmouseposy));
	var obj = document.getElementById('coords');
	if(obj != null)
	{
	    obj.innerHTML = 'Easting: ' + Math.round(wx) + ' Northing: ' + Math.round(wy);
	}
}
function MeasureChanged()
{
	var obj = document.getElementById('ctl00_ContentPlaceHolder1_lblMeasure');
	if(obj != null)
	{
        if(Map1.Mode == 4)
		{
		    var ddl = document.getElementById('ddlUnits');
		    var isMetric = ddl.selectedIndex == 0;
		    var html = new String('');
			if(Map1.TotalLength != null)
			{
				html += "Total Length: " + GetValue(Map1.TotalLength, isMetric);
			}
			if(Map1.SegmentLength != null)
			{
				html += "<br>Last Segment: " + GetValue(Map1.SegmentLength, isMetric);
				
			}
		    obj.innerHTML = html;
		}
		else if (Map1.Mode == 5)
		{
		    var ddl = document.getElementById('ddlUnits');
		    var isMetric = ddl.selectedIndex == 0;
		    var html = new String('');
			if(Map1.Area != null)
			{
				html = "Area: " + GetArea(Math.abs( Map1.Area), isMetric);
			}
		    obj.innerHTML = html;
		}
	}
}
function GetArea(aValue, isMetric)
{
	var num = new Number(aValue);
	var isLessThan1K = num < 1000000;
	var units;
	var factor;
	if(isLessThan1K)
	{
	    factor = 1.1962867260024883;
	}
	else
	{
	    num /= 1000000;
	    factor = 0.3861979358220843;
	}
	if(!isMetric)
	{
        num *= factor;
	}
	
	if(isMetric)
	{
	    if(isLessThan1K)
	        units = ' square m';
	    else
	        units = ' square km';
	}	
	else
	{
	    if(isLessThan1K)
            units = ' square yards';
        else
	        units = ' square miles';
    }
	return Round(num) + units;

}
function GetValue(aValue, isMetric)
{
	var num = new Number(aValue);
	var isLessThan1K = num < 1000;
	var units;
	var factor;
	if(isLessThan1K)
	{
	    factor = 1.0936133;
	}
	else
	{
	    num /= 1000;
	    factor = 0.621371192;
	}
	if(!isMetric)
	{
        num *= factor;
	}
	
	if(isMetric)
	{
	    if(isLessThan1K)
	        units = ' m';
	    else
	        units = ' km';
	}
	else
	    if(isLessThan1K)
	        units = ' yards';
	    else
	        units = ' miles';
	return Round(num) + units;
}
function Round(num)
{
    var ret;
	if(num.toFixed)
	{
		ret = num.toFixed(2);
	}
	else
	{
		ret = Math.round(num);
	}
	return ret.toString();
}
function UnitsChanged()
{
    MeasureChanged();
}
function RefreshClick()
{
	var categories = ctl00_ContentPlaceHolder1_trvOverlays.Nodes()[0].Nodes();
	var OverlayStatus = new String('<overlays>');
	for(x=0;x<categories.length;x++)
	{
		var overlays = categories[x].Nodes();
		for(y=0;y<overlays.length;y++)
		{
		    OverlayStatus += '<overlay number="' + overlays[y].Value + '" visible="' + overlays[y].Checked + '">';
		    OverlayStatus += GetFeatureCodes(overlays[y].Nodes())
		    OverlayStatus += '</overlay>';
		}
	}
	OverlayStatus += '</overlays>';
	ctl00_ContentPlaceHolder1_mapCallback.Callback('OVERLAYSTATUS', encodeURI(OverlayStatus), Map1.GetCursor());
}
function GetFeatureCodes(FeatureCodes)
{
    var fString = new String('');
    if(FeatureCodes != null && FeatureCodes.length > 0)
    {                             
        for(var y = 0; y < FeatureCodes.length; y++)
        {
            fString += '<feature code="' + FeatureCodes[y].Value + '" visible="' + FeatureCodes[y].Checked + '">';
            fString += GetFeatureCodes(FeatureCodes[y].Nodes());
            fString += '</feature>';
        }
    }
    return fString;
}
function AddressSearch()
{
	var number = new String(document.getElementById('ctl00_ContentPlaceHolder1_txtBldgName').value);	
	var street = new String(document.getElementById('ctl00_ContentPlaceHolder1_txtStreet').value);	
	var postcode = new String(document.getElementById('ctl00_ContentPlaceHolder1_txtPostcode').value);
	var regexp = new RegExp(/^\s*\S.*$/);
	var numberfound = number.match(regexp);
	var streetfound = street.match(regexp);
	var postcodefound = postcode.match(regexp);
	//var retval = true;
	var retval = false;
	if(numberfound == null && streetfound == null && postcodefound == null)
	{
		//empty searech criteria
		alert('Enter some address details to search for.');
		document.getElementById('ctl00_ContentPlaceHolder1_txtBldgName').focus();
		retval = false;
	}
	else if(postcodefound != null && postcode.length <= 2)
	{
		alert('The postcode must contain at least 3 charatcers.\nA Space can be included as part of the postcode.');
		document.getElementById('ctl00_ContentPlaceHolder1_txtPostcode').focus();
		retval = false;
	}
	else if(streetfound != null && street.length <= 2)
	{
		alert('The street must contain at least 3 charatcers.');
		document.getElementById('ctl00_ContentPlaceHolder1_txtStreet').focus();
		retval = false;
	}
	else
	{
		DisableButton('ctl00_ContentPlaceHolder1_btnSearch', true);
		// Need to pass across encoded, so + / - eetc don't vanish
		// known bug in component art 
		ctl00_ContentPlaceHolder1_addressSearchCallback.Callback(number,street,postcode);
	}

	return retval;
		
}
function AddressCallbackComplete()
{
	DisableButton('ctl00_ContentPlaceHolder1_btnSearch', false)

}
function SelectedAddress(item)
{
	// Concatenate Address, X, Y, UPRN
	// known bug in component art 
	ctl00_ContentPlaceHolder1_mapCallback.Callback('SELECTADDRESS', item.Data[0], item.Data[1], item.Data[2], Map1.GetCursor());
             
     DisableButton('ctl00_ContentPlaceHolder1_btnClear', false); 
     var btn = document.getElementById('ctl00_ContentPlaceHolder1_btnClear');
     btn.onclick = function(){ClearCurrent();return false;};  

}
function Pan(Direction)
{

	ctl00_ContentPlaceHolder1_mapCallback.Callback('PAN', Direction, Map1.GetCursor());
	return false;
}
function preloadImages() 
{
		var imgarray = new Array();
		var i, a=preloadImages.arguments; 

		for(i=0; i<a.length; i++)
		{
			if (a[i].indexOf("#")!=0)
			{ 
				imgarray[i]=new Image(); 
				imgarray[i].src=a[i];
			}
		}
}
function DisableButton(ButtonId, disabled)
{
	var btn = document.getElementById(ButtonId);
	if(btn != null)
		btn.disabled = disabled;
}
function AboutClick()
{
    ctl00_ContentPlaceHolder1_AboutCallback.Callback();
}
function PrintPDF()
{
	ctl00_ContentPlaceHolder1_printcallback.Callback('PRINT',GetPaperType(), GetTitleText());
    return false;
}
function EmailPDF()
{
    var emailaddress = new String(document.getElementById('ctl00_ContentPlaceHolder1_txtEmail').value);
    var regexp = new RegExp(/^\s*\S.*$/);
    if(emailaddress.match(regexp) != null)
    {
        var message = document.getElementById('ctl00_ContentPlaceHolder1_txtEmailMessage').value;
        message = encodeURI(message);
        message = message.replace('+', '%2B');
	    ctl00_ContentPlaceHolder1_printcallback.Callback('EMAIL',GetPaperType(), GetTitleText(), emailaddress, message);
	}
	else
	{
	    alert("You must enter a recipient email address");
	    document.getElementById('ctl00_ContentPlaceHolder1_txtEmail').focus();
	}
    return false;
}
function GetPaperType()
{
	var btn = document.getElementById('ctl00_ContentPlaceHolder1_rdoLandscape');
	var Template = '';
	if(btn.checked)
		Template = 'OMBC A4 Landscape';
	else
		Template = 'OMBC A4 Portrait';
    return Template;
}
function GetTitleText()
{
    var obj = document.getElementById('titletext');
    return obj.value;
}
function HideKey()
{
    var hide = document.getElementById('ctl00_ContentPlaceHolder1_chkShowKey').checked;
    var keycontainer = document.getElementById('keycontainer');
    if(!hide)
        keycontainer.style.display = 'none';
    else
        keycontainer.style.display = 'block';
}
function SetPageIndex(index)
{
    switch(index)
    {
        case 0:
        {
            var obj = document.getElementById('MapLayersInstructions');
            obj.style.display = 'none';
            break;
        }
        case 1:
        {
             var obj = document.getElementById('MapLayersInstructions');
            obj.style.display = 'none';
            break;
       }
        case 2:
        {
            var obj = document.getElementById('MapLayersInstructions');
            obj.style.display = 'none';
            break;
        }
        case 3:
        {
            var obj = document.getElementById('MapLayersInstructions');
            obj.style.display = 'block';
            break;
        }
        case 4:
        {
            var obj = document.getElementById('MapLayersInstructions');
            obj.style.display = 'none';
            break;
        }
    }
    ctl00_ContentPlaceHolder1_mapmultipage.SetPageIndex(index);
}

function ItemSelected(item)
{
    ctl00_ContentPlaceHolder1_InfoCallback.Callback("ITEMDATA",item.Data[2], item.Data[3], item.Data[4]);
}
function Itemcallback()
{

}
function ItemCallbackComplete()
{

}
var IsInfoMode = false;
function InfoMode()
{
    IsInfoMode = true;
    ZoomingIn = false;
    var div = document.getElementById('MeasureLabelDiv');
    div.style.display = "none";
    Map1.SetCursor('help');
    SetModeText('You are currently getting feature information')
    SetPageIndex(0);
    Map1.SetMode(0);
}
function ClearCurrent()
{
     var txt = document.getElementById('ctl00_ContentPlaceHolder1_txtBldgName');
     if(txt != null)
        txt.value = '';
     txt = document.getElementById('ctl00_ContentPlaceHolder1_txtStreet');
     if(txt != null)
        txt.value = '';
     txt = document.getElementById('ctl00_ContentPlaceHolder1_txtPostcode');
     if(txt != null)
        txt.value = '';
     ctl00_ContentPlaceHolder1_mapCallback.Callback('CLEARADDRESS', Map1.GetCursor());
     DisableButton('ctl00_ContentPlaceHolder1_btnClear', true);   
    /* var grid = document.getElementById('ctl00_ContentPlaceHolder1_dgAddressResultsDiv');
     if(grid!= null)
        grid.style['visibility'] = 'hidden';*/
     
}

function MeasureLine()
{
    SetUpDrawing();
    Map1.SetCursor('crosshair');
    window.Map1.SetMode(4);
    SetModeText('You are currently Measuring a Line');

}
function MeasureArea()
{
    SetUpDrawing();
    window.Map1.SetMode(5);
    Map1.SetCursor('crosshair');
    SetModeText('You are currently Measuring an Area');
}
function SetUpDrawing()
{
    IsInfoMode = false;
    ZoomingIn = false;
    var div = document.getElementById('MeasureLabelDiv');
    div.style.display = "block";
    var info = document.getElementById('ctl00_ContentPlaceHolder1_infocontents');
    info.style.visibility = 'hidden';
    SetPageIndex(0);
	var obj = document.getElementById('ctl00_ContentPlaceHolder1_lblMeasure');
	obj.innerHTML = '';
    SetModeText('You are currently getting feature information');
}
function ResetOverlays()
{
    if(!ctl00_ContentPlaceHolder1_mapCallback.CallbackInProgress)
           ctl00_ContentPlaceHolder1_mapCallback.Callback('RESET', Map1.GetCursor());
}
function SetTreeViewChecks(OverlaysChecked)
{
    ctl00_ContentPlaceHolder1_trvOverlays.UnCheckAll();
    for(var count = 0; count < OverlaysChecked.length; count++)
    {
        var node = ctl00_ContentPlaceHolder1_trvOverlays.FindNodeById(OverlaysChecked[count]);
        node.SetProperty("Checked", true);
    }
    ctl00_ContentPlaceHolder1_trvOverlays.SaveData();
    ctl00_ContentPlaceHolder1_trvOverlays.Render();
}
/*function CursorIsCrosshair(cross)
{
    var map = document.getElementById('Map1div');
    if(cross)
        map.style.cursor = 'crosshair';
    else
        map.style.cursor = '';
}*/
function DoZoomBox()
{
    Map1.SetMode(1);
    Map1.SetCursor('crosshair');
    SetModeText('You are currently using the Zoom Box tool');
}
function ClearText()
{
    SetStatusText('');
}
function SetZoomBoxText()
{
    SetStatusText('Select this button then drag a box on the map by holding down the left mouse button. When finished release the button. The map will redraw to the area specified.');
}
function SetPanHandText()
{
    SetStatusText('Select this button then drag the map by holding down the left mouse button. When finished release the button. The map will redraw to the area specified.');
}
function SetZoomExtentText()
{
    SetStatusText('Click this button to zoom the extents of Oldham.');
}
function SetResetOverlaysText()
{
    SetStatusText('Click this button to reset the overlays to the start point. The status of the overlays will be changed back to the start point. The map will then redraw.');
}
function SetRefreshOverlaysText()
{
    SetStatusText('Click this button to update the map with the selection made in the overlays list. The map will redraw.');
}

function SetZoomInText()
{
    SetStatusText('Click this button then click the map. The map will zoom in by a factor of 2 centred on where you clicked.');
}
function SetZoomOutText()
{
    SetStatusText('Click this button to zoom out by a factor of 2.');
}
function SetMeasureLineText()
{
    SetStatusText('Click this button then click in the map. The map can be clicked multiple times. For each click a line is added and measured. Press escape to finish');
}
function SetMeasureAreaText()
{
    SetStatusText('Click this button then click in the map. The map can be clicked multiple times. For each click a vertex is added to the area and the area measured. Press Escape to finish');
}

function SetInfoText()
{
    SetStatusText('Get information: once you have selected a map layer it is possible to find out information relating to the features within the map layer.');
}
function SetPrevText()
{
    SetStatusText('Click this button to go back to the previous view. The last 3 views are stored.');
}
function SetNextText()
{
    SetStatusText('Click this button to go forward to the next view. this button is only available if the back button has been pressed');
}

function DoPanHand()
{
    Map1.SetMode(2);
    Map1.SetCursor('pointer');
    SetModeText('You are currently panning the map');
}
function SetStatusText(text)
{
    SetObjectText('StatusText', text);
}
function SetModeText(text)
{
    SetObjectText('CurrentMode', text);
}
function SetDefaultModeText()
{
    SetObjectText('CurrentMode', 'Click where you want to go on the map to re-centre it for zoom extent, for previous and next view, zoom to previous or next view.');
}
function SetObjectText(ObjectId, text)
{
    var obj = document.getElementById(ObjectId);
    if(obj != null)
    {
        obj.innerHTML = text;
    }
}
function BiggerMap()
{
    var big = document.getElementById('ctl00_ContentPlaceHolder1_chkbiggerMap').checked;
    ctl00_ContentPlaceHolder1_mapCallback.Callback('BIGMAP', big, Map1.GetCursor());
    
    var mapContaner = document.getElementById('mapcontainer');
    var keyMapContainer = document.getElementById('keycontainer');
    var panN = document.getElementById('ctl00_ContentPlaceHolder1_btnPanN');
    var panNE = document.getElementById('ctl00_ContentPlaceHolder1_btnPanNE');
    var panS = document.getElementById('ctl00_ContentPlaceHolder1_btnPanS');
    var panSE = document.getElementById('ctl00_ContentPlaceHolder1_btnPanSE');
    var panSW = document.getElementById('ctl00_ContentPlaceHolder1_btnPanSW');
    var panE = document.getElementById('ctl00_ContentPlaceHolder1_btnPanE');
    var panW = document.getElementById('ctl00_ContentPlaceHolder1_btnPanW');
    if(big)
    {
        mapContaner.className='bigmapcontainer';
        keyMapContainer.className='bigmapkeycontainer';
        panN.className = 'BigPanN';
        panNE.className = 'BigPanNE';
        panS.className = 'BigPanS';
        panSE.className = 'BigPanSE';
        panSW.className = 'BigPanSW';
        panE.className = 'BigPanE';
        panW.className = 'BigPanW';
   }
    else
    {
        mapContaner.className='mapcontainer';
        keyMapContainer.className='keycontainer';
        panN.className = 'PanN';
        panNE.className = 'PanNE';
        panS.className = 'PanS';
        panSE.className = 'PanSE';
        panSW.className = 'PanSW';
        panW.className = 'PanW';
        panE.className = 'PanE';
   }
}
function SelectBookmark()
{
    var ddl = document.getElementById('ctl00_ContentPlaceHolder1_ddlBookmarks');
    if(ddl != null)
    {
        var view = ddl.options[ddl.selectedIndex];
        mapcursor = Map1.GetCursor();
        if(view.text != "Select View")
            ctl00_ContentPlaceHolder1_mapCallback.Callback('RECALLVIEW', view.value, Map1.GetCursor());

    }

}
function Prev()
{
    SetDefaultModeText();
    Map1.SetMode(0);
    ctl00_ContentPlaceHolder1_mapCallback.Callback('PREV', Map1.GetCursor());
}
function Next()
{
    SetDefaultModeText();
    Map1.SetMode(0);

    ctl00_ContentPlaceHolder1_mapCallback.Callback('NEXT', Map1.GetCursor());
}
function DisablePrevAndNext(prevDisabled, nextDisabled)
{
    DisableButton('ctl00_ContentPlaceHolder1_btnPrev', prevDisabled);
	var btn = document.getElementById('ctl00_ContentPlaceHolder1_btnPrev');
    if(!prevDisabled)
        btn.src = 'images/backarrow.png';
    else
        btn.src = 'images/backarrowdisabled.png';
               
    DisableButton('ctl00_ContentPlaceHolder1_btnNext', nextDisabled);
    btn = document.getElementById('ctl00_ContentPlaceHolder1_btnNext');
    if(!nextDisabled)
        btn.src = 'images/forwardarrow.png';
    else
        btn.src = 'images/forwardarrowdisabled.png';

}
function GetContent(DataItem)
{
    var ret;
    if(DataItem.GetMember("Name").Value != null && DataItem.GetMember("Name").Value == "Link to further info")
    {
        ret = "<a href=\" " + DataItem.GetMember("Value").Value + "\" target=\"_blank\" >" + DataItem.GetMember("Value").Value + "</a>";
    }
    else
    {
        ret = DataItem.GetMember("Value").Value;
    }
    return ret;
}
function GetTreeNodeContent(DataItem)
{
    return "<img src=\"images/metainfo.png\" alt=\"meta info available\" height=16 width=16 />";
}
function ChangeViewBookmark()
{
	var views = document.getElementById('ctl00_ContentPlaceHolder1_ddlBookmarks');
	var bk = document.getElementById('ctl00_ContentPlaceHolder1_ddlFolders');
	views.onchange = null;
	views.options.length = 0;
	views.options.length = bookmarkArray[bk.options[bk.selectedIndex].text].length;
	
	for(x = 0; x < bookmarkArray[bk.options[bk.selectedIndex].text].length; x++)
	{
		views.options[x] = bookmarkArray[bk.options[bk.selectedIndex].text][x];
	}
	views.onchange = SelectBookmark;
}
function NodeChecked(treeNode)
{
    if(treeNode.ID.charAt(0) != 'o')
    {
        var Nodes = treeNode.Nodes();
        if(Nodes != null)
        {
            if(treeNode.Checked)
                treeNode.CheckAll();
            else
               treeNode.UnCheckAll();
               
            treeNode.ParentTreeView.Render();
        }
    }
    return false;
}
function swdChanged()
{
    var lst = document.getElementById('ctl00_ContentPlaceHolder1_lstSWDs');
    var description = document.getElementById('swddescription');
    
    description.innerHTML = swdDescriptions[lst.selectedIndex];
    
    DisableButton('ctl00_ContentPlaceHolder1_btnGo', false);
}
function infoSelected(sender, eventArgs)
{
    var item = eventArgs.get_item();
    var overlayno=item.getMember('OverlayNo').get_text();
    var itemid = item.getMember('ItemID').get_text();
    ctl00_ContentPlaceHolder1_InfoCallback.Callback("FINDITEMDATA", overlayno, itemid, Map1.GetCursor());
}