//crear el objeto server.
Server = new Host();

function CaptionList()
{
	this.Captions = new Array();
	this.Captions[0]= '&nbsp;&nbsp;' + document.getElementById('rating-label-0').value;	
	this.Captions[1]= '&nbsp;&nbsp;' + document.getElementById('rating-label-1').value;	
	this.Captions[2]= '&nbsp;&nbsp;' + document.getElementById('rating-label-2').value;	
	this.Captions[3]= '&nbsp;&nbsp;' + document.getElementById('rating-label-3').value;
	this.Captions[4]= '&nbsp;&nbsp;' + document.getElementById('rating-label-4').value;	
	this.Captions[5]= '&nbsp;&nbsp;' + document.getElementById('rating-label-5').value;
}

function setRating(id)
{
	document.getElementById('user-rating').value = id;
	changeImage(id);
	changeCaption(id);        
}
function changeImage(id)
{
	for(i=1;i<=5;i++)
	{
		if (i<=id)
			document.getElementById('rating-'+i).src = Server.URL + "images/rating-on.gif";
		else document.getElementById('rating-'+i).src = Server.URL + "images/rating-off.gif";
	}
}
function changeCaption(id)
{
	captionList = new CaptionList();
	document.getElementById('rating-caption').innerHTML = captionList.Captions[id];
}
function RatingOver(id)
{
	changeImage(0);		
	changeCaption(id);		
	for(i=1;i<=5;i++)
	{
		if (i<=id)
			document.getElementById('rating-'+i).src = Server.URL + "images/rating-on.gif";
		else document.getElementById('rating-'+i).src = Server.URL + "images/rating-off.gif";
	}
}
function RatingOut()
{
	
	for(i=1;i<=5;i++)
	{
		document.getElementById('rating-'+i).src = Server.URL + "images/rating-off.gif";
	}
	setRating(document.getElementById('user-rating').value);
}	

function SendReview()
{
	Server = new Host();
	var myConn 		= new XMLHTTPObject();	
	if (!myConn) 
	{
		alert("XMLHTTP not available. Try a newer/better browser.");
		return;
	}
	userRating = document.getElementById('user-rating').value; 
	userLanguage = document.getElementById('review-user-language').value; 
	userProductType = document.getElementById('user-producttype').value; 
	userProductCode = document.getElementById('user-productcode').value; 
	userReviewTitle = document.getElementById('reviewtitle').value; 
	userFromHost = document.getElementById('fromhost').value; 
	userCountryControl = document.getElementById('reviewcountry');
	userCountry = userCountryControl.options[userCountryControl.selectedIndex].value; 
	userId = document.getElementById('uid').value; 
	userReviewDescription = document.getElementById('reviewdescription').value;
	userName = document.getElementById('traveler_name').value;
	userEmail = document.getElementById('traveler_email').value;
	
	
	if (userRating == 0)
	{
		alert(document.getElementById('msg_please_click_to_rate').value);
		return;
	}
	if (userCountry == 0)
	{
		alert(document.getElementById('msg_empty_country').value);
		document.getElementById('msg_empty_country').focus();
		return;
	}	
	
	if (IsStringEmpty(userName))
	{
		alert(document.getElementById('msg_empty_name').value);
		document.getElementById('msg_empty_name').focus();
		return;
	}
	
	if (!isEmail('traveler_email'))
	{
		alert(document.getElementById('msg_empty_email').value);
		return;
	}
		
	if (IsStringEmpty(userReviewTitle))
	{
		alert(document.getElementById('msg_empty_title').value);
		document.getElementById('msg_empty_title').focus();
		return;
	}
	if (IsStringEmpty(userReviewDescription))
	{
		alert(document.getElementById('msg_empty_review').value);
		document.getElementById('msg_empty_review').focus();
		return;
	}
	
	var ObjRating	= document.getElementById('rating-form-container');
	ObjRating.innerHTML = '<img src="' + Server.URL + 'images/wait.gif" align="center"/>';		
	var fnWhenDone = function (oXML) {ObjRating.innerHTML=oXML.responseText;};
	myConn.connect(Server.SiteURL + "includes/ajax-transport.php", "POST", "action=" + Server.URLEncode + "save-review.php&productcode=" + userProductCode + "&producttype=" + userProductType + "&reviewtitle=" + userReviewTitle + "&reviewdescription=" + userReviewDescription + "&rating=" + userRating + "&uid=" + userId + "&fromhost=" + userFromHost + "&country=" + userCountry + "&lang=" + userLanguage + "&traveler_name=" + userName + "&traveler_email=" + userEmail, fnWhenDone);
}

function isString(id) {
	var re = /^[0-9a-zA-ZÁáÉéÍíÓóÚúÑñ\;\:\&\%\!\¡\¿\?\,\*\#\+\.\\\[\]\(\)\-\_\/\[\] ]+$/;
	if ((document.getElementById(id).value != null) && (re.test(document.getElementById(id).value))) {
		return true;
	}
	else {
		document.getElementById(id).focus();  
		return false;
	}
}

function isEmail(id) {
	var re = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	if ((document.getElementById(id).value != null) && (re.test(document.getElementById(id).value))) {
		return true;
	}
	else {
		document.getElementById(id).focus();  
		return false;
	}
}

function CancelReview()
{
	document.getElementById('review-edit-box').innerHTML = "";
	document.getElementById('review-edit-box').style.display = "none";
}

function NewReview(userProductCode, userProductType, userId, fromHost)
{
	Server = new Host();
	var myConn 		= new XMLHTTPObject();	
	if (!myConn) 
	{
		alert("XMLHTTP not available. Try a newer/better browser.");
		return;
	}
	var ObjRatingBox = document.getElementById('review-edit-box');
	ObjRatingBox.style.display = "block";
	ObjRatingBox.innerHTML = '<img src="'+ Server.URL +'images/wait.gif" align="center"/>';		
	var fnWhenDone = function (oXML) {ObjRatingBox.innerHTML=oXML.responseText;};
	
	myConn.connect(Server.SiteURL + "includes/ajax-transport.php", "POST", "action=" + Server.URLEncode + "write-review.php&productcode=" + userProductCode + "&producttype=" + userProductType + "&uid=" + userId + "&fromhost=" + fromHost + "&lang=" + document.getElementById('review-user-language').value, fnWhenDone);
}

function Vote(codReview, vote)
{
	Server = new Host();
	var myConn 		= new XMLHTTPObject();	
	if (!myConn) 
	{
		alert("XMLHTTP not available. Try a newer/better browser.");
		return;
	}
	var ObjBox = document.getElementById('review-helpful-count' + codReview);
	document.getElementById('vote-question-' + codReview).innerHTML = '<b style="color:red">' + document.getElementById('thank_you_for_your_opinion').value + '</b>';
	var fnWhenDone = function (oXML) {ObjBox.innerHTML=oXML.responseText;};
	
	myConn.connect(Server.SiteURL + "includes/ajax-transport.php", "POST", "action=" + Server.URLEncode + "vote-for-review.php&codreview=" + codReview + "&vote=" + vote , fnWhenDone);
}

function XMLHTTPObject()
{
  var xmlhttp, bComplete = false;
  try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch (e) { try { xmlhttp = new XMLHttpRequest(); }
  catch (e) { xmlhttp = false; }}}
  if (!xmlhttp) return null;
  this.connect = function(sURL, sMethod, sVars, fnDone)
  {
    if (!xmlhttp) return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();

    try {
      if (sMethod == "GET")
      {
        xmlhttp.open(sMethod, sURL+"?"+sVars, true);
        sVars = "";
      }
      else
      {
        xmlhttp.open(sMethod, sURL, true);
        xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   	    
      }
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState == 4 && !bComplete)
        {
          bComplete = true;
          fnDone(xmlhttp);
        }};
      xmlhttp.send(sVars);
    }
    catch(z) { return false; }
    return true;
  };
  return this;
}	

function IsStringEmpty( strValue ) 
{
   	var strTemp = strValue;
   	strTemp = trimAll(strTemp);
   	if(strTemp.length > 0)
   	{
   	  	return false;
   	}
   	return true;
}


function trimAll( strValue ) 
{
 	var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) 
    {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   	//check for leading & trailing spaces
   	objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   	if(objRegExp.test(strValue)) 
   	{
   	    //remove leading and trailing whitespace characters
   	    strValue = strValue.replace(objRegExp, '$2');
  	}
  	return strValue;
}