| | 1 | var LATIN_MAP = |
|---|
| | 2 | { |
|---|
| | 3 | 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': |
|---|
| | 4 | 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I', |
|---|
| | 5 | 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': |
|---|
| | 6 | 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ý': 'Y', 'Þ': 'TH', |
|---|
| | 7 | 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': |
|---|
| | 8 | 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', |
|---|
| | 9 | 'î': 'i', 'ï': 'i', 'ð': 'o', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': |
|---|
| | 10 | 'o', 'ö': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ý': 'y', |
|---|
| | 11 | 'þ': 'th', 'ÿ': 'y', |
|---|
| | 12 | } |
|---|
| | 13 | var LATIN_SYMBOLS_MAP = |
|---|
| | 14 | { |
|---|
| | 15 | '©':'(c)', |
|---|
| | 16 | } |
|---|
| | 17 | var GREEK_MAP = |
|---|
| | 18 | { |
|---|
| | 19 | 'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8', |
|---|
| | 20 | 'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p', |
|---|
| | 21 | 'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w', |
|---|
| | 22 | 'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s', |
|---|
| | 23 | 'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i', |
|---|
| | 24 | 'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8', |
|---|
| | 25 | 'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P', |
|---|
| | 26 | 'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W', |
|---|
| | 27 | 'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I', |
|---|
| | 28 | 'Ϋ':'Y' |
|---|
| | 29 | } |
|---|
| | 30 | var TURKISH_MAP = { |
|---|
| | 31 | 'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U', |
|---|
| | 32 | 'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G', |
|---|
| | 33 | } |
|---|
| | 34 | // var RUSSIAN_MAP = |
|---|
| | 35 | // { |
|---|
| | 36 | // } |
|---|
| | 37 | |
|---|
| | 38 | var ALL_DOWNCODE_MAPS=new Array() |
|---|
| | 39 | ALL_DOWNCODE_MAPS[0]=LATIN_MAP |
|---|
| | 40 | ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP |
|---|
| | 41 | ALL_DOWNCODE_MAPS[2]=GREEK_MAP |
|---|
| | 42 | ALL_DOWNCODE_MAPS[3]=TURKISH_MAP |
|---|
| | 43 | //ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP |
|---|
| | 44 | |
|---|
| | 45 | var Downcoder = new Object(); |
|---|
| | 46 | Downcoder.Initialize = function() |
|---|
| | 47 | { |
|---|
| | 48 | if (Downcoder.map) // already made |
|---|
| | 49 | return ; |
|---|
| | 50 | Downcoder.map ={} |
|---|
| | 51 | Downcoder.chars = '' ; |
|---|
| | 52 | for(var i in ALL_DOWNCODE_MAPS) |
|---|
| | 53 | { |
|---|
| | 54 | var lookup = ALL_DOWNCODE_MAPS[i] |
|---|
| | 55 | for (var c in lookup) |
|---|
| | 56 | { |
|---|
| | 57 | Downcoder.map[c] = lookup[c] ; |
|---|
| | 58 | Downcoder.chars += c ; |
|---|
| | 59 | } |
|---|
| | 60 | } |
|---|
| | 61 | Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ; |
|---|
| | 62 | } |
|---|
| | 63 | |
|---|
| | 64 | downcode= function( slug ) |
|---|
| | 65 | { |
|---|
| | 66 | Downcoder.Initialize() ; |
|---|
| | 67 | var downcoded ="" |
|---|
| | 68 | var pieces = slug.match(Downcoder.regex); |
|---|
| | 69 | if(pieces) |
|---|
| | 70 | { |
|---|
| | 71 | for (var i = 0 ; i < pieces.length ; i++) |
|---|
| | 72 | { |
|---|
| | 73 | if (pieces[i].length == 1) |
|---|
| | 74 | { |
|---|
| | 75 | var mapped = Downcoder.map[pieces[i]] ; |
|---|
| | 76 | if (mapped != null) |
|---|
| | 77 | { |
|---|
| | 78 | downcoded+=mapped; |
|---|
| | 79 | continue ; |
|---|
| | 80 | } |
|---|
| | 81 | } |
|---|
| | 82 | downcoded+=pieces[i]; |
|---|
| | 83 | } |
|---|
| | 84 | } |
|---|
| | 85 | else |
|---|
| | 86 | { |
|---|
| | 87 | downcoded = slug; |
|---|
| | 88 | } |
|---|
| | 89 | return downcoded; |
|---|
| | 90 | } |
|---|
| | 91 | |
|---|
| | 92 | |
|---|