// JavaScript Document

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }



var slider;

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}


function MM_showHideLayers() { //v6.0
	var args=MM_showHideLayers.arguments;
	if (args.length < 5) {
		alert("Internal Error");
		return;
	}
	
	var evt = (args[3]) ? args[3] : ((window.event) ? window.event : "");
	if (evt) {
		/* Which element was clicked? */
		var thisObject = (isIE()) ? evt.srcElement: evt.target;
		if (thisObject != null) {
			for (i=0; i<(args.length-2); i+=3) 
			if ((obj=MM_findObj(args[i]))!=null) {
				v=args[i+2];
				if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
				obj.visibility=v;
							
				if (v == 'visible') {
					if (slider == null) {
									slider = YAHOO.widget.Slider.getHorizSlider("sliderbg", "sliderthumb", 50, 50, 25);
									slider.subscribe("change", displayNewValue); 
									slider.animate = false;
					}
					
					var topOffset = 5;
					var leftOffset = (isIE()) ? 70: (args[4] + 70);
					obj.top = findPosY(thisObject) - topOffset + "px";
					obj.left = findPosX(thisObject) - leftOffset + "px";
				} 
				slider.setValue(0,true,false);
		 	} //if ((obj=MM_findObj(args[i]))!=null)
		} //if (thisObject != null)
	}
}

function MM_showHideLayers2() { //v6.0
  var i,p,v,top,left,obj,args=MM_showHideLayers2.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; 
	if (v == 'visible') {
		if (args[3]) { obj.top = args[3] + "px" }; 
	    if (args[4]) { obj.left = args[4] + "px" }; 
	 } else {
			 	
	 }
	}
}

function showHelp(id,visibility, event) { 

	MM_showHideLayers('helpLayer','',visibility, event, 0);

  var help_anchor_obj = document.getElementById('help_anchor');
  var hidden_help_anchor_obj = document.getElementById('hidden_help');
  var help_obj = document.getElementById(id);

  if (visibility == 'show') {
    var newHelpObj = document.createElement('div');
    newHelpObj.innerHTML = help_obj.innerHTML;
    help_anchor_obj.appendChild(newHelpObj);
  } else {
    if ( help_anchor_obj.hasChildNodes() ) {
      while ( help_anchor_obj.childNodes.length >= 1 ){
        help_anchor_obj.removeChild( help_anchor_obj.firstChild );       
      } 
    }
  }
	
}

/* Long story, short hack. See area_layout.jsp for more info */
function showAreaHelp(id,visibility, event) { 
  MM_showHideLayers('areaHelpLayer','',visibility, event, 0);
  var help_anchor_obj = document.getElementById('help_anchor');
  var hidden_help_anchor_obj = document.getElementById('hidden_help');
  var help_obj = document.getElementById(id);

  if (visibility == 'show') {
    var newHelpObj = document.createElement('div');
    newHelpObj.innerHTML = help_obj.innerHTML;
    help_anchor_obj.appendChild(newHelpObj);
  } else {
    if ( help_anchor_obj.hasChildNodes() ) {
      while ( help_anchor_obj.childNodes.length >= 1 ){
        help_anchor_obj.removeChild( help_anchor_obj.firstChild );       
      } 
    }
  }
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function displayNewValue() {
  // determine the actual value from the offset
  // var newVal = (offsetFromStart + myStartVal * myScale);
  var valueNow = slider.getValue();
  //alert(valueNow);
  if (valueNow == '-50') 
  	document.getElementById("currentRating").innerHTML = 'Poor :(';
  else if (valueNow == '-25') 
  	document.getElementById("currentRating").innerHTML = 'Average';
  else if (valueNow == '0') 
  	document.getElementById("currentRating").innerHTML = 'Good!';
  else if (valueNow == '25') 
  	document.getElementById("currentRating").innerHTML = 'Very Good!!';
  else 
  	document.getElementById("currentRating").innerHTML = 'Excellent!!!';
  
  
  // If animation is turned on this event fires continuously during the animation.
  // You can evaluate the moveComplete property to determine if the animation
  // is complete.  Alternatively, use the slideEnd event.
  if (this.moveComplete) {
	  
  }
}

// used to hold the user name and comment when the user has entered these
// details for a business
var userName;
var userComment;
var rating;

// tbd: use this function for other places where starRatings are set.
function setStarRating(ratingType) {
  var ratingConter;
  var starRating = 0;
  // Reset
  for (ratingCounter = -50; ratingCounter <= 50; ratingCounter = ratingCounter + 25) {
    ++starRating;
    var ratingElem = document.getElementById(starRating + ratingType);
    ratingElem.setAttribute('src','images/greystar.gif');
  }

  // Set
  starRating = 0;
  for (ratingCounter = -50; ratingCounter <= rating; ratingCounter = ratingCounter + 25) {
    ++starRating;
    var ratingElem = document.getElementById(starRating + ratingType);
    ratingElem.setAttribute('src','images/goldstar.gif');
  }
}

function saveComment() {

  // the type of form for identification
  formType = "rating";

  createXMLHttpRequest();

  // get the user's name
  userName = document.commentForm.user_name.value; 

  if(userName == "") userName = 'Guest';
  
  // the user's comment
  userComment = document.commentForm.user_comment.value; 
  userComment = userComment.replace(/\n/g,"<br/>");

  // this could be empty too as the user may only be giving a rating

  // get this rating
  rating = slider.getValue(); 

  // the rating for this business
  var bizId = document.commentForm.bizId.value;

  responseDiv = document.getElementById("saveCommentResponse");
  
  responseDiv.innerHTML = "Saving....";  

  // alert();

  // save this comment
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=addComment&rating_comment=" +
    escape(userComment) + "&score=" + rating + "&biz_id=" + bizId + "&user_name=" + escape(userName));
  
  xmlHttp.send(null);
}

function sendEmail() {

  createXMLHttpRequest();

  // get the rcpt email(s)
  var rcpt = document.emailForm.sendTo.value;

  if(rcpt == "") { alert('Please enter your friend\'s email address'); return; }

  if(!checkEmail(rcpt)) {
    alert(
      'The email address you have entered for your friend is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }

  // get the sender's email
  var sender = document.emailForm.sendFrom.value;

  if(sender == "") { alert('Please enter your email address'); return; }

  if(!checkEmail(sender)) {
    alert(
      'The email address you have entered for yourself is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }

  // the rest of the fields are optional
  var senderName = document.emailForm.senderName.value;
  
  // create message
  var message = document.emailForm.message.value; 

  // the business name
  var bizName = document.emailForm.bizName.value;

  // the business id
  var bizId = document.emailForm.bizId.value;

  var suffix = "http://www.mycitybuddy.com/biz.do?id=" + bizId + 
               "\r\n\r\nRegards,\r\n\r\nTeam at MyCityBuddy.com.\r\nSearch Bangalore City!";

  if(message == "") {
    message = "Hello!\r\n\r\n";
    message += "Your friend " + senderName +
               " thought that you would like to know the details of " + bizName +
               " on MyCityBuddy.com.\r\n\r\n" +
               "See full details here: " + suffix;
  } else {

    message += "\r\n\r\nDetails of " + bizName + "\r\n" + suffix;
  }

  responseDiv = document.getElementById("sendEmailResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send this email
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=sendEmail&sender=" +
    sender + "&rcpt=" + rcpt + "&senderName=" + escape(senderName) + "&message=" +
    escape(message) + "&subject=" + escape("Details of " + bizName));
  
  xmlHttp.send(null);
}

function sendToPhone() {

  createXMLHttpRequest();

  // get the mobile number to send info to
  var rcpt = document.phoneForm.cellNo.value;

  if(rcpt == "" || isNaN(rcpt) || (rcpt.length != 10)) { 
    alert('Please enter a valid 10 digit mobile number'); return; 
  }

  // the business id
  var bizId = document.phoneForm.bizId.value;

  responseDiv = document.getElementById("sendPhoneResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send this sms
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=sendSMS&rcpt=" + rcpt + "&biz=" + bizId);
  
  xmlHttp.send(null);
}

function sendCorrection() {

  createXMLHttpRequest();

  // the rcpt email(s) - send to administrator
  var rcpt = "admin@mycitybuddy.com";

  // get the sender's name
  var senderName = document.correctionForm.senderName.value;

  if(senderName == "") senderName = "Unknown";

  // get the sender's email
  var senderEmail = document.correctionForm.senderEmail.value;

  if(senderEmail == "") { alert('Please enter your email address'); return; }

  if(!checkEmail(senderEmail)) {
    alert(
      'The email address you have entered is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }
 
  // get the correction
  var correction = document.correctionForm.correction.value;

  if(correction == "") { alert('Please enter the correction!'); return; }

  // the business name
  var bizName = document.correctionForm.bizName.value;

  // the business id
  var bizId = document.correctionForm.bizId.value;

  var message = 
    "Correction submitted for " + bizName +
    " http://www.mycitybuddy.com/biz.do?id=" + bizId + " by " + senderName + 
    " (" + senderEmail + ")\r\n\r\n" + correction;

  responseDiv = document.getElementById("correctionResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send this email
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=sendEmail&sender=" +
    senderEmail + "&rcpt=" + rcpt + "&senderName=" + escape(senderName) + "&message=" +
    escape(message) + "&subject=" + escape("Correction for " + bizName));
  
  xmlHttp.send(null);
}

function sendOwnerMessage() {

  createXMLHttpRequest();

  // the rcpt email(s) - send to administrator
  var rcpt = "admin@mycitybuddy.com";

  // get the owners's name
  var senderName = document.ownerMessageForm.ownerName.value;

  if(senderName == "") senderName = "Unknown";

  // get the sender's email
  var senderEmail = document.ownerMessageForm.ownerEmail.value;

  if(senderEmail == "") {
    alert('Please enter your email address so that we can contact you for confirmation');
    return; 
  }

  if(!checkEmail(senderEmail)) {
    alert(
      'The email address you have entered is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }
 
  // get the owners message
  var ownersMessage = document.ownerMessageForm.ownerMessage.value;

  if(ownersMessage == "") { alert('Please enter your message!'); return; }

  // the business name
  var bizName = document.ownerMessageForm.bizName.value;

  // the business id
  var bizId = document.ownerMessageForm.bizId.value;

  var message = 
    "Owner Message submitted for " + bizName +
    " http://www.mycitybuddy.com/biz.do?id=" + bizId + " by " + senderName + 
    " (" + senderEmail + ")\r\n\r\n" + ownersMessage;

  responseDiv = document.getElementById("ownerMessageResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send this email
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=sendEmail&sender=" +
    senderEmail + "&rcpt=" + rcpt + "&senderName=" + escape(senderName) + "&message=" +
    escape(message) + "&subject=" + escape("Owners Message for " + bizName));
  
  xmlHttp.send(null);
}

function sendMessageToBiz() {

  createXMLHttpRequest();

  // the rcpt email(s) - sending to a business
  var rcpt = document.contactBizLayerForm.bizEmail.value;

  // get the sender's name
  var senderName = document.contactBizLayerForm.userName.value;

  if(senderName == "") senderName = "Unknown";

  // get the sender's email
  var senderEmail = document.contactBizLayerForm.userEmail.value;

  if(senderEmail == "") {
    alert('Please enter your email address so that the business owner can contact you back');
    return; 
  }

  if(!checkEmail(senderEmail)) {
    alert(
      'The email address you have entered is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }
 
  // get the owners message
  var contactMessage = document.contactBizLayerForm.userMessage.value;

  if(contactMessage == "") { alert('Please enter your message!'); return; }

  // the business name
  var bizName = document.contactBizLayerForm.bizName.value;

  // the business id
  var bizId = document.contactBizLayerForm.bizId.value;

  var message = 
    contactMessage +
    "\r\n\r\nSent by " + senderName + " (" + senderEmail +")" +
    "\r\n\r\nSent from: http://www.mycitybuddy.com";

  responseDiv = document.getElementById("userMessageResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send by sms or email?
  if(document.contactBizLayerForm.chkSMSBiz && document.contactBizLayerForm.chkSMSBiz.checked) {
    rcpt = document.contactBizLayerForm.bizCell.value;

    // send via SMS
    xmlHttp.open(
      "GET", 
      "/ajaxhandler.do?dispatch=sendFreeFormSMS&rcpt=" + rcpt + "&msg=" + escape(message));    
  } else {
  
    // send this email
    xmlHttp.open(
      "GET", 
      "/ajaxhandler.do?dispatch=sendEmail&sender=" +
      senderEmail + "&rcpt=" + rcpt + "&senderName=" + escape(senderName) + "&message=" +
      escape(message) + "&subject=" + escape("Message sent from MyCityBuddy.com"));
  }
  
  xmlHttp.send(null);
}

function sendFeedback() {

  formType = "feedback";

  createXMLHttpRequest();

  // the rcpt email(s) - send to administrator
  var rcpt = "admin@mycitybuddy.com";

  // get the sender's name
  var senderName = document.contactUsForm.senderName.value;

  if(senderName == "") {
    alert('Please enter your name');
    return; 
  }

  // get the sender's email
  var senderEmail = document.contactUsForm.senderEmail.value;

  if(senderEmail == "") {
    alert('Please enter your email address so that we can contact you if required.');
    return; 
  }

  if(!checkEmail(senderEmail)) {
    alert(
      'The email address you have entered is not valid. ' +
      'Are you sure you have entered it correctly?');
    return; 
  }
 
  // get the comments
  var comments = document.contactUsForm.comments.value;

  if(comments == "") { alert('Please enter your message!'); return; }

  var message = 
    "Feedback form submitted by " + senderName + 
    " (" + senderEmail + ")\r\n\r\n" + comments;

  responseDiv = document.getElementById("commentsResponse");
  
  responseDiv.innerHTML = "Sending....";  

  // send this email
  xmlHttp.open(
    "GET", 
    "/ajaxhandler.do?dispatch=sendEmail&sender=" +
    senderEmail + "&rcpt=" + rcpt + "&senderName=" + escape(senderName) + "&message=" +
    escape(message) + "&subject=" + escape("MCB feedback submitted"));
  
  xmlHttp.send(null);
}

function foo() {
  alert("Test OK");
}
