﻿
		var s1=null;
		var s2=null;
		var s3=null;
		var whoInitiated=null;
		var firstTimeTab5=true;
		var s1Value = 33;
		var s2Value = 33;
		var s3Value = 33;
		
		var appName = "bistrola.com";
		var appNameURL = "http://www.bistrola.com";	
		var createMeetingURL ="createMeeting.php";
		var voteURL ="vote.php";	
		var cronVoteURL = "cron-meet.php";	
		var inviteURL ="invite.php";
		var getStatsURL ="getStats.php";
		var GinviteID = null;
		var GinviteGUID = null;
				
function onFinish()	{
	if (validateMeetingSubmit(true)==false)	return;
	document.getElementById("finishButton").value ="submitting...";
	document.getElementById("finishButton").disabled="disabled";
	createInvite();					
}



function voteSelectChange()	{
	var cui_id = document.getElementById("cuisineFont2").value;
	var pri_id = document.getElementById("priceFont2").value;
	var are_id = document.getElementById("areaFont2").value;
	document.getElementById("msg").style.display="none";	
	
	if (cui_id ==0 || pri_id ==0 || are_id ==0)	return;
	
	url = getStatsURL + "?cuisine_id="+cui_id+"&price_id="+pri_id+ "&area_id="+are_id;
	
	xmlHttpOthers=GetXmlHttpObject();
	document.getElementById("msg-progress").style.display="";
	
	if (xmlHttpOthers==null)	 {
		 alert ("Browser does not support HTTP Request")
		 return;
	}

	xmlHttpOthers.onreadystatechange=voteSelectCallback; 
	xmlHttpOthers.open("GET",url,true);
	xmlHttpOthers.send(null);		
}

function voteSelectCallback()	{
	if (xmlHttpOthers.readyState==4 || xmlHttpOthers.readyState=="complete")	 {
		document.getElementById("msg-progress").style.display="none";
		var res = parseInt(xmlHttpOthers.responseText);
		if (res > 10)	res = parseInt(res/10)*10;
		var msg;
		if (res == 0)	msg = '<img src="images/alert.png" style="vertical-align:middle"><span style="color:red"> notice no selected restaurant is available for this selection</span>';
		if (res >=10)	msg = '<img src="images/info.png"  style="vertical-align:middle"> more than '+res+' restaurants match this selection';
		if (res >0 && res<10)	msg = '<img src="images/info.png"  style="vertical-align:middle"> very limited number of restaurants match this selection';
		document.getElementById("msg").innerHTML = msg;
		document.getElementById("msg").style.display="";
	}	
}	
		
		/**************************************************************************************************************/
		/**************************************************************************************************************/
		function onVote(inviteID)	{
			if (validateMeetingSubmit(false)==false)	return;
			document.getElementById("finishButton").value ="submitting...";
			document.getElementById("finishButton").disabled="disabled";
			
			GinviteID = inviteID;
			var name	 = encodeURIComponent(document.getElementById("yourname").value);
			var email	 = encodeURIComponent(document.getElementById("youremail").value);		
						
			var cuisine  = encodeURIComponent(document.getElementById("cuisineFont2").value);
			var price 	 = encodeURIComponent(document.getElementById("priceFont2").value);							
			var area = encodeURIComponent(document.getElementById("areaFont2").value);										
			var cuisineBias  = encodeURIComponent(document.getElementById("slider-input-1").value);						
			var priceBias 	 = encodeURIComponent(document.getElementById("slider-input-2").value);								
			var areaBias = encodeURIComponent(document.getElementById("slider-input-3").value);	
			
		
			url = voteURL + "?id="+inviteID	+"&name="+name+ "&email="+email;
			url =url	  + "&cuisine="+cuisine+"&price="+price+ "&area="+area;
			url =url 	  + "&cuisineBias="+cuisineBias+"&priceBias="+priceBias+"&areaBias="+areaBias;
			url = url	  + "&user_guid="+USER_GUID;
			xmlHttpOthers=GetXmlHttpObject()
			if (xmlHttpOthers==null)	 {
				 alert ("Browser does not support HTTP Request")
				 return;
			}

			xmlHttpOthers.onreadystatechange=voteCallback; 
			xmlHttpOthers.open("GET",url,true);
			xmlHttpOthers.send(null);		
		}
		
		function voteCallback()	{
			if (xmlHttpOthers.readyState==4 || xmlHttpOthers.readyState=="complete")	 {
				SetCookie('user_guid',USER_GUID);
				
				//////////////////////////////////////////////////////////
				xmlHttpOthers=GetXmlHttpObject()
				if (xmlHttpOthers==null)	 {
					 alert ("Browser does not support HTTP Request")
					 return;
				}
	
				xmlHttpOthers.onreadystatechange=null; 
				xmlHttpOthers.open("GET",cronVoteURL ,true);
				xmlHttpOthers.send(null);
						
				//alert (xmlHttpOthers.responseText);
				history.go(0);
				//window.location="http://www.taadaam.com/DS/invite.php?id="+GinviteID;
			}	
		}	

		/**************************************************************************************************************/
		/**************************************************************************************************************/
		function createInvite()	{
			var title 	 = encodeURIComponent(document.getElementById("inviteFor").value);
			var desc	 = encodeURIComponent(document.getElementById("inviteDesc").value);
			
			var location_id	 = encodeURIComponent(document.getElementById("location").value);	
			var date	 = encodeURIComponent(document.getElementById("f_date_b").value)
			
			var friends_num		= encodeURIComponent(document.getElementById("numFriends").value);
			var deadline_days	= encodeURIComponent(document.getElementById("meetingReqDays").value);
			var suggest_num		= encodeURIComponent(document.getElementById("numRec").value);			
			
			var name	 = encodeURIComponent(document.getElementById("yourname").value);
			var email	 = encodeURIComponent(document.getElementById("youremail").value);		
			var cuisine  = encodeURIComponent(document.getElementById("cuisineFont2").value);
			var price 	 = encodeURIComponent(document.getElementById("priceFont2").value);							
			var area_id = encodeURIComponent(document.getElementById("areaFont2").value);										
			var cuisineBias  = encodeURIComponent(document.getElementById("slider-input-1").value);						
			var priceBias 	 = encodeURIComponent(document.getElementById("slider-input-2").value);								
			var areaBias = encodeURIComponent(document.getElementById("slider-input-3").value);	

			url 	= createMeetingURL + "?title="+title+"&desc="+desc+"&location_id="+location_id+"&date="+date+"&friends_num="+friends_num;
			url =url+ "&deadline_days="+deadline_days+"&suggest_num="+suggest_num;
			url =url	  + "&name="+name+ "&email="+email;
			url =url	  + "&cuisine="+cuisine+"&price="+price+ "&area_id="+area_id;
			url =url 	  + "&cuisineBias="+cuisineBias+"&priceBias="+priceBias+"&areaBias="+areaBias;
			url = url	  + "&user_guid="+USER_GUID;

			xmlHttpOthers=GetXmlHttpObject()
			if (xmlHttpOthers==null)	 {
				 alert ("Browser does not support HTTP Request")
				 return;
			}

			xmlHttpOthers.onreadystatechange=createInviteCallback; 
			xmlHttpOthers.open("GET",url,true);
			xmlHttpOthers.send(null);
		}
		
		function createInviteCallback()	{
			if (xmlHttpOthers.readyState==4 || xmlHttpOthers.readyState=="complete")	 {
				var meetingGUID = xmlHttpOthers.responseText;	
				moveToInvite(meetingGUID );
			}	
		}	

		/**************************************************************************************************************/
		/**************************************************************************************************************/
		function changeLocation()	{
			xmlHttpOthers=GetXmlHttpObject()
			if (xmlHttpOthers==null)	 {
				 alert ("Browser does not support HTTP Request")
				 return;
			}
			var loc = document.getElementById("location").value;
			var selIn=document.getElementById("location").selectedIndex;
				
			var url = "getAreas.php?id="+loc;
			xmlHttpOthers.onreadystatechange=makeChangeCallback; 
			xmlHttpOthers.open("GET",url,true);
			xmlHttpOthers.send(null);
			map.drawZoomAndCenter(document.getElementById("location").options[selIn].text, 6); 
		}
		
		function makeChangeCallback()	{
			if (xmlHttpOthers.readyState==4 || xmlHttpOthers.readyState=="complete")	 { 
				document.getElementById("areaFont2").innerHTML = xmlHttpOthers.responseText;			
				
				if(document.all) { // Or any IE testing
				   document.getElementById("areaFont2").outerHTML = document.getElementById("areaFont2").outerHTML;
				}
			}	
		}	
		/**************************************************************************************************************/
		/**************************************************************************************************************/
		
		function findClosestCity(ipAddr)	{
			xmlHttpOthers=GetXmlHttpObject()
			if (xmlHttpOthers==null)	 {
				 alert ("Browser does not support HTTP Request")
				 return;
			}
				
			var url = "getDefaultLocation.php?ip="+ipAddr;
			xmlHttpOthers.onreadystatechange=findClosestCityCallback; 
			xmlHttpOthers.open("GET",url,true);
			xmlHttpOthers.send(null);
		}
		
		function findClosestCityCallback()	{
			if (xmlHttpOthers.readyState==4 || xmlHttpOthers.readyState=="complete")	 { 
				document.getElementById("location").value = xmlHttpOthers.responseText;		
				changeLocation();					
			}	
		}	
		/**************************************************************************************************************/
		/**************************************************************************************************************/

		
		
		function GetXmlHttpObject()	{
			var xmlHttp=null;
			try	 {
			 // Firefox, Opera 8.0+, Safari
			 xmlHttp=new XMLHttpRequest();
			 }	catch (e)	 {
			 //Internet Explorer
			 try	  {
			  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			  }	 catch (e)	  {
			  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			  }
			 }
			return xmlHttp;
		}
		
		function selectTab(tab, isSlider, classA)	{
			if (document.getElementById("tab1")!=null)	document.getElementById("tab1").style.display="none";
			if (document.getElementById("tab2")!=null)	document.getElementById("tab2").style.display="none";
			if (document.getElementById("tab3")!=null)	document.getElementById("tab3").style.display="none";			
			if (document.getElementById("tab4")!=null)	document.getElementById("tab4").style.display="none";
			if (document.getElementById("tab5")!=null)	document.getElementById("tab5").style.display="none";						
			document.getElementById("tab"+tab).style.display="";	
			
			if (document.getElementById("tabHeader1")!=null)	document.getElementById("tabHeader1").className ="";
			if (document.getElementById("tabHeader2")!=null)	document.getElementById("tabHeader2").className ="";			
			if (document.getElementById("tabHeader3")!=null)	document.getElementById("tabHeader3").className ="";
			if (document.getElementById("tabHeader4")!=null)	document.getElementById("tabHeader4").className ="";			
			if (document.getElementById("tabHeader5")!=null)	document.getElementById("tabHeader5").className ="";
			
			document.getElementById("tabHeader"+tab).className = classA;
			if (isSlider)	{
					if (firstTimeTab5)	{	
						setupSliders();							
						firstTimeTab5=false;
					}
					s1.recalculate();	
					s2.recalculate();
					s3.recalculate();
					
			}
			if (tab==2)				{
				var objy = document.getElementById("location");
				if (objy!=null)	objy.focus();			
			}
			if (tab==6)				document.getElementById("cuisineFont2").focus();			
			if (tab==5)				document.getElementById("yourname").focus();						
			
		}
		
		function setupSliders()	{
			s1 = new Slider(document.getElementById("slider-1"), document.getElementById("slider-input-1"));
			s1.setMaximum(100);
			s1.setMinimum(1);
			s1.setValue(s1Value);
			s1.setUnitIncrement(10);
			s1.onchange = function () {	changess(1);		};
			
			s2 = new Slider(document.getElementById("slider-2"), document.getElementById("slider-input-2"));
			s2.setMaximum(100);
			s2.setMinimum(1);
			s2.setValue(s2Value);
			s2.setUnitIncrement(10);
			s2.onchange = function () {	changess(2);		};
			
			s3 = new Slider(document.getElementById("slider-3"), document.getElementById("slider-input-3"));
			s3.setMaximum(100);
			s3.setMinimum(1);
			s3.setValue(s3Value);
			s3.setUnitIncrement(10);
			s3.onchange = function () {	changess(3);		};						
		}
				
		function changess(sliderNum)	{
			//document.getElementById("msg").innerHTML = "&nbsp;";
			if (whoInitiated!=null)	return;
			s1Value = s1.getValue();
			s2Value = s2.getValue();
			s3Value = s3.getValue();
			var totalVal = s1Value+s2Value+s3Value;	
			if (totalVal<100)	totalVal=100;
			/*var diff = 100-totalVal;
			document.getElementById("cuisineBias").innerHTML = s1Value;
			document.getElementById("priceBias").innerHTML = s2Value;
			document.getElementById("distanceBias").innerHTML = s3Value;						
			if (diff>0) {
				document.getElementById("msg").innerHTML = "<font color=grey>You still have <b>" + diff + "</b> bias points</font>";
				return;
			}
			var msg;	var valy;
			if (sliderNum==1)	{
				valy = 100-s2Value-s3Value;
				s1.setValue(valy);	
				document.getElementById("cuisineBias").innerHTML = valy;				
			}
			if (sliderNum==2)	{
				valy = 100-s1Value-s3Value;
				s2.setValue(valy);	
				document.getElementById("priceBias").innerHTML = valy;					
			}
			if (sliderNum==3)	{
				valy = 100-s2Value-s1Value;
				s3.setValue(valy);	
				document.getElementById("distanceBias").innerHTML = valy				
			}
			document.getElementById("msg").innerHTML = "<font color=red>Max allocation bias points</font>";*/
			var size1 = parseInt(100*s1Value/totalVal );
			var size2 = parseInt(100*s2Value/totalVal );
			var size3 = parseInt(100*s3Value/totalVal );
			
			document.getElementById("cuisineBias").innerHTML = size1+"%";	//getWeightCaption(size1);
			document.getElementById("priceBias").innerHTML =  size2+"%";	//getWeightCaption(size2);
			document.getElementById("areaBias").innerHTML =  size3+"%";	//getWeightCaption(size3);			
			
			/*document.getElementById("cuisineFont").style.fontSize = size1  ;
			document.getElementById("priceFont").style.fontSize = size2 ;
			document.getElementById("areaFont").style.fontSize = size3;*/
			
			/*redrawCombo("cuisineFont2", size1,size11 );
			redrawCombo("priceFont2", size2,size22);			
			redrawCombo("distanceFont2", size3,size33);*/
						
	/*document.getElementById("cuisineFont3").style.display = "none"; 
	document.getElementById("cuisineFont3").style.display = ""; 
	document.getElementById("priceFont3").style.display = "none"; 
	document.getElementById("priceFont3").style.display = ""; 
	document.getElementById("distanceFont3").style.display = "none"; 
	document.getElementById("distanceFont3").style.display = ""; */
					
					
			s1.recalculate();	
			s2.recalculate();
			s3.recalculate();

			whoInitiated = null;		
}
function updateNumFriends()	{
	var obi = document.getElementById("numFriends");
	if (obi.value != "")	return;
	var numF = parseInt(document.getElementById("numFriends2").value);
	
	obi.value = parseInt(0.8*numF);
}

function getWeightCaption(size)	{
	if (size<=25)				return 'Nice to have';
	if (size<=50 && size>25)	return 'Important';
	if (size<=75 && size>50)	return 'Important';
	if (size>75)				return 'Must have';		
}

function redrawCombo(id, size, size2)	{
	document.getElementById(id).style.fontSize = size;
	document.getElementById(id).style.height = size2;
	
	document.getElementById(id).value = 	document.getElementById(id).value;
}

function moveToInvite(guid)	{
	var targ= "http://www.bistrola.com/invite.php?id="+guid;	
	if(navigator.appName.indexOf('Microsoft')!=-1)	top.window.navigate(targ);
			else window.location.href=targ;
}
		
function emailForm(guid){		
		var title = document.getElementById("inviteFor").innerHTML;
		var TD = document.getElementById("f_date_b").innerHTML;
		var name = document.getElementById("yourname").innerHTML;
		var url = appNameURL + "/" + inviteURL + "?id="+guid;
		var numRec =document.getElementById("numRec").value;
								
		var subject = title + " (" + TD + ")";
		var body_message 		    = "Hey!\nI'm organizing a get-together for "+title+" on "+TD+" and guess what - I'm officially putting you in the loop.  ";
		body_message = body_message + "I'm using this " + appName + " service that helps meeting collaboration so that everyone gets a vote on the event. cool :-)\n";
		body_message = body_message + "So, all you gotta do is click this link and fill in your preferences:\n"+url+"\n\n";
		body_message = body_message + "Pretty soon we'll get an email from the Bistrola with "+numRec+" top suggestions of where we can meet.\n"
		body_message = body_message + "Catch you later,\n" + name;
		
		subject = escape(subject);
		body_message = escape(body_message);
		var mailto_link = 'mailto:your friends!?subject='+subject+'&body='+body_message;
		document.location.href=mailto_link;		
}


function SetCookie(cookieName,cookieValue,nDays) {
	//	alert("SetCookie: "+cookieValue);
	 var today = new Date();
	 var expire = new Date();
	 if (nDays==null || nDays==0) nDays=1;
	 expire.setTime(today.getTime() + 3600000*24*nDays);
	 document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}


function GetCookie( name ) {
		var start = document.cookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ( ( !start ) &&
		( name != document.cookie.substring( 0, name.length ) ) )			return null;
		if ( start == -1 ) return null;
		var end = document.cookie.indexOf( ";", len );
		if ( end == -1 ) end = document.cookie.length;
		var valy = unescape( document.cookie.substring( len, end ) );
		
		//alert("GetCookie:"+valy);
		return valy;
}




////////////////////////////////////////////////////
// Registration stuff							////
////////////////////////////////////////////////////
var eventTitleField = 'Event title';
var eventdateField = 'Event date';
var yournameField = 'Your name';
var numFriendsField = 'Number of friends';
var eventLocField = 'Location';
var eventCuisinField = 'Cuisine';
var eventPriceField = 'Price';
var eventAreaField = 'Area';

var alreadyFocusedonField = false;

function validateMeetingSubmit(indexBool) {
	 alreadyFocusedonField = false;
	 var reason = "";
	 if (indexBool == true)	{
	 	 if (trueEventName==false)	{
	 	 	reason += "Occasion title: please enter a meaningful name\n";
	 	 	var ooo = document.getElementById("inviteFor");
	 	 	ooo.style.borderColor = '#ff2222'; 
      		selectTab(1);
      		alreadyFocusedonField = true;	
	        ooo.focus();
	        ooo.select();	 
	 	 }
	 	 
		 var title 		= document.getElementById("inviteFor");
		 var numFriends = document.getElementById("numFriends");
		 
		 var cusiy 		= document.getElementById("cuisineFont2");
		 var pricy 		= document.getElementById("priceFont2");		 		 
		 var areay 		= document.getElementById("areaFont2");		 		 		 
	     reason += validateTextField(title, eventTitleField  );
		 if (parseInt(numFriends.value)<0 || parseInt(numFriends.value)>99)	{
		 	reason += "Number of friends: you must be seriouss on the number of friends\n";
		 	if (!alreadyFocusedonField)	{
		 	 	var ooo = document.getElementById("numFriends");
		 	 	ooo.style.borderColor = '#ff2222'; 
	      		alreadyFocusedonField = true;	
		        ooo.focus();
		        ooo.select();	 
		    }		 
		 }

		 reason += validateSelectField(cusiy, eventCuisinField );
		 reason += validateSelectField(pricy, eventPriceField );
		 reason += validateSelectField(areay, eventAreaField );
		 		 		 		 


	 }
 	 var username	= document.getElementById("yourname");	 
	 var emailID	= document.getElementById("youremail");
	 reason += validateTextField(username, yournameField );
	 reason += validateEmail(emailID);
      
     if (reason != "") {
       alert("Some fields need correction:\n" + reason);
       return false;
     }
 	return true;
}

function validateSelectField(fld, field) {
	var error = "";
 
    if (fld.value == 0) {
        fld.style.borderColor = '#ff2222'; 
        error = field + ": You didn't select anything....\n";
        
        if (!alreadyFocusedonField && field == eventLocField )		{	selectTab(2);	alreadyFocusedonField = true;	}
        if (!alreadyFocusedonField && field == eventCuisinField )	{	selectTab(4);	alreadyFocusedonField = true;	}
        if (!alreadyFocusedonField && field == eventPriceField )	{	selectTab(4);	alreadyFocusedonField = true;	}
        if (!alreadyFocusedonField && field == eventAreaField )		{	selectTab(4);	alreadyFocusedonField = true;	}                
        fld.focus();
    }
    return error;
}

function validateTextField(fld, field) {
    var error = "";
 
    if (fld.value == "") {
        fld.style.borderColor = '#ff2222'; 
        error = field + ": You didn't enter anything....\n";
        
        if (!alreadyFocusedonField && field == eventTitleField)	{	selectTab(1);	alreadyFocusedonField = true;	}
        if (!alreadyFocusedonField && field == eventdateField )	{	selectTab(2);	alreadyFocusedonField = true;	}
        fld.focus();
        fld.select();
    } else if (fld.value.length < 2) {
        fld.style.borderColor = '#ff4444'; 
        error = field +": Try to make it a more meaningful one...\n";
        if (!alreadyFocusedonField && field == eventTitleField)	{	selectTab(1);	alreadyFocusedonField = true;	}
        if (!alreadyFocusedonField && field == eventdateField )	{	selectTab(2);	alreadyFocusedonField = true;	}
        fld.focus();
        fld.select();
    } else  {
        fld.style.background = '#ffffff';
    }
    return error;
}


function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        fld.focus();
        fld.select();
        fld.style.borderColor = '#ff4444'; 
        error = "You didn't enter an email address.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.focus();
        fld.select();
        fld.style.borderColor = '#ff4444'; 
        error = "Please enter a valid email address.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.focus();
        fld.select();
        fld.style.borderColor = '#ff4444'; 
        error = "The email address contains illegal characters.\n";
    } else {
        fld.style.background = '#ffffff';
    }
    return error;
}

function showRest(url)	{
		GB_showFullScreen('Restaurant details', url);	
}



function titleClick()	{
		var ook = document.getElementById("inviteFor");
		if (ook.style.color == "gray")	{
			ook.style.color="#464646";
			ook.value = "";
			trueEventName = true;
		}	
}
