| | 1 | var LATIN_MAP = |
|---|
| | 2 | { |
|---|
| | 3 | 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'Ã |
|---|
| | 4 | ': 'A', 'Ã': 'AE', 'Ã': |
|---|
| | 5 | 'C', 'Ã': 'E', 'Ã': 'E', 'Ã': 'E', 'Ã': 'E', 'Ã': 'I', 'Ã': 'I', 'Ã': 'I', |
|---|
| | 6 | 'Ã': 'I', 'Ã': 'D', 'Ã': 'N', 'Ã': 'O', 'Ã': 'O', 'Ã': 'O', 'Ã': 'O', 'Ã': |
|---|
| | 7 | 'O', 'Ã': 'O', 'Ã': 'U', 'Ã': 'U', 'Ã': 'U', 'Ã': 'U', 'Ã': 'Y', 'Ã': 'TH', |
|---|
| | 8 | 'Ã': 'ss', 'à ':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'À': 'a', 'Ã¥': 'a', 'Ê': |
|---|
| | 9 | 'ae', 'ç': 'c', 'Ú': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'Ã': 'i', |
|---|
| | 10 | 'î': 'i', 'ï': 'i', 'ð': 'o', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'Î': 'o', 'õ': |
|---|
| | 11 | 'o', 'ö': 'o', 'Þ': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'Ì': 'u', 'Ü': 'y', |
|---|
| | 12 | 'ß': 'th', 'ÿ': 'y', |
|---|
| | 13 | } |
|---|
| | 14 | var LATIN_SYMBOLS_MAP = |
|---|
| | 15 | { |
|---|
| | 16 | '©':'(c)', |
|---|
| | 17 | } |
|---|
| | 18 | var GREEK_MAP = |
|---|
| | 19 | { |
|---|
| | 20 | 'α':'a', 'β':'b', 'γ':'g', 'Ύ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'Ξ':'8', |
|---|
| | 21 | 'ι':'i', 'κ':'k', 'λ':'l', 'ÎŒ':'m', 'Μ':'n', 'Ο':'3', 'ο':'o', 'Ï':'p', |
|---|
| | 22 | 'Ï':'r', 'Ï':'s', 'Ï':'t', 'Ï |
|---|
| | 23 | ':'y', 'Ï':'f', 'Ï':'x', 'Ï':'ps', 'Ï':'w', |
|---|
| | 24 | 'ά':'a', 'Î':'e', 'ί':'i', 'Ï':'o', 'Ï':'y', 'ή':'h', 'Ï':'w', 'Ï':'s', |
|---|
| | 25 | 'Ï':'i', 'ΰ':'y', 'Ï':'y', 'Î':'i', |
|---|
| | 26 | 'Î':'A', 'Î':'B', 'Î':'G', 'Î':'D', 'Î':'E', 'Î':'Z', 'Î':'H', 'Î':'8', |
|---|
| | 27 | 'Î':'I', 'Î':'K', 'Î':'L', 'Î':'M', 'Î':'N', 'Î':'3', 'Î':'O', 'Î ':'P', |
|---|
| | 28 | 'Ρ':'R', 'Σ':'S', '΀':'T', 'Υ':'Y', 'Ί':'F', 'Χ':'X', 'Κ':'PS', 'Ω':'W', |
|---|
| | 29 | 'Î':'A', 'Î':'E', 'Î':'I', 'Î':'O', 'Î':'Y', 'Î':'H', 'Î':'W', 'Ϊ':'I', |
|---|
| | 30 | 'Ϋ':'Y' |
|---|
| | 31 | } |
|---|
| | 32 | var TURKISH_MAP = { |
|---|
| | 33 | 'Å':'s', 'Å':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ã':'C', 'ÃŒ':'u', 'Ã':'U', |
|---|
| | 34 | 'ö':'o', 'Ã':'O', 'Ä':'g', 'Ä':'G', |
|---|
| | 35 | } |
|---|
| | 36 | // var RUSSIAN_MAP = |
|---|
| | 37 | // { |
|---|
| | 38 | // } |
|---|
| | 39 | |
|---|
| | 40 | var ALL_DOWNCODE_MAPS=new Array() |
|---|
| | 41 | ALL_DOWNCODE_MAPS[0]=LATIN_MAP |
|---|
| | 42 | ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP |
|---|
| | 43 | ALL_DOWNCODE_MAPS[2]=GREEK_MAP |
|---|
| | 44 | ALL_DOWNCODE_MAPS[3]=TURKISH_MAP |
|---|
| | 45 | //ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP |
|---|
| | 46 | |
|---|
| | 47 | var Downcoder = new Object(); |
|---|
| | 48 | Downcoder.Initialize = function() |
|---|
| | 49 | { |
|---|
| | 50 | if (Downcoder.map) // already made |
|---|
| | 51 | return ; |
|---|
| | 52 | Downcoder.map ={} |
|---|
| | 53 | Downcoder.chars = '' ; |
|---|
| | 54 | for(var i in ALL_DOWNCODE_MAPS) |
|---|
| | 55 | { |
|---|
| | 56 | var lookup = ALL_DOWNCODE_MAPS[i] |
|---|
| | 57 | for (var c in lookup) |
|---|
| | 58 | { |
|---|
| | 59 | Downcoder.map[c] = lookup[c] ; |
|---|
| | 60 | Downcoder.chars += c ; |
|---|
| | 61 | } |
|---|
| | 62 | } |
|---|
| | 63 | Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ; |
|---|
| | 64 | } |
|---|
| | 65 | |
|---|
| | 66 | downcode= function( slug ) |
|---|
| | 67 | { |
|---|
| | 68 | Downcoder.Initialize() ; |
|---|
| | 69 | var downcoded ="" |
|---|
| | 70 | var pieces = slug.match(Downcoder.regex); |
|---|
| | 71 | if(pieces) |
|---|
| | 72 | { |
|---|
| | 73 | for (var i = 0 ; i < pieces.length ; i++) |
|---|
| | 74 | { |
|---|
| | 75 | if (pieces[i].length == 1) |
|---|
| | 76 | { |
|---|
| | 77 | var mapped = Downcoder.map[pieces[i]] ; |
|---|
| | 78 | if (mapped != null) |
|---|
| | 79 | { |
|---|
| | 80 | downcoded+=mapped; |
|---|
| | 81 | continue ; |
|---|
| | 82 | } |
|---|
| | 83 | } |
|---|
| | 84 | downcoded+=pieces[i]; |
|---|
| | 85 | } |
|---|
| | 86 | } |
|---|
| | 87 | else |
|---|
| | 88 | { |
|---|
| | 89 | downcoded = slug; |
|---|
| | 90 | } |
|---|
| | 91 | return downcoded; |
|---|
| | 92 | } |
|---|
| | 93 | |
|---|
| | 94 | |
|---|