﻿/// <reference path="http://ajax.aspnetcdn.com/ajax/$/$-1.4.4-vsdoc.js" />

String.prototype.startsWith = function (str)
{ return (this.match("^" + str) == str); };

String.prototype.endsWith = function (str)
{ return (this.match(str + "$") == str); };

String.prototype.trim = function() {
   return (this.replace( /^[\s\xA0]+/ , "").replace( /[\s\xA0]+$/ , ""));
};

function Validazione(messages) {
    $('label.required').children('strong').remove();
    $('label.required').append('<strong>&nbsp;*&nbsp;</strong>');

    $.validator.addMethod("codicefiscale", function (value, element) {
       // espressione migliorabile... ma sufficiente per il nostro esempio
       var regex = /[A-Z]{6}[\d]{2}[A-Z][\d]{2}[A-Z][\d]{3}[A-Z]/;
       return this.optional(element) || value.match(regex);
    }, messages['codicefiscale']);

    $.validator.addMethod("partitaiva", function (value, element) {
       // espressione migliorabile... ma sufficiente per il nostro esempio
       var regex = /[\d]{11}/;
       return this.optional(element) || value.match(regex);
    }, messages["partitaiva"]);

    jQuery.validator.addMethod("validazienda", function (value, element, options) {
       var labelRequired = options[0];
       var selector1 = options[1];
       var filedRequired = options[2];
       var selector2 = options[3];

       if (value.length == 0) {
          $("label[for='" + labelRequired + "'].required").children('strong').remove();
          jQuery("label[for='" + labelRequired + "']").removeClass(selector1);
          jQuery("#" + filedRequired).removeClass(selector2);
          //jQuery("#" + filedRequired).valid();
          return true;
       }

       jQuery("label[for='" + labelRequired + "']").addClass(selector1);
       $("label[for='" + labelRequired + "'].required").children('strong').remove();
       $("label[for='" + labelRequired + "'].required").append('<strong>&nbsp;*&nbsp;</strong>');
       jQuery("#" + filedRequired).addClass(selector2);
       jQuery("#" + filedRequired).valid();
       return true;
    }, "valida");

//    jQuery.validator.addMethod("required_almeno_uno", function (value, element, options) {
//       //From the options array, find out what selector matches
//       //our group of inputs and how many of them should be filled.
//       numberRequired = options[0];
//       selector = options[1];
//       var commonParent = $(element).parents('form');
//       var numberFilled = 0;
//       commonParent.find(selector).each(function () {
//          //Look through fields matching our selector and total up
//          //how many of them have been filled
//          if ($(this).val()) {
//             //if (($(this).attr("id"));
//             numberFilled++;
//          }
//       });
//       if (numberFilled >= numberRequired) {
//          //For imputs matching our selector, remove error class
//          //from their text
//          commonParent.find(selector).removeClass('error');
//          //Also look for inserted error messages and mark them
//          //with class 'checked'
//          var remainingErrors = commonParent.find(selector)
//            .next('label.error').not('.checked');
//          remainingErrors.text("").addClass('checked');
//          //Tell the Validate plugin that this test passed
//          return true;
//       }
//       //The {0} in the next line is the 0th item in the options array
//    }, messages["fiscaleoiva"]);

       //jQuery.format("$Helperpub.ViewGlossario($glossario,'errore_codicefiscaleoiva')"));

//    jQuery.validator.addClassRules("fillone", {
//       required_almeno_uno: [1, ".fillone"]
//    });

    $.validator.addMethod("selectRequired", function (value, element) {
       var $element = $(element);
       if (value == 0)
          return false;
       return true;
    }, $.validator.messages.required);

    $.validator.addMethod("alphanumericnospace", function (value, element) {
        if ((value.indexOf(" ") < 0 && value != "")) {
            var test = /^[a-zA-Z0-9._-]+$/i.test(value); // testaccent(value);
            return test;
        } else {
            return false;
        }
    }, "Lettere o numeri no spazi o caratteri accentati");

    $.validator.addMethod("customurl", function (value, element) {
        return this.optional(element) || /^(\/[\w-]+\.)+[a-z]{2,6}$/i.test(value);
    }, "url");

    $.validator.addMethod("emailRequired", function (value, element) {
        validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;

        var email = $(element).attr("value");
        if (email.search(validRegExp) == -1)
            return false;
        return true;
    }, $.validator.messages.email);

    $.validator.addMethod("equalRequired", function (value, element) {
        var pass = $("#utentecarrello_password").attr("value");
        var verifica = $(element).attr("value");
        if (verifica == '') return false;
        if (pass != verifica)
            return false;
        return true;
    }, $.validator.messages.equalTo);

    $.validator.addMethod("equalchangeRequired", function (value, element) {
        var pass = $("#nuova").attr("value");
        var verifica = $(element).attr("value");
        if (verifica == '') return false;
        if (pass != verifica)
            return false;
        return true;
    }, $.validator.messages.required);

    $.validator.addMethod("imageRequired", function (value, element) {
        return value > 0;
    }, $.validator.messages.required);
    $.validator.addMethod("PrezzoRequired", function (value, element) {
        return value > 0;
    }, $.validator.messages.required);

    $.validator.addMethod("usernameUnique", function (value, element) {
        var result = $.ajax({
            async: false,
            data: { username: value },
            type: "POST",
            url: '/ECommerceModule/EsisteUtente.ashx',
            dataType: 'text'
        });
        if (result.responseText == 'True')
            return false;
        else
            return true;
     }, messages['esiteusername']);

    jQuery.validator.addMethod("notEqualTo", function (value, element, param) {
        return this.optional(element) || value != $(param).val();
    }, $.validator.messages.required);

    jQuery.validator.addMethod("nonzero", function (value, element) {
        return this.optional(element) || value >0;
    }, $.validator.messages.required);

//    $.validator.addMethod("usernameValido", function (value, element) {
//        var result = $.ajax({
//            async: false,
//            data: { username: value },
//            type: "POST",
//            url: '/ECommerceModule/UtenteValido.ashx',
//            dataType: 'text'
//        });
//        if (result.responseText == 'nonesite')
//            return false;
//        else {
//            $(".bottoni_recuperapassword").hide();
//            $("#formrecupera2").show();
//            $("#domandasegreta").html(result.responseText);
//            $("#risposta").addClass("required");
//            return true;
//        }
//    }, $.validator.messages.required);

    $.validator.addMethod("elementoUnique", function (value, element, params) {
        var result = $.ajax({
            async: false,
            data: { codice: value, field: params },
            type: "POST",
            url: '/admin/Site/IsUnique.ashx',
            dataType: 'text'
        });
        if (result.responseText == 1)
            return false;
        else
            return true;
    }, "Valore già esistente. Deve essere unico");
}

function Popup(action, containerpost, caller, lato) {
   var container = "#container_modifiche";
   $(container).remove();
   $('body').append("<div id='container_modifiche'></div>");
    var posizionebottone = 0;
    var posizionebottoneleft = 0;
    if (caller != null) {
         posizionebottone = $("#" + caller).position().top;
         posizionebottoneleft = $("#" + caller).position().left;
      }
   var containerHeight=0;
   $(container).load(action, function () {
      containerHeight = $("#editor").height();

      var maskHeight = jQuery(document).height();
      var maskWidth = jQuery(window).width();

      var winH = jQuery(window).height();
      var winW = jQuery(window).width();

      containerHeight = jQuery(container).height();
      var containerWidth = jQuery(container).width();
      // calculate the values for center alignment
      var dialogTop = (winH / 2) - (containerHeight / 2);
      var dialogLeft = (winW / 3) - (containerWidth / 2);
      // assign values to the overlay and dialog box
      jQuery(container).css({ height: containerHeight + "px", width: containerWidth + "px" });
      jQuery(container).show();
      jQuery('#dialog-overlay').css({ height: maskHeight + "px", width: winW + "px", opacity: 0.5 }).show();
      var top = posizionebottone - containerHeight;
      if (top < 0) top = 2;
      if (lato == "sinistra") {
         jQuery(container).css({ top: top, left: posizionebottoneleft - containerWidth }).animate({ opacity: '+=1' }, 300, function () {
         });
      }
      if (lato == "destra") {
         jQuery(container).css({ top: top, left: posizionebottoneleft }).animate({ opacity: '+=1' }, 300, function () {
         });
      }
      if (lato == "") {
         jQuery(container).css({ top: dialogTop, left: dialogLeft }).animate({ opacity: '+=1' }, 300, function () {
         });
      }
      var topdiv = $(container).position().top;
      $(window).scrollTop(topdiv);
   });
}

function DialogPrint(container) {
    container = "#"+container;
   var posizionebottone = 0;
   var posizionebottoneleft = 0;

   var maskHeight = jQuery(document).height();
   var maskWidth = jQuery(window).width();

   var winH = jQuery(window).height();
   var winW = jQuery(window).width();

   var containerHeight = jQuery(container).height();
   var containerWidth = jQuery(container).width();
   // calculate the values for center alignment
   var dialogTop = (winH / 2) - (containerHeight / 2);
   var dialogLeft = (winW / 3) - (containerWidth / 2);
   // assign values to the overlay and dialog box

   jQuery(container).show();
   jQuery('#dialog-overlay').css({ height: maskHeight, width: winW, opacity: 0.5 }).show();

   jQuery(container).css({ top: dialogTop, left: dialogLeft,width:'600px',padding:'5px' }).animate({ opacity: '+=1' }, 300, function () {
   });
   var topdiv = $(container).position().top;
   $(window).scrollTop(topdiv);
}

function ClosePopup() {
    $('#container_modifiche').html("");
    $('#container_modifiche,#dialog-overlay').animate({ opacity: '-=0.5' }, 300, function () {
        $('#dialog-overlay, #container_modifiche').hide();
    });
}

function InviaEmail(action, container, message,page) {
   $.post(action, function (data) {
      if (container != null) {
         if (data == "ok") {
            $("#" + container).html(message['ok']);
            $(".ecommerce-container_sezioni").remove();
         }
         else {
            {
               $("#" + container).css({ "color": "#FF0000" });
               $("#" + container).html(message['ko']);
            }
         }
      }
      go(page);
   });
//     $("#" + container).html(result.responseText);
//
}

$(function () {
    $("#adminpage").click(function () {
        var _page = $(this).attr("rel");
        $(this).attr("target", "_blank");
        $(this).attr("href", "/Admin/index.ashx?returnurl="+_page);
    });
});
