///////////////////////////////////
//////////////////////////////////
// All rights reserved to Amadot(ZBN) Ltd. (c) 
// Google Maps handling version 2.0
// forms handling
// last update -  26/04/11
/////////////////////////////////
MAPS.Forms = {};


////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////  Input marker Form //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
MAPS.Forms.InputForm = {};
MAPS.Forms.InputForm.setBlockerHeight = function()
{
	//document.getElementById(MAPS.DivNames.blocker).style.height = document.body.scrollHeight;
	//document.getElementById(MAPS.DivNames.blocker).style.width = document.body.scrollWidth;
	var elem = document.getElementById(MAPS.DivNames.blocker);
	var newH = document.body.scrollHeight + "px";
	var newW = document.body.scrollWidth + "px";
	elem.style.height =  newH;
	elem.style.width = newW;
}
MAPS.Forms.InputForm.show = function()
{
	document.getElementById(MAPS.DivNames.blocker).style.display = "block";	
	document.getElementById(MAPS.DivNames.formDiv).style.display = "block";
}	

MAPS.Forms.InputForm.hide = function()
{
	document.getElementById(MAPS.DivNames.blocker).style.display = "none";	
	document.getElementById(MAPS.DivNames.formDiv).style.display = "none";
}

MAPS.Forms.InputForm.generateForm = function()
{
	
	var strA = new Array();
	strA.push("<center><u><b>Type of Marker:</b></u></center><br><br>")
	for (var type in MAPS.Icons.arr)
	{
		strA.push("<input type='radio' name='markerType' value='"+type+"'/>&nbsp;&nbsp;<img src='"+MAPS.Icons.arr[type].gifSrc+"'>&nbsp;&nbsp;<font style='font-size:14px;'>"+type+"</font><br/>");
	}
	document.getElementById(MAPS.DivNames.markerTypeDiv).innerHTML = strA.join("");
	
}

MAPS.Forms.InputForm.saveMarker = function()
{
	//var what2do = MAPS.Parse.trim(document.forms['markerForm'].what2do.value);
	var what2do = (MAPS.Markers.editableMarkerNum != null ? 'edit' : 'insert' );
	var name = MAPS.Parse.trim(document.forms['markerForm'].name.value);	
	
	///// name //////
	if (name == '')
	{
		alert('Please insert a name');
		return;	
	}
	if(what2do == 'insert')
	{
		if (MAPS.Markers.isNameExists(name))
		{
			alert('Name already exists!\nPlease insert a different name');
			return;	
		}
	}
	
	///// type //////
	var type = '';
	var radios = document.forms['markerForm'].markerType.length;
	for (var i=0;i<radios;i++)
	{
		if (document.forms['markerForm'].markerType[i].checked)	
			type = document.forms['markerForm'].markerType[i].value;		
	}
	if (type == '')
	{
		alert('Please choose type');
		return;	
	}
	
	
	///// other data //////
	var comment = MAPS.Parse.trim(document.forms['markerForm'].comment.value);		
	var markUrl = MAPS.Parse.trim(document.forms['markerForm'].markUrl.value);		
	var address1 = MAPS.Parse.trim(document.forms['markerForm'].address1.value);	
	var address2 = MAPS.Parse.trim(document.forms['markerForm'].address2.value);	
	var telephone = MAPS.Parse.trim(document.forms['markerForm'].telephone.value);	
	var openings = MAPS.Parse.trim(document.forms['markerForm'].openings.value);	
	
	var ratingSource = '';
	var rating = '';
	for (var i=0;i<document.forms['markerForm'].rating.length;i++)
	{
		if (document.forms['markerForm'].rating[i].checked)	
			rating = document.forms['markerForm'].rating[i].value;		
	}
	if (rating.toLowerCase() != 'none')
		ratingSource = MAPS.Parse.trim(document.forms['markerForm'].ratingSource.value);		
		
	
	///// days //////	
	var sun = document.forms['markerForm'].sun.checked ? 1 : 0;
	var mon = document.forms['markerForm'].mon.checked ? 1 : 0;
	var tue = document.forms['markerForm'].tue.checked ? 1 : 0;
	var wed = document.forms['markerForm'].wed.checked ? 1 : 0;
	var thr = document.forms['markerForm'].thr.checked ? 1 : 0;
	var fri = document.forms['markerForm'].fri.checked ? 1 : 0;
	var sat = document.forms['markerForm'].sat.checked ? 1 : 0;
	
	var days = {
		sun : sun,
		mon : mon,	
		tue : tue,
		wed : wed,
		thr : thr,
		fri : fri,
		sat : sat
	}
	
	/////importance 
	var importance = 0;
	for (var i=0;i<document.forms['markerForm'].importance.length;++i)
	{
		if (document.forms['markerForm'].importance[i].checked) importance = parseInt(document.forms['markerForm'].importance[i].value);		
	}
	
	///// saving marker's data (local) //////
	if (what2do == 'insert')
	{
		//creating the new marker object	
		new MAPS.Markers.markerObj(MAPS.Markers.tempPoint,0, type,comment,name,markUrl,address1,address2,telephone,openings,rating,ratingSource,'null','null', days, importance);
		MAPS.Markers.editableMarkerNum = (MAPS.Markers.arr.length-1); 
	}
	else //edit
	{
		MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].reSetVars(type,comment,name,markUrl,address1,address2,telephone,openings,rating,ratingSource, days, importance);
	}
	
	
	///// saving marker's data (server) //////
	MAPS.Parse.insertToDb(MAPS.Markers.arr[MAPS.Markers.editableMarkerNum],what2do);
	
	//re-counting the markers (w/ marker manager)
	MAPS.MarkersMNG.findVisibleMarkers();
	
	///// Hiding & resetting the form, some objects //////
	MAPS.Forms.InputForm.hide();
	MAPS.Forms.InputForm.reset();
	
}

MAPS.Forms.InputForm.editMarker = function(markerNum)
{
	///// Showing the form //////
	MAPS.Forms.InputForm.show();
	
			//document.forms['markerForm'].what2do.value = 'update';
	///// Showing the form //////
	document.forms['markerForm'].name.disabled = true;
	//document.getElementById('deleteBtn').style.display = "block";
	document.getElementById('deleteBtn').style.visibility = "visible";
	document.getElementById('cngName').style.visibility = "visible";
	
	//retrieving the marker
	var markObj = MAPS.Markers.arr[markerNum];
	
	//showing the 'delete polygon' btn if neccesary
	if ((markObj.polygon != null) && (markObj.polygon))
	{
		document.getElementById('deletePoly').style.visibility = "visible";	
		document.getElementById('editPolygon').value = 'Edit Polygon';
		MAPS.Overlays.Polygon.tempObj = markObj.polygon;
		
	}
	
	//setting the fields
	document.forms['markerForm'].comment.value = markObj.comment;
	for (var i=0;i<document.forms['markerForm'].markerType.length;i++)
	{
		if (markObj.type == document.forms['markerForm'].markerType[i].value)	
			document.forms['markerForm'].markerType[i].checked = true;
		else	
			document.forms['markerForm'].markerType[i].checked = false;
	}
	document.forms['markerForm'].name.value = markObj.name;
	document.forms['markerForm'].markUrl.value = markObj.markUrl;
	document.forms['markerForm'].address1.value = markObj.address1;
	document.forms['markerForm'].address2.value = markObj.address2;
	document.forms['markerForm'].telephone.value = markObj.telephone;
	document.forms['markerForm'].openings.value = markObj.openings;
	document.forms['markerForm'].ratingSource.value = markObj.ratingSource ;
	for (var i=0;i<document.forms['markerForm'].rating.length;i++)
	{
		if (markObj.rating == document.forms['markerForm'].rating[i].value)	
			document.forms['markerForm'].rating[i].checked = true;
		else	
			document.forms['markerForm'].rating[i].checked = false;
	}
	
	// days	
    document.forms['markerForm'].sun.checked = document.forms['markerForm'].sun.defaultChecked = markObj.sun ? true : false;
    document.forms['markerForm'].mon.checked = document.forms['markerForm'].mon.defaultChecked = markObj.mon ? true : false;
    document.forms['markerForm'].tue.checked = document.forms['markerForm'].tue.defaultChecked = markObj.tue ? true : false;
    document.forms['markerForm'].wed.checked = document.forms['markerForm'].wed.defaultChecked = markObj.wed ? true : false;
    document.forms['markerForm'].thr.checked = document.forms['markerForm'].thr.defaultChecked = markObj.thr ? true : false;
    document.forms['markerForm'].fri.checked = document.forms['markerForm'].fri.defaultChecked = markObj.fri ? true : false;
    document.forms['markerForm'].sat.checked = document.forms['markerForm'].sat.defaultChecked = markObj.sat ? true : false;
	
	// importance
	var importance = markObj.importance;
	if (importance != 0) document.forms['markerForm'].importance[importance-1].checked = true;
	
}

MAPS.Forms.InputForm.reset = function()
{
	document.forms['markerForm'].comment.value = '';
	document.forms['markerForm'].name.value = '';
	document.forms['markerForm'].markUrl.value = '';
	document.forms['markerForm'].address1.value = '';
	document.forms['markerForm'].address2.value = '';
	document.forms['markerForm'].telephone.value = '';
	document.forms['markerForm'].openings.value = '';
	document.forms['markerForm'].ratingSource.value = '';
	document.forms['markerForm'].rating[0].checked = true;
	//document.forms['markerForm'].what2do.value = "insert";
	//document.getElementById('deleteBtn').style.display = "none";
	document.getElementById('deleteBtn').style.visibility = "hidden";
	document.getElementById('deletePoly').style.visibility = "hidden";		
	document.getElementById('cngName').style.visibility = "hidden";
	document.forms['markerForm'].name.disabled = false;
	
	//resetting days
	document.forms['markerForm'].sun.checked = true;
	document.forms['markerForm'].mon.checked = true;
	document.forms['markerForm'].tue.checked = true;
	document.forms['markerForm'].wed.checked = true;
	document.forms['markerForm'].thr.checked = true;
	document.forms['markerForm'].fri.checked = true;
	document.forms['markerForm'].sat.checked = true;
	
	//resetting importance  (by zeev)
	document.forms['markerForm'].importance[0].checked = true;
	
	document.getElementById('editPolygon').value = 'Add Polygon';
	
	//resetting some objects
	///// resetting some objects //////
	MAPS.Markers.tempPoint = null;
	MAPS.Markers.editableMarkerNum = null;
}

MAPS.Forms.InputForm.changeName = function()
{
	var newName = prompt("Enter a new name:", MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].name);
	if (newName != null)
	{
		newName = MAPS.Parse.trim(newName);
		MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].name = MAPS.Parse.trim(MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].name);
		if (newName != MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].name)
		{
			var answer = confirm("are you sure you want to change the name to:"+newName+"?");
			if (answer && !MAPS.Markers.isNameExists(newName))
			{
				MAPS.Parse.changeMarkerName(MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].dbId,newName);	//db update
				MAPS.Markers.arr[MAPS.Markers.editableMarkerNum].name = newName //local update
				document.forms['markerForm'].name.value = newName;//form update
			}
		}
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////  show Markers Form //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
MAPS.Forms.ShowMarkersForm = {};
MAPS.Forms.ShowMarkersForm.Init = function()
{
	var htmlA = new Array();
	htmlA.push("<form action='' method='get' name='showMarkersForm' id='showMarkersForm'>");
	htmlA.push("<b><u>Show these categories</u></b>&nbsp;<font id='markersCount'></font><br/>");
	htmlA.push("&nbsp;&nbsp;&nbsp;<input type='checkbox' name='allMarkeres' value='all' checked onclick='javascript:MAPS.Markers.showAllMarkers(this.checked)'>&nbsp;&nbsp;<font class='colorBlue1 font12'>Select/Deselect All</font><br/>");
	for (var type in MAPS.Icons.arr)
	{
		htmlA.push("<input type='checkbox' name='markerType' value='"+type+"' checked onclick=\"javascript:MAPS.Markers.setMarkersOnMap('"+type+"',this.checked)\"><img src='"+MAPS.Icons.arr[type].gifSrc+"' width='14' height='14'>&nbsp;&nbsp;<font class='font12'>"+type+"</font><br/>");
	}
	htmlA.push("</form>");
	
	document.getElementById(MAPS.DivNames.ShowMarkersDiv).innerHTML = htmlA.join("");
}



////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////  Search Results //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
MAPS.Forms.searchResults = {};
MAPS.Forms.searchResults.show = function()
{
	document.getElementById(MAPS.DivNames.searchResults).style.display = "block";
}
MAPS.Forms.searchResults.hide = function()
{
	document.getElementById(MAPS.DivNames.searchResults).style.display = "none";
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////  HELP Div //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
MAPS.Forms.helpDiv = {};
MAPS.Forms.helpDiv.show = function()
{
	document.getElementById(MAPS.DivNames.blocker).style.display = "block";	
	document.getElementById(MAPS.DivNames.helpDiv).style.display = "block";
}
MAPS.Forms.helpDiv.hide = function()
{
	document.getElementById(MAPS.DivNames.blocker).style.display = "none";	
	document.getElementById(MAPS.DivNames.helpDiv).style.display = "none";
}
MAPS.Forms.helpDiv.set = function()
{
	///////positioning the div considering user's resolution
	var _width = 800;
	var newLeft = (MAPS.screenX-_width)/2;
	var newTop = 5; //distance from top of screen
	var _height = MAPS.screenY - newTop - 50;
	document.getElementById(MAPS.DivNames.helpDiv).style.left = newLeft + "px";
	document.getElementById(MAPS.DivNames.helpDiv).style.top = newTop + "px";	
	document.getElementById(MAPS.DivNames.helpDiv).style.height = _height + "px";	
	
}

////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////  writeMe Div //////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
MAPS.Forms.writeMeDiv = {};
MAPS.Forms.writeMeDiv.show = function ()
{
    MAPS.Forms.InputForm.setBlockerHeight();
    document.getElementById(MAPS.DivNames.blocker).style.display = "block";
    document.getElementById(MAPS.DivNames.writeMeDiv).style.display = "block";
}
MAPS.Forms.writeMeDiv.hide = function()
{
	document.getElementById(MAPS.DivNames.blocker).style.display = "none";	
	document.getElementById(MAPS.DivNames.writeMeDiv).style.display = "none";
}
MAPS.Forms.writeMeDiv.set = function()
{
	///////positioning the div considering user's resolution
	var newLeft = (MAPS.screenX/2) -340 ;
	var newTop = 5; //distance from top of screen
	document.getElementById(MAPS.DivNames.writeMeDiv).style.left = newLeft + "px";
	document.getElementById(MAPS.DivNames.writeMeDiv).style.top = newTop + "px";	
}

MAPS.Forms.writeMeDiv.checkForm = function()
{
	if (MAPS.Parse.trim(document.getElementById('writerName').value) == '')
	{alert('Please write your name'); return;}
	if (MAPS.Parse.trim(document.getElementById('emailTitle').value) == '')
	{alert('Please write a title'); return;}
	if (MAPS.Parse.trim(document.getElementById('emailContent').value) == '')
	{alert('You do have to write something...'); return;}
	var emailValue = document.getElementById('writerEmail').value;
	if (MAPS.Parse.trim(emailValue) != '')
	{
		var emailRegExp = new RegExp(/^[\w-_\&.]+\@[\w-_]+\.+[\w-_.]+$/)
		//var emailPat=/^[\w-_\&.]+\@[\w-_]+\.+[\w-_.]+$/;
		//var result = emailValue.match(emailPat)	
		if (!emailRegExp.test(emailValue))
		{
			alert("Email address seems incorrect ( should be a@b.c )");
			return;
		}
	}
	MAPS.Forms.writeMeDiv.send();
}

MAPS.Forms.writeMeDiv.reset = function()
{
	document.getElementById('writerName').value = '';
	document.getElementById('emailTitle').value = '';
	document.getElementById('emailContent').value = '';
	document.getElementById('writerEmail').value = '';
}

MAPS.Forms.writeMeDiv.send = function ()
{
    var writerName = document.getElementById('writerName').value;
    var emailTitle = document.getElementById('emailTitle').value;
    var emailContent = document.getElementById('emailContent').value;
    var writerEmail = document.getElementById('writerEmail').value;

    var data = MAPS.startJsonArray("writeMe");
    data["data"] = new Array();
    MAPS.Parse.encodeToJson(data["data"], "from", writerName);
    MAPS.Parse.encodeToJson(data["data"], "subject", emailTitle);
    MAPS.Parse.encodeToJson(data["data"], "body", emailContent);
    data["data"]["email"] = writerEmail;

    MAPS.sendAjax(MAPS.toJson(data), new EVENTS.Handler(MAPS.Forms.writeMeDiv.response));

    MAPS.Forms.writeMeDiv.reset();
    MAPS.Forms.writeMeDiv.hide();
}

MAPS.Forms.writeMeDiv.response = function (response)
{
    if (!response.json || !response.json.amadot.data)
    {
        alert("Error sending your message");
        return;
    }

    if (response.json.amadot.data === 'true')
        alert("Your message was sent");
    else
        alert("Error sending your message");
}
