1site.forms = {}; 2 3/** 4 * ÐобавлÑÐµÑ ÑобÑÑÐ¸Ñ ÑоÑмам 5 */ 6site.forms.init = function () { 7 var forms_arr = document.getElementsByTagName('form'), 8 _self, element, i, j, form; 9 for (i = 0; forms_arr.length > i; i++) { 10 form = forms_arr[i]; 11 if (form.parentNode.className === "body") { 12 for (j = 0; form.elements.length > j; j++) { 13 element = form.elements[j]; 14 if (element.parentNode.className === "required") { 15 site.utils.events.add(element, 'change', function() { 16 _self = site.utils.isIE ? event.srcElement : this; 17 return site.forms.data.check('', _self); 18 }); 19 } 20 if (element.type == 'checkbox' && site.utils.css.checkClass(element, 'over')) { 21 site.utils.events.add(element, 'click', function() { 22 _self = site.utils.isIE ? event.srcElement : this; 23 return site.forms.checkedOver(_self); 24 }); 25 } 26 if (element.type == 'radio') { 27 if (site.utils.css.checkClass(element, 'over')) { 28 site.utils.events.add(element, 'click', function() { 29 _self = site.utils.isIE ? event.srcElement : this; 30 return site.forms.checkedOver(_self, false); 31 }); 32 } 33 else { 34 site.utils.events.add(element, 'click', function() { 35 _self = site.utils.isIE ? event.srcElement : this; 36 return site.forms.checkedOver(_self, true); 37 }); 38 } 39 } 40 } 41 form.onsubmit = function() { 42 _self = site.utils.isIE ? event.srcElement : this; 43 site.forms.data.save(_self); 44 return site.forms.data.check(_self); 45 }; 46 } 47 } 48 site.forms.data.restore(); 49 //site.forms.comments.init(); 50}; 51 52site.forms.checkedOver = function(_self, remove) { 53 var element_name, element_over, label; 54 element_name = _self.name.match(/\[([a-z_]+)\][(\[\])]*$/); 55 element_name = element_name ? element_name[1] : _self.name; 56 element_name = _self.name.replace(element_name, element_name + '_over').replace(/\[\]$/, ""); 57 element_over = document.getElementsByName(element_name); 58 element_over = element_over[0]; 59 if (element_over) { 60 if (_self.type == "checkbox" && !_self.checked) remove = true; 61 } 62 else if (!remove) this.createOver(_self.parentNode, element_name); 63 if (remove && element_over) element_over.parentNode.removeChild(element_over); 64 return true; 65}; 66 67site.forms.createOver = function(node, element_name) { 68 label = document.createElement('label'); 69 label.innerHTML = '<input type="text" name="' + element_name + '" value="" class="text" />'; 70 if (node.nextSibling === null) node.parentNode.insertBefore(label, node.nextSibling); 71 else node.parentNode.appendChild(label); 72}; 73 74site.forms.data = {}; 75 76/** 77 * ÐÑовеÑка коÑÑекÑноÑÑи Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑоÑÐ¼Ñ 78 * 79 * @param {Object} form ÐÑовеÑÑÐµÐ¼Ð°Ñ ÑоÑма 80 * @return {Boolean} РезÑлÑÑÐ°Ñ ÐºÐ¾ÑÑекÑноÑÑи Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ 81 */ 82site.forms.data.check = function (form, element) { 83 if (!form && element) { 84 if (site.utils.css.checkClass(element.parentNode, "required")) { 85 if (!site.forms.errors.check(element)) return false; 86 } 87 } 88 else { 89 var i, check_elements, checked, _err = "", element_name; 90 for (i = 0; form.elements.length > i; i++) { 91 element = form.elements[i]; 92 if (site.utils.css.checkClass(element.parentNode, "required")) { 93 if (!site.forms.errors.check(element)) return false; 94 } 95 else if (element.type == 'radio' || element.type == 'checkbox') { 96 if (site.utils.css.checkClass(element.parentNode.parentNode, "required")) { 97 element_name = element.name.match(/\[([a-z_]+)\][(\[\])]*$/); 98 element_name = element_name ? element_name[1] : element.name; 99 if (checked && this.cashe !== element_name) { 100 checked = false; 101 } 102 if (element.checked) { 103 if (site.utils.css.checkClass(element, "over")) { 104 element = element.form.elements[element.name.replace(element_name, element_name + '_over').replace(/\[\]$/, "")]; 105 if (!site.forms.errors.check(element)) return false; 106 } 107 checked = true; 108 this.cashe = element_name; 109 } 110 check_elements = element.form.elements[element.name]; 111 if (element == check_elements[check_elements.length -1]) { 112 if (!checked) _err = "Ðоле обÑзаÑелÑно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ."; 113 if (!site.forms.errors.write(_err, check_elements[0])) return false; 114 } 115 } 116 } 117 } 118 delete this.cashe; 119 } 120 return true; 121}; 122 123site.forms.data.save = function (form) { 124 if (!form && !form.id) return false; 125 var str = "", input, inputName, i, opt_str = "", o; 126 for (i = 0; i < form.elements.length; i++) { 127 input = form.elements[i]; 128 if (input.name) { 129 inputName = input.name.replace(/([)\\])/g, "\\$1"); 130 switch (input.type) { 131 case "password":break; 132 case "text": 133 case "textarea": str += 'TX,' + inputName + ',' + input.value; break; 134 case "checkbox": 135 case "radio": str += 'CH,' + inputName + '_' + i + ',' + (input.checked ? 1 : 0); break; 136 case "select-one": str += 'SO,' + inputName + ',' + input.selectedIndex; break; 137 case "select-multiple": { 138 for (o = 0; o < input.options.length; o++) { 139 if (input.options[o].selected) { 140 opt_str += input.options[o].value; 141 if (o < (input.options.length - 1)) opt_str += ":"; 142 } 143 } 144 str += 'SM,' + inputName + ',' + opt_str; break; 145 } 146 } 147 if (i < (form.elements.length - 1)) str += "+"; 148 } 149 } 150 document.cookie = "form_" + form.id + "=" + escape(str.replace(/([|\\])/g, "\\$1")); 151 return true; 152}; 153 154site.forms.data.restore = function () { 155 if (registered = document.getElementById('partner_registered')) { 156 if (registered.value == 0) this.chooseAuth(); 157 } 158 var forms = document.getElementsByTagName('form'), 159 cookie = new String(unescape(document.cookie)), 160 i, j, element, data, temp_cookie, form_cookie = {}, form_element; 161 cookie = cookie.split('; '); 162 for (i = 0; i < cookie.length; i++) {
163 if (cookie[i].indexOf("form_") == -1) delete cookie[i]; 164 else { 165 temp_cookie = cookie[i].split('='); 166 form_cookie[temp_cookie[0]] = temp_cookie[1]; 167 } 168 } 169 for (i = 0; i < forms.length; i++) { 170 if (forms[i].id) { 171 if (data = form_cookie["form_" + forms[i].id]) { 172 data = data.split('+'); 173 for (j = 0; j < data.length; j++) { 174 element = data[j].split(','); 175 form_element = forms[i].elements[element[1]]; 176 if (!element) continue; 177 switch (element[0]) { 178 case "PW": break; 179 case "TX": form_element.value = element[2]; break; 180 case "CH": { 181 form_element = forms[i].elements[element[1].replace(/^(.*_)/, '')]; 182 if (site.utils.css.checkClass(form_element, 'over') && element[2] == 1) { 183 var element_name = form_element.name.match(/\[([a-z_]+)\][(\[\])]*$/); 184 element_name = element_name ? element_name[1] : form_element.name; 185 element_name = form_element.name.replace(element_name, element_name + '_over').replace(/\[\]$/, ""); 186 site.forms.createOver(form_element.parentNode, element_name); 187 } 188 form_element.checked = (element[2] == 1) ? true : false; break; 189 } 190 case "SO": form_element.selectedIndex = element[2]; break; 191 case "SM": 192 var options = form_element.options; 193 var opt_arr = element[2].split(":"), op, o; 194 for (op = 0; op < options.length; op++) 195 for (o = 0; o < opt_arr.length; o++) 196 if (opt_arr[o] && (options[op].value == opt_arr[o])) 197 options[op].selected = true; 198 break; 199 } 200 } 201 } 202 } 203 } 204 var dev_type, studio, freelance, registered; 205 if (dev_type = document.getElementById('developer_type')) { 206 studio = document.getElementById('web-studio'); 207 freelance = document.getElementById('free-lance'); 208 switch (dev_type.value) { 209 case "65270" : { 210 studio.style.display = 'block'; 211 break; 212 } 213 case "65271" : { 214 freelance.style.display = 'block'; 215 break; 216 } 217 } 218 } 219 return true; 220}; 221 222site.forms.errors = {}; 223 224/** 225 * ÐенеÑаÑÐ¸Ñ Ð¾Ñибок 226 * 227 * @param {Object} element ÐÑовеÑÑемÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑоÑÐ¼Ñ 228 * @return {Boolean} РезÑлÑÑÐ°Ñ ÐºÐ¾ÑÑекÑноÑÑи Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ 229 */ 230site.forms.errors.check = function(element) { 231 var element_name = element.name.match(/\[([a-z_]+)\][(\[\])]*$/), 232 empty_err = "Ðоле обÑзаÑелÑно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ.", 233 _err; 234 element_name = element_name ? element_name[1] : element.name; 235 switch (element_name) { 236 case "login": { 237 this.login = element; 238 switch (element.value.length) { 239 case 0: _err = empty_err; break; 240 case 1: 241 case 2: _err = "СлиÑком коÑоÑкий логин. Ðогин должен ÑоÑÑоÑÑÑ Ð½Ðµ менее, Ñем из 3Ñ Ñимволов."; break; 242 default: { 243 if (element.value.length > 40) _err = "СлиÑком болÑÑой логин. Ðогин должен ÑоÑÑоÑÑÑ Ð½Ðµ более, Ñем из 40 Ñимволов."; 244 } 245 } 246 break; 247 } 248 case "password": { 249 this.password = element; 250 switch (element.value.length) { 251 case 0: _err = empty_err; break; 252 case 1: 253 case 2: _err = "СлиÑком коÑоÑкий паÑолÑ. ÐаÑÐ¾Ð»Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑоÑÑоÑÑÑ Ð½Ðµ менее, Ñем из 3Ñ Ñимволов."; break; 254 default: { 255 if (this.login && this.login.value == element.value) 256 _err = "ÐаÑÐ¾Ð»Ñ Ð½Ðµ должен ÑовпадаÑÑ Ñ Ð»Ð¾Ð³Ð¸Ð½Ð¾Ð¼."; 257 } 258 } 259 break; 260 } 261 case "password_confirm": { 262 if (element.value.length == 0) _err = empty_err; 263 else if (this.password && this.password.value !== element.value) { 264 _err = "ÐаÑоли Ð´Ð¾Ð»Ð¶Ð½Ñ ÑовпадаÑÑ."; 265 } 266 break; 267 } 268 case "email": { 269 if (element.value.length == 0) _err = empty_err; 270 else if (!element.value.match(/.+@.+\..+/)) _err = "ÐекоÑÑекÑнÑй e-mail."; 271 break; 272 } 273 default: { 274 if (element.name.match(/^.*e.*mail.*$/) && element.name != 'email_to') { 275 if (!element.value.match(/.+@.+\..+/)) _err = "ÐекоÑÑекÑнÑй e-mail."; 276 } 277 if (element.type == 'text' && site.utils.css.checkClass(element, 'int')) { 278 if (!element.value.match(/^[\d]+$/)) _err = "ÐопÑÑÑÐ¸Ð¼Ñ Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð° ÑолÑко ÑиÑÑÑ."; 279 } 280 if (element.value.length == 0) _err = empty_err; 281 } 282 } 283 return site.forms.errors.write(_err, element); 284}; 285 286site.forms.errors.write = function (_err, element) { 287 var cont = element.parentNode.parentNode; 288 var formErr = (site.utils.isIE) ? $(cont).getElementsByClassName('formErr') : cont.querySelectorAll('.formErr'); 289 if (formErr.length) cont.removeChild(formErr[0]); 290 if (_err) { 291 var err_block = document.createElement('div'); 292 err_block.className = "formErr"; 293 err_block.style.fontSize = '11px'; 294 err_block.style.color = 'red'; 295 err_block.innerHTML = _err; 296 cont.appendChild(err_block); 297 element.focus(); 298 return false; 299 } 300 return true; 301}; 302 303site.utils.events.add(window, 'load', function(){return site.forms.init();});
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.