YAHOO.namespace('my.utils');

/*	
	Depend from :
	<script language="JavaScript" src="/yui/build/yahoo-dom-event/yahoo-dom-event.js" type="text/javascript"></script>
	<script language="JavaScript" src="/yui/build/connection/connection-min.js" type="text/javascript"></script>
 	<script language="JavaScript" src="/yui/build/utilities/utilities.js" type="text/javascript"></script>
*/
/*created  23.10.2008 by DotOgr Company*/
/*changed  25.11.2009 */
var _evt = YAHOO.util.Event,
	_dom = YAHOO.util.Dom,
	_connect = YAHOO.util.Connect,
	_utils = YAHOO.my.utils,
	html, body;
	

var LP = 
{
	width : '',
	panelId : 'xxx-x-panel',
	panelClass : '',
	panelCreated : false,
	color : '#fff',
	bgcolor : '#00c',
	paddings : '5px 10px',
	message : 'Loading...',
	duration : 3000
}
	
_evt.onDOMReady
(
	function()
	{
		html = document.documentElement;
		body = document.getElementsByTagName('body')[0];
	}
);	
_utils.loadingPanelShow = function(msg, cr, bg, pd, w)
{
	if(LP.panelCreated)
	{
		var panel = _dom.get(LP.panelId);
	}
	else
	{
		var panel = document.createElement('div');
		panel.id = LP.panelId;
		body.appendChild(panel);
	}
	msg = msg ? msg : LP.message;
	panel.style.visibility = 'hidden';
	panel.style.color = cr ? cr : LP.color;
	panel.style.background = bg ? bg : LP.bgcolor;
	panel.style.position = 'absolute';
	panel.style.width = w ? w : LP.width;
	panel.style.padding = pd ? pd  : LP.paddings;
	panel.style.textAlign = 'center';
	panel.innerHTML = msg;
	_utils.loadingPanelCenter(panel);
	panel.style.visibility = 'visible';
	LP.panelCreated = true;
}


_utils.loadingPanelHide = function(msg, cr, bg, pd,d)
{
	var panel = _dom.get(LP.panelId);
	if(panel)
	{
		if(msg) panel.innerHTML = msg;
		if(cr) panel.style.color = cr;
		if(bg) panel.style.background = bg;
		if(pd) panel.style.padding = pd;
		_utils.loadingPanelCenter(panel);
		d = d ? d : LP.duration;
		setTimeout(function(){ panel.style.visibility = 'hidden' }, d)
	}
	else
	{
		return false;
	}
}

_utils.loadingPanelCenter = function(el)
{
	el.style.left = Math.round((html.clientWidth - el.offsetWidth)/2) + 'px';
	scrollFix = html.scrollTop ? html.scrollTop : body.scrollTop;
	el.style.top = scrollFix + 0 + 'px';
}

_utils.findOdds = function(node, arr)
{
  var space = /^[^\u0021-\uffff]*$/g;
  if(node.nodeType == 3)
  {
    if(node.nodeValue.match(space))
	{
      arr.push(node);
    }
  }
  else if(node.nodeType == 1)
  {
    for(var n = node.firstChild; n; n = n.nextSibling)
	{
      this.findOdds(n, arr);
    }
  }
}

_utils.removeOdds = function(node)
{
  var odds = new Array();
  _utils.findOdds(node, odds);
  for(var i = 0, length = odds.length; i < length; i++)
  {
    odds[i].parentNode.removeChild(odds[i]);
  }
}

_utils.messageArray = new Array();

_utils.setMessage = function(nspace, key, message)
{	
	if(typeof(_utils.messageArray[nspace]) == 'undefined') _utils.messageArray[nspace] = new Array();
	_utils.messageArray[nspace][key] = message;
}
_utils.getMessage = function(nspace,key)
{	
	return _utils.messageArray[nspace][key];
}

_utils.stringToArray = function(sourceString)
{
	var array = sourceString.split('i:'),
		result = new Array();
	for( var i = 1, length = array.length; i < length; i++)
	{
		var tmpArr = array[i].split('"'),
			index = parseInt(array[i].substr(0,1)),
			j = 0;	
		if( typeof(result[index]) == 'undefined') result[index] = new Object();
		while(j < tmpArr.length)
		{ 
			if(!/[\:\;\}\{\,]/.test(tmpArr[j]))
			{	
				result[index][tmpArr[j]] = tmpArr[j+2];
				j += 3;
			}
			else j++;
		}
	}
	
	return result;
}

_utils.toggleFormErrorMessage = function(idErrorContainer, errorMessage, classNameResetFields)
{
	var erorContainer = _dom.get(idErrorContainer);
	erorContainer.innerHTML = errorMessage;
	erorContainer.style.display = '';
	var resetFields = _dom.getElementsByClassName(classNameResetFields);
	for(var i = 0, length = resetFields.length; i < length; i++ )
	{
		_evt.on(resetFields[i], 'focus', function(){ erorContainer.innerHTML = ''; erorContainer.style.display = 'none'; })
	}
}

_utils.isResponseError = function(o)
{
	var xml = (o.responseXML && o.responseXML.documentElement) ? o.responseXML : false;
	if(xml)
	{
		if(xml.getElementsByTagName('error')[0]) if(xml.getElementsByTagName('error')[0].firstChild.nodeValue) return xml.getElementsByTagName('error')[0].firstChild.nodeValue;
		else return false;
	}
	else return o.responseText;
}





_utils.getXMLcontent = function(o)
{
	var xml = (o.responseXML && o.responseXML.documentElement) ? o.responseXML : false, dataObject = {};
	if(xml)
	{
		if(xml.hasChildNodes())
		{
			var response = xml.getElementsByTagName('response')[0];
			for(var n = response.firstChild; n; n = n.nextSibling)
			{
				if(n.nodeType == 1)	dataObject[n.tagName] = n.firstChild.nodeValue;
			}
			return dataObject;
		}
		else alert('_utils.getXMLcontent — no tags responsed!');
	}
	else alert('_utils.getXMLcontent — no xml returned!');
}

_utils.hasAttribute = function(el,name){ return el.getAttribute(name) != null; }

_utils.formStatus = function(imperialClassName)
{
	this.formStatus.status = true;
	this.formStatus.errElArray = [];
	var els = _dom.getElementsByClassName(imperialClassName);
	for(var i = 0, len = els.length; i < len; i++)
	{
		if(els[i].value != '')
		{
			if(_utils.hasAttribute(els[i],'re'))
			{
				var re = new RegExp(els[i].getAttribute('re'));
				if(!re.test(els[i].value))
				{
					els[i].style.color = '#c00';
					this.formStatus.errElArray.push(els[i]);
					this.formStatus.status = false;
				}
				else els[i].style.color = '#000';
			}
		}
		else
		{
			this.formStatus.status = false;
		}
	}
}

_utils.getDeclensionGoods = function(number)
{
	var c = number%100;
	if((c < 10 && c > 0) || (c > 20))
	{
		if((c%10 > 1) && (c%10 <= 4)) return 2;// word = 'òîâàðà';
		else if(number%10 > 4 ) return 3;// word = 'òîâàðîâ';
		else return 1;//word = 'òîâàð';
	}
	else
	{
		 return 3;//word = 'òîâàðîâ';
	}
}


function cloneParentBlock(srcEl,targetCN,e)
{
	_evt.stopPropagation(e);
	var parent,container, tmp, parentFE;
	for(var p = srcEl.parentNode; p; p = p.parentNode)
	{
		if(p.className && p.className == targetCN)
		{
			parent = p;
			container = p.parentNode;
			break;
		}
	}
	parentFE = _dom.getElementsByClassName(targetCN,p.tagName,container)[0];
	tmp = parentFE.cloneNode(true);
	container.appendChild(tmp);
	tmp.style.display = '';
}

function removeParentBlock(srcEl,targetCN,e)
{
	_evt.stopPropagation(e);
	var parent,container, parentArr = [];
	for(var p = srcEl.parentNode; p; p = p.parentNode)
	{
		if(p.className && p.className == targetCN)
		{
			parent = p;
			container = p.parentNode;
			break;
		}
	}
	container.removeChild(parent);
	parentArr = _dom.getElementsByClassName(targetCN,p.tagName,container);
	if(parentArr.length == 1) _dom.get(targetCN+'-initblock').style.display = '';
}

function showParentBlock(srcEl,targetCN,e)
{
	_evt.stopPropagation(e);
	var tmp, parentFE, container;
	srcEl.parentNode.style.display = 'none';
	parentFE = _dom.getElementsByClassName(targetCN)[0];
	container = parentFE.parentNode;
	tmp = parentFE.cloneNode(true);
	container.appendChild(tmp);
	tmp.style.display = '';
}

_utils.fixPNG = function(arr)
{
	if(arr)
    {
        for(var i=0, l=arr.length; i < l; i++)
        {
			var src = arr[i].src;
			arr[i].src = '/i/blank.gif';
			arr[i].runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + src + '\',sizingMethod=\'scale\')';
        }
    }
}


















