function contains(var1, var2)
{
  return (var1.indexOf(var2) > -1);
}

String.format = function()
{
  if(arguments.length == 0) return null;
  var str = arguments[0];

  for(var i=1;i<arguments.length;i++)
  {
    var re = new RegExp('\\{' + (i-1) + '\\}','gm');
    str = str.replace(re, arguments[i]);
  }
  return str;
}

String.trim = function()
{
  if(arguments.length == 0) return null;
  var str = arguments[0];
  return str.replace(/\s+$|^\s+/g,"");
}

function checkRequired(widget)
{
  if (widget.value.length < 1)
  {
    return false;
  }
  return true;
}

function validateField(field, error){
  if (!checkRequired(field)){
    error.innerHTML = "Campo obbligatorio!";
    field.focus();
    return false;
  }else{
    error.innerHTML = "";
    return true;
  }
}

function validateFieldCK(field, error){

  var objEditor = CKEDITOR.instances[field];
  var value = objEditor.getData();

  var valueToCheck = value.replace("<br />", "")
  valueToCheck = String.trim(valueToCheck);
  if ( valueToCheck.length <=0){
    error.innerHTML = "Campo obbligatorio!";
    objEditor.focus();
    return false;
  }else{
    error.innerHTML = "";
    return true;
  }
}
 
function checkNumber(obj, div){
  var value = obj.value;
  var validChars = "0123456789";
  var isNumber=true;
  var chart;
  for (i = 0; i < value.length && isNumber == true; i++) {
    chart = value.charAt(i);
    if (validChars.indexOf(chart) == -1)
      isNumber = false;
  }
  if (isNumber == false){
    div.innerHTML = "Inserire solo valori numerici!";
  }else {
    div.innerHTML = "";
  }
  return isNumber;
  obj.focus();
}

function getCitiesByState(url, idState, idCity)
{
  var options = {
    method: 'GET',
    parameters: {
      idState: idState
    },
    onSuccess: function(t) {
      var response = t.responseJSON;
      $('idSelectCity').options.length = 1;
      if(response.currentCityList.length == 0)
        return;
      //$('idSelectCity').options[0] = new Option('Please select', 0);
      for (var j=0; j < response.currentCityList.length; j++)
      {
        var city = response.currentCityList[j];
        $('idSelectCity').options[j+1] = new Option(city.nameCity, city.id);
        if (idCity != null)
        {
          if (city.id == idCity)
          {
            $('idSelectCity').options[j+1].selected = 'selected';
          }
        }
        else
        {
          $('idSelectCity').options[0].selected = 'selected';
        }
      }
    }
  };
  new Ajax.Request(url, options);
}

function checkAjax(url, type, value, elementError, elementSuccess)
{
  var options = {
    method: 'POST',
    parameters:
    {
      value: value,
      type: type
    },
    onSuccess: function(t) {
      var response = t.responseJSON;
      if (response.error == true)
      {
        $(elementError).innerHTML = response.message;
        new Effect.Appear($(elementError),{
          duration: 0.2
        });
        new Effect.Fade($(elementSuccess),{
          duration: 0.2
        });
      }
      else
      {
        $(elementSuccess).innerHTML = response.message;
        new Effect.Appear($(elementSuccess),{
          duration: 0.2
        });
        new Effect.Fade($(elementError),{ 
          duration: 0.2
        });
      }
    }
  }
  new Ajax.Request(url, options);
}

function bannerView(url, idCampaign, idElement)
{
  url += '?idCampaign=' + idCampaign; // risolvo cosi perkè facendo dei test nella chimata ajax passando come parameters non funzionava
  new Tip(
    idElement,
    {
      title: 'Banner',
      target: $(idElement).up('td'),
      hook: {
        mouse: true,
        tip: 'leftMiddle'
      },
      ajax: {
        url: url,
        method: 'post',
        options:{
          onComplete: function(t){}
        }
      },
      width: '400px',
      height: 'auto',
      stem: 'leftMiddle',
      offset: {
        x: 10,
        y: 0
      }
    }
    );
}


function siteMobilized(idElement, text)
{
  new Tip(
    idElement,
    text,
    {
      target: $(idElement).up('td'),
      hook: {
        mouse: true,
        tip: 'rightMiddle'
      },
      width: 'auto',
      height: 'auto',
      stem: 'rightMiddle',
      offset: {
        x: -10,
        y: 0
      }
    }
    );
}

function fillLogBox(id, defaultText)
{
  if(document.getElementById(id).value == "")
  {
    document.getElementById(id).value = defaultText;
    document.getElementById(id).className = "preFill";
  }
  else if(document.getElementById(id).value == defaultText)
  {
    document.getElementById(id).value = "";
    document.getElementById(id).className = "textbox";
  }

}

function switchInput(toHide, toShow, foc){
  document.getElementById(toHide).style.display='none';
  document.getElementById(toShow).style.display='';
  if(foc == 'true') document.getElementById(toShow).focus();
}

function manageLayout(objLayout)
{
  //Seleziono Layout
  var elements = document.getElementsByName("layout");
  for(var i=0; i<elements.length; i++)
  {
    elements[i].className = (elements[i].id == objLayout.id ? "selected" : "");
  }

  var options = {
    method: 'POST',
    parameters: {
      layout: objLayout.id
    },
    onError: function(t)
    {
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      $('previewSkin').src = SITE_CONTEXT +  "previewMobilizeTemp.action";
    }
  }
  var url = SITE_CONTEXT + "changeLayout.action";
  new Ajax.Request(url, options);
}

function manageTitle(objTitle)
{
  var options = {
    method: 'POST',
    parameters: {
      mobTitle: objTitle.value
    },
    onError: function(t)
    {
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      $('previewSkin').src = SITE_CONTEXT +  "previewMobilizeTemp.action";
    }
  }

  var url = SITE_CONTEXT + "changeTitle.action";
  new Ajax.Request(url, options);
}

function selectColor(colorId, url, id, urlRefr)
{
  for (var i=1;i<=13;i++)
  {
    $("color"+i).className = "";
  }

  $(colorId).className = "selected";
  selectSkin(url,id, urlRefr);
}
function selectSkin(url,id, urlRefr)
{
  var options = {
    method: 'POST',
    parameters:
    {
      idSkin: id
    },
    onError: function(t)
    {
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      $('previewSkin').src = urlRefr;
      window.frames['previewSkin'].href = urlRefr;
      window.frames['previewSkin'].location.reload(true);
    }
  }
  new Ajax.Request(url, options);
}


function recoveryPassword(url)
{
  var options = {
               method: 'POST',
               parameters: $('recovery').serialize(true),
               onCreate: function(t){
      $('message').className = 'msgLoading';
      $('url_send').hide();
    },
               onError: function(t){
      alert(t);
    },
           onSuccess: function(t)
           {
                   var r = t.responseJSON;
                   if (r != null)
                   {
                       if (r.success == true)
                       {
                           $('message').className = 'msgSuccess';
                           $('message').innerHTML = r.message;
                       }
                       else if (r.success == false)
                       {
                           $('message').className = 'msgError';
                           $('message').innerHTML = r.message;
                       }
                   }
                   else
                   {
                       $('message').className = '';
                   }
                   new Effect.Appear($('url_send'));
           }
  }
  new Ajax.Request(url, options);
}
function transfer(url)
{
  var options = {
               method: 'POST',
               onCreate: function(t){
      $('message').className = 'msgLoading';
      $('url_send_transfer').hide();
    },
               onError: function(t){
      alert(t);
    },
           onSuccess: function(t)
           {
                   var r = t.responseJSON;
                   if (r != null)
                   {
                       if (r.error == false)
                       {
                           $('message').className = 'msgSuccess';
                           $('message').innerHTML = r.message;
                           $('idcurrentBalanceOut').innerHTML = r.currentBalanceOut;
                           $('idreceivableAccounts').innerHTML = r.receivableAccounts;
                           
                       }
                       else if (r.error == true)
                       {
                           $('message').className = 'msgError';
                           $('message').innerHTML = r.message;
                       }
                   }
                   else
                   {
                       $('message').className = '';
                   }
                   new Effect.Appear($('url_send_transfer'));
           }
  }
  new Ajax.Request(url, options);
}

function checkNameSite(url,newName, currentName)
{
  if(currentName && currentName == newName)
    return;

  var options = {
    method: 'POST',
    parameters: {
      nameSite: newName
    },
    onCreate: function(t){
    //      $('checkLink').innerHTML = spinner;
    },
    onError : function(t){
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      var response = t.responseJSON;
      if(response.result == true )
      {
        $('checkLink').style.display = 'block';

        $('checkLink').className = 'status stoped';
        $('checkLink').innerHTML = response.message;
        $('bt_136_submit').disabled = 'disabled';
      }
      else
      {
        $('checkLink').hide();
        //          $('checkLink').style.display = 'none';

        //        $('checkLink').className = 'status running';
        //        $('checkLink').innerHTML = response.message;
        $('bt_136_submit').disabled = '';
      }

    }
  };
  new Ajax.Request(url, options);
}


function getSelectedText(elementId) {
  var elt = document.getElementById(elementId);
  for (var i=0;i<elt.options.length;i++)
  {
    if (elt.options[i].selected)
      return elt.options[i].text;
  }
  return '';
}
function getSelectedValue(elementId) {
  var elt = document.getElementById(elementId);
  for (var i=0;i<elt.options.length;i++)
  {
    if (elt.options[i].selected)
      return elt.options[i].value;
  }
  return '';
}

function refreshPage()
{
  document.location.reload(true);
}


function manageImage(objImage)
{
  objImage.src = "style/img/not_found_image.png";
}


function letterMoreLeft(max, lenght)
{
  if (lenght < 0) return max;
  return (max - lenght)
}

function openWindow(path, nameWindow, widthWindow, heightWindow)
{
  heightWindow = (heightWindow ? heightWindow : 600);
  widthWindow = (widthWindow ? widthWindow : 400);
  nameWindow = (nameWindow ? nameWindow : "window");
  var PARAMS_OPTION = "height={0},width={1},left={2},top={3},status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=1";
  var left = Math.floor((screen.width-widthWindow)/2);
  var top = Math.floor((screen.height-heightWindow)/2);
  var popupWindow = window.open(path, nameWindow, String.format(PARAMS_OPTION, heightWindow, widthWindow, left, top));
  popupWindow.focus();
//popupWindow.moveTo(0,0);
//popupWindow.document.write('<H1>Popup Test!</H1>');
//return false;
}

function manageLogo(objImage, idCategory){
  idCategory = (!idCategory || idCategory == "" ? 0 : idCategory);
  objImage.src = SITE_CONTEXT + "mobilizedLogos/default/" + idCategory + ".png";
}

function deleteLogoSite(){
  var options = {
    method: 'POST',
    onError : function(t){
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      refreshPage();
    }
  };

  var url = SITE_CONTEXT + "deleteLogoSite.action";
  new Ajax.Request(url, options);
}

//function checkLogoSize(){
//  var options = {
//    method: 'POST',
//    onError : function(t){
//      var response = t.responseJSON;
//      alert('errore ' + response);
//    },
//    onSuccess: function(t) {
//      //alert("dim > 500kb");
//      //refreshPage();
//    }
//  };
//
//  var url = SITE_CONTEXT + "checkLogoSize.action";
//  new Ajax.Request(url, options);
//}

function clearDefaultTextField(objText, defaultText) {
  if(objText.value == defaultText)
    objText.value = "";
}

function setDefaultTextField(objText, defaultText) {
  if(objText.value == "")
    objText.value = defaultText;
}

//#################### VIRALITA' ##########################

function shareOnTwitter(itemName, itemTitle, message) {
  var TWITTER_POST = "http://twitter.com/home?status={0}";

  //Condizione che si verifica quando stiamo navigando un sito wapizzato
  if(!message)
    message = "Mobile version of " + itemTitle + ". " + itemName + " Powered By BidADV";

  var url = String.format(TWITTER_POST, escape(message));
  openWindow(url, 'twitterWindowShare', 800, 450);
}

function fbConnect(idSite, postOnFanPage)
{
  //  FB.ensureInit(function ()
  //  {
  //    FB.Connect.get_status().waitUntilReady(function(status) {
  //      switch ( status ) {
  //        case FB.ConnectState.connected:
  //          loggedIn = true;
  //          _postOnFacebook(idSite);
  //          break;
  //        case FB.ConnectState.appNotAuthorized: case FB.ConnectState.userNotLoggedIn:
  //          FB.Connect.requireSession();
  //          loggedIn = false;
  //      }
  //    });
  //  });

  FB.ensureInit
  (
    function ()
    {
      FB.Connect.requireSession();
      FB.Connect.showPermissionDialog('publish_stream', function(x){
        //        document.location =  forwardUrl;
        _postOnFacebook(idSite, postOnFanPage);
      });
    }
    );
}

function _postOnFacebook(idSite, postOnFanPage)
{
  var options = {
    method: 'POST',
    onError : function(t){
      var response = t.responseJSON;
      alert('errore ' + response);
    },
    onSuccess: function(t) {
      document.getElementById("messageFb").innerHTML = MESSAGE_PUBLISHED;
    }
  };

  var url = "";
  if(postOnFanPage)
    url = "postOnFacebookFanPage.action?idSite=" + idSite;
  else
    url = "postOnFacebook.action?idSite=" + idSite;
 
  new Ajax.Request(url, options);
}

function postOnTwitter(firstName, urlSite, descToPost)
{
  var message = descToPost.replace("%s", firstName);
  message = message.replace("%s", urlSite);

  shareOnTwitter("", "", message);
}
