// AJAX for specific UI functions

var myPropertyContainer = "";
var systemWorking = "";
var pageruleURL = "";

function toggleWatchedUI(uid, propName, propValue){
  var icon = document.getElementById('watchIcon');
  var container = document.getElementById('watched_property');
  if(icon.src.indexOf('_off')!=-1){
    //turn the checkbox on and change the link to remove the property
    icon.src = '/template_images/layout/watch_on.gif';
  }
  else{
    //turn the checkbox off and change the link to add the property
    icon.src = '/template_images/layout/watch_off.gif';
  }
}


function forceReloadOfWatchProperties(cont,uid, propName, propValue, PropertyId){
  if(Ajax){
    var refreshPage = new Ajax.Request('/login/sendAjax',{asynchronous:true, method:'post',
                                                          onComplete:function(){
                                                              var params = 'action='+propName+'&value='+propValue+'&PropertyId='+PropertyId;
                                                              var refreshPage = new Ajax.Updater(cont,'/sendAjax',{asynchronous:true, method:'post', parameters:params});
                                                              switch(propName){
                                                                case 'cmfWatchedProperties':
                                                                  toggleWatchedUI(uid, propName, propValue);
                                                                  break
                                                                default:
                                                                  window.location.reload();
  }
                                                          }});
  }
}

function saveWatchedProperties(cont,uid, propName, propValue, PropertyId) {
  if(Ajax){
    if (uid != '') {
      url = '/admin';
      var params1 = 'action=UA-update-user&uid='+uid+'&'+propName+'='+propValue;
      new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params1, 
                            onComplete:function(){
                                  var refreshPage = new Ajax.Request('/login/sendAjax',
                                                                     {asynchronous:true, method:'post',
                                                                      onComplete:function(){
                                                                        var params = 'action='+propName+'&value='+propValue+'&PropertyId='+PropertyId;
                                                                        var refreshPage = new Ajax.Updater(cont,'/sendAjax',{asynchronous:true, method:'post', parameters:params});
                                                                        switch(propName){
                                                                          case 'cmfWatchedProperties':
                                                                            toggleWatchedUI(uid, propName, propValue);
                                                                            break
                                                                          default:
                                                                            window.location.reload();
                                                                         }
                                                                    }});
                            }}); 
    }
  }
}



function updateSavedComparisons(removeCheckBox, uid, myProperty) {
  if(Ajax){
    if (uid != ''){
      myPropertyContainer = 'my_saved_comparison';
      systemWorking = 'systemWorking3';
      pageruleURL = '/updateComparisonAjax';
      var updatedProperty = "";
      var searchesArray = myProperty.split('|');
      
      //more than one property on the list
      if(removeCheckBox.length != null){
        var isChecked = false;
        for(j=0; j<removeCheckBox.length; j++){
           if(removeCheckBox[j].checked == true){ 
              isChecked = true;
              break;
	         }
      	}
        if(isChecked)
        {	  
        for(i=0; i<removeCheckBox.length; i++){
          if(removeCheckBox[i].checked == true){
            searchesArray[removeCheckBox[i].value-1] = "";
          }
        }
        
        for(k=0; k<removeCheckBox.length; k++){
          if(searchesArray[k] != ''){
            updatedProperty = updatedProperty + searchesArray[k] + '|';
          }
        }
         url = '/admin';
         var params = 'action=UA-update-user&uid='+uid+'&cmfSavedComparisons='+escape(updatedProperty);
         var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params,
                                                 onComplete:forceReloadOfWatchedProperties,
                                                 onLoading:function(){
                                                                        Element.show(systemWorking);
                                                                        Element.hide(myPropertyContainer);
                                                                          }});
        }
      }
      //only one watched property on the list.
      else{
        if(removeCheckBox.checked == true){
           updatedProperty = "";
           url = '/admin';
           var params = 'action=UA-update-user&uid='+uid+'&cmfSavedComparisons='+updatedProperty;
	         var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
                                                   onComplete:forceReloadOfWatchedProperties,
                                                   onLoading:function(){
                                                                        Element.show(systemWorking);
                                                                        Element.hide(myPropertyContainer);
                                                                          }});

           
        }
      }
    }
  }
}

function updateSavedSearches(removeCheckBox, uid, myProperty) {
  if(Ajax){
    if (uid != ''){
      myPropertyContainer = 'my_saved_search';
      systemWorking = 'systemWorking2';
      pageruleURL = '/updateSearchAjax';
      var updatedProperty = "";
      var searchesArray = myProperty.split('|');
      
      //more than one property on the list
      if(removeCheckBox.length != null){
        var isChecked = false;
        for(j=0; j<removeCheckBox.length; j++){
           if(removeCheckBox[j].checked == true){ 
              isChecked = true;
              break;
	         }
      	}
        if(isChecked)
        {	  
        for(i=0; i<removeCheckBox.length; i++){
          if(removeCheckBox[i].checked == true){
            searchesArray[removeCheckBox[i].value-1] = "";
          }
        }
        
        for(k=0; k<removeCheckBox.length; k++){
          if(searchesArray[k] != ''){
            updatedProperty = updatedProperty + searchesArray[k] + '|';
          }
        }
         url = '/admin';
         var params = 'action=UA-update-user&uid='+uid+'&cmfSavedSearches='+escape(updatedProperty);
         var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
                                                 onComplete:forceReloadOfWatchedProperties,
                                                 onLoading:function(){
                                                                        Element.show(systemWorking);
                                                                        Element.hide(myPropertyContainer);
                                                                          }});
        }
      }
      //only one watched property on the list.
      else{
        if(removeCheckBox.checked == true){
           updatedProperty = "";
           url = '/admin';
           var params = 'action=UA-update-user&uid='+uid+'&cmfSavedSearches='+updatedProperty;
	         var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
                                                   onComplete:forceReloadOfWatchedProperties,
                                                   onLoading:function(){
                                                                        Element.show(systemWorking);
                                                                        Element.hide(myPropertyContainer);
                                                                          }});

           
        }
      }
    }
  }
}


function updateWatchedProperties(removeCheckBox, cont, uid, myProperty) {
  if(Ajax){
    if (uid != '') {
      myPropertyContainer = 'my_property';
      systemWorking = 'systemWorking1';
      pageruleURL = '/updateAjax';
      var updatedProperty = myProperty;

      //more than one property on the list
      if(removeCheckBox.length != null)
      {
        var isChecked = false;
        for(j=0; j<removeCheckBox.length; j++)
	      {
           if(removeCheckBox[j].checked == true)
	         { 
              isChecked = true;
              break;
	         }
      	}
        if(isChecked)
        {	
          for(i=0; i<removeCheckBox.length; i++)
          {
            if(removeCheckBox[i].checked == true)
            {
              var updatedProperty = removeProperty(removeCheckBox[i].value, updatedProperty);
            } 
          }	
              url = '/admin';
              var params = 'action=UA-update-user&uid='+uid+'&cmfWatchedProperties='+updatedProperty;
              var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
                                                       onComplete:forceReloadOfWatchedProperties, 
                                                       onLoading:function(){
                                                                            Element.show(systemWorking);
                                                                            Element.hide(myPropertyContainer);
                                                                              }});
        }
      }
      //only one watched property on the list.
      else
      {
	   if(removeCheckBox.checked == true)
	   {  
        var updatedProperty = removeProperty(removeCheckBox.value, updatedProperty);
	      url = '/admin';
        var params = 'action=UA-update-user&uid='+uid+'&cmfWatchedProperties='+updatedProperty;
	      var requestAjax = new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
	                                               onComplete:forceReloadOfWatchedProperties, 
	                                               onLoading:function(){
						                                                            Element.show(systemWorking);
	                                                                      Element.hide(myPropertyContainer);
	                                                                      }});
	   }
      }
    }
  }
}


function removeProperty(propId, myProp){
  var left_index = myProp.indexOf("_"+propId+":");
  var substring_right = myProp.substring(left_index);
  var right_index = substring_right.indexOf("|");
  var updatedWatchedProperties = myProp.substring(0, left_index).concat(substring_right.substring(right_index+1))
  return updatedWatchedProperties;
}

function showNewWatchProperties(req){
    var refreshPage = new Ajax.Updater(myPropertyContainer,pageruleURL,{asynchronous:true, method:'post',
                                                                      onComplete:function(){Element.show(myPropertyContainer);}});
}

//Quick Ajax updater: necessary for all calls to update user profile, shared across site
function forceReloadOfProperties(req){
  if(Ajax){
    var refreshPage = new Ajax.Request('/login/sendAjax',{asynchronous:true, method:'post',
                                                          onComplete:function(){
                                                                  Element.hide('systemWorking');
                                                                  Element.show(myPropertyContainer);
                                                                  }});
  }
}

function forceReloadOfWatchedProperties(req){
  if(Ajax){
    Element.hide(systemWorking);  
    var refreshPage = new Ajax.Request('/login'+pageruleURL,{asynchronous:true, method:'post', onComplete:showNewWatchProperties});
  }
}

function saveUserProperty(uid, propName, propValue) {
  //alert(propValue);
  if(Ajax){
    if (uid != '') {
      myPropertyContainer = 'saveThisSearch';
      systemWorking = 'systemWorking';
      url = '/admin';
      var params = 'action=UA-update-user&uid='+uid+'&'+propName+'='+propValue;
      new Ajax.Request(url,{asynchronous:true, method:'post', parameters:params, 
                            onComplete:forceReloadOfProperties,
                            onLoading:function(){
                                                 Element.hide(myPropertyContainer);
                                                 Element.show(systemWorking);
                                                }}) 
    }
  }
}

// Common Scripts used throughout the site

// ****** takes focus away from all links when clicked (IE PC only)
function blurAll() { 
 if(document.all) {
   var total = document.links.length;
   for (var n = 0; n < total; n++){
   document.links[n].onfocus=document.links[n].blur;
   }
 }
}

// ****** shows and hides content (DOM only)
  function showElement(elmnt)
  {
		if (document.getElementById(elmnt) && document.getElementById(elmnt).innerHTML != "") {
		document.getElementById(elmnt).style.visibility="visible";
		document.getElementById(elmnt).style.display="";
		}
  }
  function hideElement(elmnt)
  {
    if (document.getElementById(elmnt))
    {
      document.getElementById(elmnt).style.visibility="hidden";
      document.getElementById(elmnt).style.display="none";
    }
  }

  function toggleElement(elmnt)
  {
    var div = document.getElementById(elmnt);
    if (div.style.visibility == 'hidden')
      showElement(elmnt);
    else
      hideElement(elmnt);
  }


// ****** opens link in popup window
 function openWin(url) { 
    topL=130;
    leftL=40;
    width=540;
    height=410;    
    bar=1;      
    wName='popUp';
    width = (arguments.length>1)?arguments[1]:width; // option to pass in width
    bar = (arguments.length>2)?arguments[2]:bar; // option to turn scrollbar on
    wName = (arguments.length>3)?arguments[3]:wName; // option to pass in window name 
    height = (arguments.length>4)?arguments[4]:height; // option to pass in height       
    
    var str="toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars="+ bar +",width="+ width +",height="+ height +",screenX="+ leftL +",screenY="+ topL +",left="+ leftL +",top="+ topL +",resizable=1";
    var Pwin = window.open(url,wName,str,true)
    Pwin.focus();

}

 // ****** used for advancedSearch and SearchResults
 function addFromCheckbox(luceneField, form, fieldName) {
        var selectedCount = 0;
        var atLeastOne = false;
        var returnValue = '';
        for (i = 0; i < form.elements.length; i++) {
          if (form.elements[i].name == fieldName) {
            if(form.elements[i].checked) {
              if (!atLeastOne) {
                returnValue = ' AND '+ luceneField + ':(';
              }
              atLeastOne = true;
              if( selectedCount != 0 ) returnValue += ' OR ';
              returnValue += '"'+ form.elements[i].value + '" ';
              selectedCount++;
            }
          }
        }
        if (atLeastOne) {
          returnValue += ') ';
        }
        return returnValue;
      }











