1( function ( $ ) { 2 SS6ShopBundleComponentConstraintsUniqueCollection = function ( ) { 3 var self = this; 4 this.message = ''; 5 this.fields = null; 6 this.allowEmpty = false; 7 this.validate = function ( value ) { 8 var result = [ ]; 9 $.each ( value, function ( key1, value1 ) { 10 $.each ( value, function ( key2, value2 ) { 11 if ( key1 !== key2 && areValuesEqual ( value1, value2 ) ) { 12 result = self.message; 13 } 14 } ); 15 } ); 16 return result; 17 }; 18 function areValuesEqual ( value1, value2 ) { 19 if ( self.allowEmpty ) { 20 if ( value1 === null || value1 === '' || value2 === null || value2 === '' ) { 21 return false; 22 } 23 } 24 if ( self.fields === null ) { 25 return value1 === value2; 26 } 27 else { 28 return areValuesEqualInFields ( value1, value2 ); 29 } 30 } 31 function areValuesEqualInFields ( value1, value2 ) { 32 for ( var i = 0; i < self.fields.length; i ++ ) { 33 var field = self.fields[i]; 34 if ( ! areValuesSame ( value1[field], value2[field] ) ) { 35 return false; 36 } 37 } 38 return true; 39 } 40 function areValuesSame ( value1, value2 ) { 41 if ( value1 instanceof Array && value2 instanceof Array ) { 42 return ( value1.length === value2.length ) && value1.every ( function ( element, index ) { 43 return element === value2[index]; 44 } ); 45 } 46 else { 47 return value1 === value2; 48 } 49 } 50 }; 51} ) ( jQuery );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.