/* Universal functions */
function redirect(url)
{
	window.location = url;
}

function isArray(elem)
{
	if (typeof elem == 'object' && typeof elem.constructor != 'undefined')
	{
		var criterion = elem.constructor.toString().match(/array/i);
		return (criterion != null);
	}
	return false;
}

/* Zebra Tables striper */

function stripe(className) {

	var evenColor = arguments[1] ? arguments[1] : null;
    var oddColor = arguments[2] ? arguments[2] : null;

	var tables = document.getElementsByClassName(className);	
	
	for(var x = 0; x < tables.length; x++)
	{
		var table = tables[x];
		if (!table) { return; }
		
		var tbodies = table.getElementsByTagName("tbody");
		
		for (var h = 0; h < tbodies.length; h++) 
		{
			var even = true;
			
			var trs = tbodies[h].getElementsByTagName("tr");
			for (var i = 0; i < trs.length; i++)
			{
				if (trs[i].className != 'no-stripe')
				{
					if ( even )
					{
						if ( evenColor != null )
						{
							tds = trs[i].getElementsByTagName("td");
							for (var j=0; j < tds.length; j++)
							{
								tds[j].style.backgroundColor = evenColor;
							}
						}
						else if (trs[i].className.length == 0)
						{
							trs[i].className = "even";
						}
					}
					else
					{
						if ( oddColor != null)
						{
							tds = trs[i].getElementsByTagName("td");
							for (var j=0; j < tds.length; j++)
							{
								tds[j].style.backgroundColor = oddColor;
							}
						}
					}
					
					/*trs[i].onmouseover=function()
					{
						this.className += " ruled";
						return false;
					}
					trs[i].onmouseout=function()
					{
						this.className = this.className.replace("ruled", "");
						return false;
					}*/
				
					even = !even;
				}
		    }
		}
	}
}
function renewGrid(tableName)
{
	var grid = document.getElementsByClassName(tableName)[0];
	Element.removeClassName(grid, tableName);
	var trs = document.getElementsByClassName('even');
	for (var j=0; j<trs.length; j++)
	{
		Element.removeClassName(trs[j], 'even');
	}
	Element.addClassName(grid, tableName);
	stripe(tableName);
}

/* Grid Elements */

function select_all(el, el_name, hasEvent)
{
	var state = el.checked;
	var elements = document.getElementsByName(el_name);
	for (var i=0; i<elements.length; i++)
	{
		elements[i].checked = state;
	}
	if (hasEvent)
	{
		var chb_values = new Array();
		for (var i=0; i<elements.length; i++)
		{
			chb_values.push(elements[i].value);
		}
		chb_event(chb_values, el);
	}
}

function getAllChecked(el_name)
{
	var elements = document.getElementsByName(el_name);
	var checked = new Array();
	for (var i=0; i<elements.length; i++)
	{
		if (elements[i].checked)
		{
			checked.push(elements[i]);
		}
	}
	return checked;
}

/* Add Form checkup */

function check_town(param)
{
	$('showsub').style.display = param.options[param.selectedIndex].value == '12' ? 'block' : 'none';
}

function check_add_form()
{
	var curr_param;
	eval("var req_params_obj = new Object(" + document.getElementsByName('req_fields')[0].value + ")");
	for (var i in req_params_obj)
	{
		curr_param = document.getElementsByName('param' + i)[0];
		if (typeof curr_param != 'undefined')
		{
			if (curr_param.value.length == 0 || curr_param.value == null)
			{
				alert('Укажите параметр "' + req_params_obj[i] + '"');
				return false;
			}
			else if (i == '1234') // check for phone
			{
				if (curr_param.value.length < 5)
				{
					alert('Параметр "Телефон" должен содержать не менее 5 символов');
					return false;
				}
				else if (!curr_param.value.match(/^[0-9\-+().,:; / ]*$/))
				{
					alert('Параметр "Телефон" не принимает буквенные значения');
					return false;
				}
			}
		}
	}

	eval("var num_params_obj = new Object(" + document.getElementsByName('num_fields')[0].value + ")");
	for (var i in num_params_obj)
	{
		curr_param = document.getElementsByName('param' + i)[0];
		if (typeof curr_param != 'undefined' && (curr_param.value.length > 0 && !curr_param.value.match(/^[0-9\. ]*$/)))
		{
			alert('Параметр "' + num_params_obj[i] + '" принимает только числовые значения');
			return false;
		}
	}
	
	if(!document.getElementById('agree').checked == true)
	{
		alert('Вы не приняли пользовательское соглашение, объявление не будет добавлено');
		return false;
	}
	return true;
}

function reset_indicators(indic_list)
{
	for (var i=0; i<indic_list.length; i++)
	{
		$('indicator_'+indic_list[i]).style.color = '#666';
	}
}

function add_photo_box(param_label, param_id, editing)
{
	imgCount = editing ? eval('param' + param_id + '_image_count') : 0;
	var boxCount = document.getElementsByClassName('photo-param' + param_id).length;
	var beforeSible = document.getElementsByClassName('photo-param' + param_id)[boxCount - 1].parentNode.parentNode;
	var maxImg = 6;
	if (boxCount < maxImg - imgCount)
	{
		var nph_tr = document.createElement('tr');
		var nph_td_one = document.createElement('td');
		nph_td_one.appendChild(document.createTextNode(param_label + ' ' + (boxCount + 1) + ': '));
		var nph_td_two = document.createElement('td');
		var nph_input = document.createElement('input');
		nph_input.setAttribute("type", "file");
		nph_input.setAttribute("name", "param" + param_id + '[]');
		nph_input.className = 'photo-param' + param_id;
		nph_input.style.width = '220px';
		nph_td_two.appendChild(nph_input);
		nph_tr.appendChild(nph_td_one);
		nph_tr.appendChild(nph_td_two);
		$('addonparam').insertBefore(nph_tr, beforeSible.nextSibling);
	}
}

function rem_photo_box(param_id, rem_all)
{
	var amount = rem_all ? 0 : 1;
	var boxes = document.getElementsByClassName('photo-param' + param_id);
	if (boxes.length > amount)
	{
		var last_elem = boxes[boxes.length-1];
		$('addonparam').removeChild(last_elem.parentNode.parentNode);
	}
}

/************************ HELP FUNCTIONS ************************/

function redirectToUrl(var_name, var_value, to_remove)
{
	var url = document.location.href;

	if (getQueryVariable(var_name) != false)
	{
		var query = buildQuery(var_name, var_value, to_remove);
		if (query != false)
		{
			var new_url = url.split("?")[0] + '?' + query;
			document.location.href = new_url;
		}
	}
	else
	{
		var sign = (document.location.search.substring(1) != '')? '&' : '?';
		window.location = url + sign + var_name + '=' + var_value;
	}
}

function getQueryVariable(variable) 
{
	var query = document.location.search.substring(1);
	var vars = query.split("&");
	var pair;
	for (var i=0; i<vars.length; i++) 
	{
		pair = vars[i].split("=");
		if (pair[0] == variable) return pair[1];
	}
	return false;
}

function buildQuery(variable, new_value, var_for_remove)
{
	var query = document.location.search.substring(1);
	var vars = query.split("&");
	var pair;
	var set_new_var = false;
	var remove_var = false;

	if (variable != null && new_value != null)
	{
		for (var i=0; i<vars.length; i++) 
		{
			pair = vars[i].split("=");
			if (pair[0] == variable)
			{
				pair[1] = new_value;
				vars[i] = pair.join("=");
				break;
			}
		}
		set_new_var = true;
	}

	if (var_for_remove)
	{
		for (var i=0; i<vars.length; i++) 
		{
			pair = vars[i].split("=");
			if (pair[0] == var_for_remove)
			{
				vars.splice(i,1);
				break;
			}
		}
		remove_var = true;
	}

	if (set_new_var || remove_var)
	{
		query = vars.join("&");
		return query;
	}

	return false;
}
function expandcontent(imgN,cid, key)
{
	var temp = document.getElementById(cid);
	switch (imgN)
	{
		case 'arrowkey':
			var openimg = 'arrow_open.gif';
			var closeimg = 'arrow_close.gif';
		break;
		default:
			var openimg = 'minus.gif';
			var closeimg = 'plus.gif';
		break;
	}
	if (typeof(temp) != 'undefined')
		if(temp.style.display!="block")
		{
			temp.style.display="block";
			if(imgN != null) document.getElementsByName(imgN)[key].src= full_url + '/images/' + openimg;
		}
		else 
		{
			temp.style.display="none"; 
			if(imgN != null) document.getElementsByName(imgN)[key].src= full_url + '/images/' + closeimg;
		}
}
/* Add Form Select Box Options Links */
function optlink(el, optlinks)
{
	this.add = function()
	{
		var beforeElemCells = this.beforeElement.getElementsByTagName('td');
		var lastCell = beforeElemCells[beforeElemCells.length - 1];

		// get param
		var paramIds = this.paramIds.join();
		var beforeElement = this.beforeElement;
		var url = 'index.php?catalog=noindex&inner=processor';
		var params = 'op=get-param&annc=' + paramIds;
		var ajaxHandler = new Ajax.Request(url, { method: 'post', parameters: params, onComplete:
		function(req)
		{
			eval("var param_obj = new Object(" + req.responseText + ")");
			
			var resobj, paramId;
			for (j in param_obj)
			{
				paramId = j;
				resobj = param_obj[paramId];
			
				// create new node in form
				new_tr = document.createElement('tr');
				new_td2 = document.createElement('td');

				if (resobj['ptype'] == 'Image')
				{
					new_td2.innerHTML = "<br /><a href=\"javascript:void(0)\" onclick=\"add_photo_box('" + resobj['pname'] + "', '" + paramId + "'); return false;\"><img src=\"" + full_url + "/images/admin/category/plus.gif\" /></a>&nbsp;&nbsp;<a href=\"javascript:void(0)\" onclick=\"rem_photo_box('" + paramId + "'); return false;\"><img src=\"" + full_url + "/images/admin/category/minus.gif\" /></a>";
					var hiddenInput = document.createElement('input');
					hiddenInput.setAttribute('type', 'hidden');
					hiddenInput.setAttribute('id', 'param' + paramId + '_operbox');
					new_td2.appendChild(hiddenInput);
					new_tr.appendChild(new_td2);
					beforeElement.parentNode.insertBefore(new_tr, beforeElement.nextSibling);
					var new_tr2 = document.createElement('tr');
					var new_td3 = document.createElement('td');
					new_td3.appendChild(document.createTextNode(resobj['pname'] + ' 1 :'));
					new_tr2.appendChild(new_td3);
					var new_td4 = document.createElement('td');
					var file_input = document.createElement('input');
					file_input.setAttribute('type', 'file');
					file_input.setAttribute('name', 'param' + paramId + '[]');
					file_input.className = "photo-param" + paramId;
					file_input.style.width = '220px';
					new_td4.appendChild(file_input);
					new_tr2.appendChild(new_td4);
					beforeElement.parentNode.insertBefore(new_tr2, beforeElement.nextSibling.nextSibling);
				}
				else
				{
					new_td = document.createElement('td');
					eval("var req_params_obj = new Object(" + document.getElementsByName('req_fields')[0].value + ")");
					if (paramId in req_params_obj)
					{
						resobj['pname'] += ' <span class="redstar"><i>*</i></span>';
					}
					resobj['pname'] += ":";
					var span_name = document.createElement('span');
					span_name.innerHTML = resobj['pname'];
					new_td.appendChild(span_name);
					new_tr.appendChild(new_td);
					switch(resobj['ptype'])
					{
						case 'Text Input':
							new_td2.innerHTML = '<input type="text" name="param' + paramId + '" maxlength="100" size="36" />';
							break;

						case 'Text Area':
							new_td2.innerHTML = '<textarea name="param' + paramId + '" rows="6" cols="27" wrap="physical"></textarea>';
							break;

						case 'Select Box':
							var objstr_inner = '';
							for (var i in resobj['plink'])
							{
								objstr_inner = objstr_inner + i + ':[' + resobj['plink'][i] + '],';
							}
							var objstr = '{' + objstr_inner.substring(0, objstr_inner.length-1) + '}';

							var select_str = '<input type="hidden" name="param' + paramId + '_optlinks" value=\'' + objstr + '\' /><select name="param' + paramId + '" onchange=\'optlink(this, ' + objstr + ')\'><option value="">--- Выбрать ---</option>';
							for (var i in resobj['poption'])
							{
								select_str += '<option value="' + i + '">' + resobj['poption'][i] + '</option>';
							}
							select_str += '</select>';
							new_td2.innerHTML = select_str;
							break;

						case 'Checkbox':
							new_td2.innerHTML = '<input type="checkbox" name="param' + paramId + '" class="chb_style" />';
							break;
					}
					new_tr.appendChild(new_td2);
					beforeElement.parentNode.insertBefore(new_tr, beforeElement.nextSibling);
				}
			}
		}
		});
	}

	// clean up
	remove_optlink(optlinks);

	var current_option = el.options[el.selectedIndex].value;
	if (typeof(optlinks[current_option]) != 'undefined')
	{
		parent_el = el.parentNode.parentNode;
		this.paramIds = optlinks[current_option];
		this.beforeElement = parent_el;
		this.add();
	}
}

function remove_optlink(linkarray)
{
	var all_pids, pid;
	for (var i in linkarray)
	{
		all_pids = linkarray[i];
		for (var j=0; j<all_pids.length; j++)
		{
			pid = all_pids[j];
			var elem = document.getElementsByName('param' + pid)[0];
			
			if (typeof(elem) != 'undefined')
			{
				if (elem.tagName == 'SELECT')
				{
					var sel_objstr = document.getElementsByName('param' + pid + '_optlinks')[0].value;
					var tempObj = eval("new Object(" + sel_objstr + ")");
					remove_optlink(tempObj);
				}
				var tr_elem = elem.parentNode.parentNode;
				tr_elem.parentNode.removeChild(tr_elem);
			}
			var opbox = $('operbox' + pid);
			if (typeof(opbox) != 'undefined')
			{
				opbox.parentNode.removeChild(opbox);
				rem_photo_box(pid, true);
			}
		}
	}
}

/* Filter Select Box Options Links */
function flt_optlink(el, optlinks, advSrch)
{
	this.add = function()
	{
		// get param
		var paramIds = this.paramIds.join();
		var beforeElement = this.beforeElement;
		var url = 'index.php?catalog=noindex&inner=processor';
		var params = 'op=get-param&annc=' + paramIds;
		var ajaxHandler = new Ajax.Request(url, { method: 'post', parameters: params, onComplete:
		function(req)
		{
			eval("var param_obj = new Object(" + req.responseText + ")");
			
			var resobj, paramId;
			for (j in param_obj)
			{
				paramId = j;
				resobj = param_obj[paramId];

				if (resobj['ptype'] == 'Image')
				{
				}
				else
				{
					if (advSrch)
					{
						var new_tr = document.createElement('tr');
						var new_row = document.createElement('td');
						new_row.className = 'label';
						new_row.setAttribute('name', 'flt_param_label' + paramId);
						new_row.appendChild(document.createTextNode(resobj['pname']));
						new_tr.appendChild(new_row);
						var new_row2 = document.createElement('td');
					}
					switch(resobj['ptype'])
					{
						case 'Select Box':
							if (!advSrch)
							{
								var new_row = document.createElement('li');
								new_row.setAttribute('id', 'flt_param_label' + paramId);
								new_row.appendChild(document.createTextNode(resobj['pname']));
								beforeElement.parentNode.insertBefore(new_row, beforeElement.nextSibling);
								var new_row2 = document.createElement('li');
							}

							var objstr_inner = '';
							for (var i in resobj['plink'])
							{
								objstr_inner = objstr_inner + i + ':[' + resobj['plink'][i] + '],';
							}
							var objstr = '{' + objstr_inner.substring(0, objstr_inner.length-1) + '}';

							var select_str = '<input type="hidden" name="flt_param' + paramId + '_optlinks" value=\'' + objstr + '\' /><select name="flt_param' + paramId + '" onchange=\'optlink(this, ' + objstr + ')\'><option value="">-- Выберите --</option>';
							for (var i in resobj['poption'])
							{
								select_str += '<option value="' + i + '">' + resobj['poption'][i] + '</option>';
							}
							select_str += '</select>';
							new_row2.innerHTML = select_str;
							break;

						case 'Checkbox':
							if (!advSrch)
							{
								var new_row = document.createElement('li');
								new_row.setAttribute('name', 'flt_param_label' + paramId);
								new_row.appendChild(document.createTextNode(resobj['pname']));
								beforeElement.parentNode.insertBefore(new_row, beforeElement.nextSibling);
								var new_row2 = document.createElement('li');
								new_row2.innerHTML = '<input type="checkbox" name="flt_param' + paramId + '" />';
							}
							else
								new_row2.innerHTML = '<input type="checkbox" name="flt_param' + paramId + '" />';
							break;
						
					default:
							if (!advSrch)
							{
								var new_row = document.createElement('li');
								new_row.setAttribute('name', 'flt_param_label' + paramId);
								new_row.appendChild(document.createTextNode(resobj['pname']));
								beforeElement.parentNode.insertBefore(new_row, beforeElement.nextSibling);
								var new_row2 = document.createElement('li');
							}
							new_row2.innerHTML = '<input type="text" size="27" maxlength="100" name="flt_param' + paramId + '" /><div class="clearfix"></div>';
							break;
					}

					if (advSrch)
					{
						new_tr.appendChild(new_row2);
						beforeElement.parentNode.insertBefore(new_tr, beforeElement.nextSibling);
					}
					else if (resobj['ptype'] != 'Checkbox')
					{
						beforeElement.parentNode.insertBefore(new_row2, beforeElement.nextSibling.nextSibling);
					}
				}
			}
		}
		});
	}

	// clean up
	if (advSrch)
		flt_remove_optlink(optlinks, true);
	else
		flt_remove_optlink(optlinks);

	var current_option = el.options[el.selectedIndex].value;
	if (typeof(optlinks[current_option]) != 'undefined')
	{
		parent_el = advSrch ? el.parentNode.parentNode : el.parentNode;
		this.paramIds = optlinks[current_option];
		this.beforeElement = parent_el;
		this.add();
	}
}

function flt_remove_optlink(linkarray, advSrch)
{
	var all_pids, pid;
	for (var i in linkarray)
	{
		all_pids = linkarray[i];
		for (var j=0; j<all_pids.length; j++)
		{
			pid = all_pids[j];
			var row_elem_label = $('flt_param_label' + pid);
			
			if (typeof row_elem_label != 'undefined')
			{
				row_elem_label.parentNode.removeChild(row_elem_label);
			}

			var elem = document.getElementsByName('flt_param' + pid)[0];
			if (typeof(elem) != 'undefined')
			{
				if (elem.tagName == 'SELECT')
				{
					var sel_objstr = document.getElementsByName('flt_param' + pid + '_optlinks')[0].value;
					var tempObj = eval("new Object(" + sel_objstr + ")");
					if (advSrch)
						flt_remove_optlink(tempObj, true);
					else
						flt_remove_optlink(tempObj);
				}
				var row_elem = elem.parentNode;
				var row_parent = elem.parentNode.parentNode;
				row_elem.parentNode.removeChild(row_elem);
				if (advSrch)
					row_parent.parentNode.removeChild(row_parent);
			}
			var opbox = $('operbox' + pid);
			if (typeof(opbox) != 'undefined')
			{
				opbox.parentNode.removeChild(opbox);
				rem_photo_box(pid, true);
			}
		}
	}
}

function setLang(el)
{
	redirectToUrl('lang', el.options[el.selectedIndex].value);
}

function PopupPic(sPicURL) 
{
	window.open(sPicURL, "imgpopup", "resizable=1,height=200,width=200").focus();
}

////////icon scrolling
imgLoad=new Image();
imgLoad.src=full_url + "/images/loading_icon.gif";

function rollimages(id, pageid, cid)
{
  var obj = imgObjct[id];
  document.getElementById('image'+id).src = full_url+"/images/upload/small/cat"+cid+"/"+obj[pageid-1];
  for(i=0; i<obj.length; i++)
  {
	  var page = i + 1;
	  var cat = document.getElementById('image'+id+'_'+page).getElementsByTagName('a');
	  if(cat.length == 0) document.getElementById('image'+id+'_'+page).innerHTML = "<span id=\"image"+id+"_"+page+"\"><a href=\"javascript:void(0);\" onClick=\"rollimages('"+id+"', "+page+", "+cid+");\">"+page+"</a></span>";
 }
 document.getElementById('image'+id+'_'+pageid).innerHTML = pageid;
 document.getElementById('zoom'+id).innerHTML ='';
 document.getElementById('zoom'+id).innerHTML = '<a href="javascript:void(0);" onclick="medium_images('+id+', \''+cid+'\',  \''+obj[pageid-1]+'\', \'visible\')"><img src="images/zoom.gif" align="left" /></a>';
 document.getElementById('close'+id).innerHTML ='';
 document.getElementById('close'+id).innerHTML = '<a href="javascript:void(0);" onclick="medium_images('+id+', \''+cid+'\', \''+obj[pageid-1]+'\', \'hidden\')"><img src="images/close.gif"/></a>' ; 
}
function pages(imgid, cid)
{
	var pages = imgObjct[imgid].length;
	var img_tag_id = 'image' + imgid;
	for (i=0; i<pages; i++)
	{
	  var page = i + 1;
	  if(page != 1)
	  document.write("<span id=\""+img_tag_id+"_"+page+"\"><a href=\"javascript:void(0);\" onClick=\"rollimages('"+imgid+"', '"+page+"', "+cid+");\">"+page+"</a></span> ");
	  else
	  document.write("<span id=\""+img_tag_id+"_"+page+"\">"+page+"</span> ");
	}
}
function download(annid, prv_img, cid) {


	   if(document.getElementById('prv_medium'+annid).complete == true)
	   {
		   document.getElementById('prv_block'+annid).className="";
		   document.getElementById('prv_medium'+annid).src=full_url + "/images/upload/medium/cat"+cid+"/"+prv_img;
	   }
	   else
	   {
		   document.getElementById('prv_block'+annid).className="scroll_loading";
		   document.getElementById('prv_medium'+annid).src=imgLoad.src;
		   setTimeout("download("+annid+",'"+prv_img+"', "+cid+")", 5000);
	   }
	
}	
function medium_images(annid, cid, prv_img, visibility)
{
  document.getElementById('prv_layer'+annid).style.visibility = visibility;
  download(annid, prv_img, cid);
}
