// $Id: positivo.js,v 1.35 2008/01/03 16:43:03 kcislo Exp $
// Janmedia Interactive 

/* ----------------------------------------------------------------------
	GENERAL SETTINGS
---------------------------------------------------------------------- */
LANGUAGE = 'pl'; //wazne dla kontrolek kalenrarza

/* ----------------------------------------------------------------------
	POSITIVO DEFAULT VALIDATION FORMS
---------------------------------------------------------------------- */
FAILED_INPUT_BACKGROUND_COLOR = "#FEDDBC";

function $(id) { return document.getElementById(id) }
function $c(name) { return $ce(name,null,null) }
function $ce(name,params,style) { var el = document.createElement(name); if(params) for(var i in params) el[i]=params[i]; if(style) for(var i in style) el.style[i]=style[i]; return el; }
function $re(el) { if(!el||!el.parentNode) return; el.parentNode.removeChild(el); }
function addClass(el,c) { if(!el) return; if(!containsClass(el, c)) el.className += " " + c; }
function removeClass(el, c) { if(!el) return; el.className = el.className.replace(new RegExp(c,"g"),""); }
function containsClass(el, c) { if(!el) return false; return el.className.indexOf(c) != -1 }


function checkInput(input,message)
{
	if(input == new String(input))
		input = document.getElementById(input);
		
	if (!input)
	{
		alert(message + "\nInput not found!");		
		return false;
	}

    if (input.type=="checkbox") 
    {
    	if (!input.checked)
    	{
	        focusFailedInput(input,message);
	        return false;
	    }
	    return true;
    }
	
    if (input.value.length==0) 
    {
        focusFailedInput(input,message);
        return false;
    }
    
    return true;
}

function checkSelect(input,message)
{
	if(input == new String(input))
		input = document.getElementById(input);
		
	if (!input)
	{
		alert(message + "\nInput not found!");		
		return false;
	}
    if (input.disabled == true) return true;
    if (input.selectedIndex==0) 
    {
        focusFailedInput(input,message);
        return false;
    }
    return true;
}

function focusFailedInput(input, message)
{
    input.oldOnBlur = input.onblur;
    input.oldBackgroundColor = input.style.backgroundColor;
    input.style.backgroundColor = FAILED_INPUT_BACKGROUND_COLOR;
    if (message) alert(message);
    input.onblur = onAfterBlurFailedInput; 
    if (!input.disabled) input.focus();
}

function markFailedInput(input)
{
    input.style.border = "1px solid red";
}

function checkEmail(input,message)
{
	if(input == new String(input))
		input = document.getElementById(input);
		
    if (!_checkEmail(input.value)) 
    {
        focusFailedInput(input,message);
        return false;
    }
    return true;
}

function _checkEmail(email)
{
	if (email == "") return false;
  template=/^[0-9a-z]+[0-9a-z._-]*\@[0-9a-z]+[0-9a-z._-]*\.[0-9a-z]{2,}$/i;
  if (template.test(email) == false) return false;
	return true;
}

function checkNumberInput(input,message)
{
  if(input == new String(input))
		input = document.getElementById(input);
		
  //template=/^[0-9]?$/i;
  template=/^[0-9]*$/i;
  //if (template.test(email) == false) return false;

    if ((input.value.length==0) || !template.test(input.value))
    {
        focusFailedInput(input,message);
        return false;
    }
    return true;
}


function checkCheckboxes(input,message)
{
    if (input.length)
    {
        var i;
        for (i=0; i<input.length; i++)
        {
            if (input[i].checked)
            {
                return true;
            }
        }
        alert(message);
        if (!input[0].disabled) input[0].focus();
        return false;
    }
    return true;
}

function onAfterBlurFailedInput()
{
    if (this.oldOnBlur)
    {
        this.onblur = this.oldOnBlur; 
    }
    if (this.oldBackgroundColor!=null)
    {
        this.style.backgroundColor = this.oldBackgroundColor;
    }
}

/*
  Dodalem 3 parametr, bo jest wymagana zgodnosc w d :(
*/
function setCountry(countryinput, stateinput, newversion)
{
	/*
  if (newversion == true)
  {
    if (stateinput.value != "")
      countryinput.value="US";
  }
  else 
  {
  */

	if (stateinput.value != "Outside US")
		countryinput.value="United States";

	if (countryinput.value!="United States")
		countryinput.value="US"
}

function setState(countryinput, stateinput, newversion)
{
  if (newversion == true)
  {
    if (countryinput.value != "US")
      stateinput.value = "";
  }
  else 
    if (countryinput.value != "United States")
      stateinput.value = "Outside US";
}


/* ----------------------------------------------------------------------
	POSITIVO DEFAULT VALIDATION FORMS
---------------------------------------------------------------------- */
function checkNewsletterForm(form)
{
	return checkEmail(form.email,"Podaj poprawny adres e-mail.");
}
function checkSearchForm(form)
{
	if(!form['book-isbn'])
		return checkInput(form['name'],"Podaj szukan\u0105 fraz\u0119.");
	if((form['book-isbn'].value.length == 0 && form['book-author'].value.length == 0 && form['book-publisher'].value.length == 0)
		|| document.getElementById('book_options').style.display == 'none')
		return checkInput(form['name'],"Podaj szukan\u0105 fraz\u0119.");
	return true;
}

function changeListOrder(value)
{
	var s = document.location.search;
	if (value.length==0)
		s = vacumParam(s,"_order",value);
	else
		s = insertParam(s,"_order",value);
	if (s != document.location.search) document.location.search=s;
}
function changeListLimit(value)
{
	var s = document.location.search;
	if (value.length==0)
		s = vacumParam(s,"_limit",value);
	else
		s = insertParam(s,"_limit",value);
	if (s != document.location.search) document.location.search=s;
}
function insertParam(qs,name,value)
{
	if (qs.length==0) qs="?";
	if (qs.charAt(0)=="?") qs = "&" + qs.substr(1);
	if (qs=="&") return "?" + name + "=" + value;
	
	var index = qs.indexOf("&"+name+"=");
	if (index!=-1)
	{
		index += name.length + 2;
		var last = qs.indexOf("&",index);
		if (last==-1) last=qs.length;
		qs = qs.substr(0,index) + value + qs.substr(last); 
	}
	else
	{
		if (qs.charAt(qs.length-1)!="&") qs += "&";
		qs += name + "=" + value;
	}	
	return "?" + qs.substr(1);
}
function vacumParam(qs,name)
{
	if (qs.length<1) return qs;
	if (qs.charAt(0)=="?") qs = "&" + qs.substr(1);
	var index = qs.indexOf("&"+name+"=");
	if (index!=-1)
	{
		var last = qs.indexOf("&",index + name.length + 2);
		if (last==-1) last=qs.length;
		qs = qs.substr(0,index) + qs.substr(last); 
	}
	return "?" + qs.substr(1);
}

/* ----------------------------------------------------------------------
	POSITION
---------------------------------------------------------------------- */
function getAbsolutePos(el) {
	var r = { x: el.offsetLeft, y: el.offsetTop};
	if (el.offsetParent)
	{
		// problem ze skrolami
		if (el.offsetParent.style.overflow!='auto' && el.offsetParent.style.position!='absolute')
		{
			var tmp = getAbsolutePos(el.offsetParent);
			r.x += tmp.x;
			r.y += tmp.y;
		}
	}
	return r;
}

/* ----------------------------------------------------------------------
	MAIN PAGE
---------------------------------------------------------------------- */
function onNowosciChange(id)
{
	document.location.href = "/sklep/produkty.xml?type=1000&cat=" + id;
}
/* ----------------------------------------------------------------------
	MAIN PAGE
---------------------------------------------------------------------- */
function showSMHelp(element,offsetX,offsetY)
{
		//if(window.navigator.userAgent.indexOf("Opera") != -1)
		{
		//	return;
		}
		if (!offsetX) offsetX=0;
		if (!offsetY) offsetY=0;
		var helpElement = document.getElementById("helpdsm");	
		helpElement.style.display = "block";
		if (!helpElement) return;
		if (helpElement.parentNode == element) return;
		helpElement.parentNode.removeChild(helpElement);
		element.appendChild(helpElement);
	//	helpElement.style.left = element.offsetLeft + offsetX;
	//	helpElement.style.top = element.offsetTop + offsetY;
		helpElement.style.left = offsetX;
		helpElement.style.top = offsetY;
		helpElement.onmouseout = hideSMHelp;
}	

function hideSMHelp()
{
	this.style.display = "none";
}


/* ----------------------------------------------------------------------
	PRODUCT POPUP IMAGE
---------------------------------------------------------------------- */
var lastSelectedTd = null;
var imgSrc = null;
function selectImg(a,src)
{
	var element = document.getElementById("mainImg");
	if (!element) return false;
	element.style.background="url('/converter?widthMax=135&heightMax=125&img=" + src + "') no-repeat center";

	imgSrc = src;	
	if(window.navigator.userAgent.indexOf("Opera") != -1)
	{
		return false;
	}
	
	if (lastSelectedTd) lastSelectedTd.className="";
	lastSelectedTd = a.parentNode;
	lastSelectedTd.className="selected";

	return false;	
}
function PopupImage(url,width,height,title)
{
    var windowheight = height+40;
    var windowwidth = width+20;

    var left = (screen.width - windowwidth)/2;
    var top = (screen.height - windowheight)/2 - 18;
    
    var scrollbars = "no";
    
    if (left<0) { scrollbars = "yes"; left = 32; windowwidth = screen.width - 2*left; }
    if (top<0) { scrollbars = "yes"; top = 32; windowheight =  screen.height - 2*top - 18; top = top - 18; }

    var num = Math.round(Math.random()*10000000);
    var str = new String(num);
    var win = window.open("popup",str,"toolbar=no,location=no,directories=no,"+
        "status=no,menubar=no,scrollbars=" + scrollbars + ",resizable=no,"+
        "copyhistory=no, width="+windowwidth+",height="+windowheight+",left=" + left + ",top=" + top);
    win.document.write("\<HEAD\>\<link rel=\"stylesheet\" type=\"text\/css\" href=\"\/style.css\"\/\>\<meta http-equiv=\"pragma\" content=\"no-cache\"\>\<TITLE\>"+title+"\<\/TITLE\>");
    win.document.write("\<\/HEAD\>");
    win.document.write("\<BODY topmargin=0 leftmargin=0\><table border=0 width=100% height=100%><tr><td align=center valign=middle>\<img src=\""+url+"\" border=0 vspace=\"10\"\>\<BR\>\<a href=\"#\" onclick=\"window.close(); return false;\">Zamknij &#187;<\/a></td></tr></table>\<\/BODY\><\/HTML\>");
}

/* ----------------------------------------------------------------------
	AJAX
---------------------------------------------------------------------- */
function getCookie(name)
{
	var arg		= name + '=';
	var alen	= arg.length;
	var	clen	=	document.cookie.length;
	var i = 0;
	while (i<clen)
	{
		var j = i + alen;
		if (document.cookie.substring(i,j)==arg) return getCookieVal(j);
		i = document.cookie.indexOf(" ",i) + 1;
		if (i==0) break;
	};
	return null;
}
function getCookieVal(offset)
{
	var endstr = document.cookie.indexOf(";", offset);
	if (endstr==-1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset,endstr));
}
function checkAjax()
{
	// check for cookie first
	var cookie = getCookie('ajax');
	if (cookie) return (cookie==1);

	// send request
	var url = '/servlet/com.janmedia.positivo.misc.AjaxServlet';
	var options = { method: 'get', parameters: 'action=test',
	
	onComplete: function(request)
	{
		if (request.status==200 && request.responseText=='OK')
		{
			document.cookie="ajax=1;path=/";
		}
	}};
	new Ajax.Request(url,options);

	return false;
}
checkAjax();

var loadedContent = new Array();
function loadContent(elementId,url,offsetLeft,offsetTop,postFunc)
{
	if(!checkAjax()) return true;

	var element = document.getElementById(elementId);
	if (!element) return true;
	
	if (loadedContent[elementId+":"+url]!=null)
	{
		element.innerHTML = loadedContent[elementId+":"+url];
		return false;
	}

	if (!offsetLeft) offsetLeft=0;
	if (!offsetTop) offsetTop=0;

	var options = { method: 'get', onComplete: function(request)
	{
		if (request.status==200)
			var element = document.getElementById(elementId);
			if (element) element.innerHTML = request.responseText;
			var element = document.getElementById(elementId + "mask");
			if (element) element.parentNode.removeChild(element);
			var element = document.getElementById(elementId + "loading");
			if (element) element.parentNode.removeChild(element);
			loadedContent[elementId+":"+url] = request.responseText;
			if(postFunc) postFunc();
	}};
	
	new Ajax.Request(url, options);

	// wstaw warstwe 
	var div = document.createElement("div");
	div.setAttribute("id",elementId + "mask");
	div.className 		= 'ajax_tmp';
	
	div.style.top 		 = element.offsetTop + offsetTop;
	div.style.left 		 = element.offsetLeft + offsetLeft;
	div.style.height	 = element.offsetHeight + offsetTop;
	div.style.width		 = element.offsetWidth + offsetLeft;
	
	var offsetParent = element.offsetParent;
	offsetParent.appendChild(div);
	
	var loading = document.createElement("div");
	loading.setAttribute("id",elementId + "loading");
	loading.className 		= 'ajax_tmp_loading';
	loading.style.top 		 = element.offsetTop + offsetTop;
	loading.style.left 		 = element.offsetLeft + offsetLeft;
	loading.style.height	 = element.offsetHeight + offsetTop;
	loading.style.width		 = element.offsetWidth + offsetLeft;
	
	offsetParent.appendChild(loading);
	
	return false;
}
/* ----------------------------------------------------------------------
	CHECKOUT
---------------------------------------------------------------------- */
var showErrorElement = null;
function showError(elementId)
{
	if (showErrorElement)
	{
		showErrorElement.className = showErrorElement.oldClassName;
		showErrorElement=null;
	}
	var element = document.getElementById(elementId);
	if (!element) return;
	element.className = "error";
	showErrorElement=element;
}

/* ----------------------------------------------------------------------
	CHECKOUT - MATH
---------------------------------------------------------------------- */
function formatPrice(d,decimal)
{
	var d2 = Math.floor(d);
	var s = "" + ((d*100-d2*100));	
	if (s.length>2) s=s.substr(0,2);
	else while (s.length<2) s="0"+s;
	
	var s1=""+d2;
	if (s1.length>3) s1=s1.substr(0,s1.length-3) + "." + s1.substr(s1.length-3,s1.length)
	return s1+","+s; 
}

/* ----------------------------------------------------------------------
	WINDOW AVAIBLE HEIGHT
---------------------------------------------------------------------- */
function getScreenSize(mode)
{
	if (self.innerHeight) // all except Explorer
	{
        if(mode == 'width') return self.innerWidth;
        else return self.innerHeight;
	}
	else if (document.body) // other Explorers
	{
        if(mode == 'width') return document.body.clientWidth;
        else return  document.body.clientHeight;
	}
	return 0;
}
/* ----------------------------------------------------------------------
	REPLACE PROMO IMAGES
---------------------------------------------------------------------- */
var replace_promo_images = null;
var loadingImg = null;
function replace_promo_image(link,elementId,img,title)
{
	var element = document.getElementById(elementId);
	if (!element) return;
	var s = '/converter?widthMax=80&heightMax=60&img=' + img;
	
	clearElements(link.parentNode.parentNode);
	addClass(link,"active");
	
	if (element.src==s) return;
	
	if (loadingImg==null)
	{
		loadingImg = new Image();
		loadingImg.src="/img/tmp/loading.gif";
	}
	
	if 	(replace_promo_images==null) replace_promo_images = new Array();
	if (replace_promo_images[s]==null)
	{
		element.src=loadingImg.src;
		replace_promo_images[s]=new Image();
		replace_promo_images[s].src=s;
	}
	element.src=replace_promo_images[s].src;
}
function clearElements(list)
{
	var elements = list.getElementsByTagName("a");
	for(var i = 0; i < elements.length; i++) removeClass(elements[i],"active");
}
/* ----------------------------------------------------------------------
	ADDITIONAL ADDRESSES
---------------------------------------------------------------------- */
function selectAdditionalAddress(callback,additionalParamsForCallback,additionalParamsForUrl)
{
    var windowwidth = 650;
    var windowheight = 360;

    var left = (screen.width - windowwidth)/2;
    var top = (screen.height - windowheight)/2 - 18;
    
    var scrollbars = "no";
    
    var url = "/klub/dodatkowe_adresy.xml?r=" + Math.random();
    if (additionalParamsForUrl!=null)
    {
    	url += "&" + additionalParamsForUrl;
    }
    
    if (left<0) { scrollbars = "yes"; left = 32; windowwidth = screen.width - 2*left; }
    if (top<0) { scrollbars = "yes"; top = 32; windowheight =  screen.height - 2*top - 18; top = top - 18; }

	window.dialogArgs = new Object();
	window.dialogArgs.callback = callback;
	window.dialogArgs.additionalParamsForCallback = additionalParamsForCallback;

    var win = window.open(url,"addAddr","toolbar=no,location=no,directories=no,"+
        "status=no,menubar=no,scrollbars=" + scrollbars + ",resizable=no,"+
        "copyhistory=no, width="+windowwidth+",height="+windowheight+",left=" + left + ",top=" + top);
}
/* ----------------------------------------------------------------------
	ADDITIONAL ADDRESSES
---------------------------------------------------------------------- */
function onNotAvailableClick(name,href)
{
	if (!confirm("Produkt '"+name+"' jest chwilowo niedostÄpny w sprzedaÅ¼y.\nCzy chcesz byÄ powiadomiony, jak tyko produkt bÄdzie dostÄpny?")) return;
	document.location.href=href+"?powiadomienie#powiadomienie";
}

/* main menu IE fix */
function createIframe(id)
{
	var UA = navigator.userAgent.toLowerCase();
	if( UA.indexOf("msie") == -1 || UA.indexOf("opera") != -1 )
	return;
	
	var iframe;
	var iframeId = "elementIframe";
	var parent = document.getElementById(id);
	var d = parent.getElementsByTagName("div").item(0);
	if(!d) return;
	
	d.style.display = "block";
	
	iframe = document.getElementById(iframeId);
	if(!iframe)
	{
		iframe = document.createElement("iframe");
		iframe.setAttribute("id",iframeId);
		iframe.setAttribute("frameBorder","0");
		iframe.style.border="0";
		iframe.style.position="absolute";
		iframe.style.width=d.offsetWidth + "px";
		iframe.style.height=d.offsetHeight + "px";
		parent.appendChild(iframe);
	}
	else
	{
		
		iframe.parentNode.removeChild(iframe);
		iframe.style.width=d.offsetWidth + "px";
		iframe.style.height=d.offsetHeight + "px";
		parent.appendChild(iframe);
	}
	
	iframe.style.display="block";
	parent.onmouseout = function() { d.style.display="none"; iframe.style.display="none"; }
	return;
} 

function addEvent(obj, type, fn)
{
  if (obj.addEventListener) obj.addEventListener(type, fn, false);
  else if (obj.attachEvent)
  {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){obj["e"+type+fn](window.event);}
    obj.attachEvent("on"+type, obj[type+fn]);
  }
}

/* banners */
function createBannerScript(no,categoryId)
{
	document.write("<script src=\"/banner?action=view&id=" + no
	+ ((categoryId.length > 0) ? ('&category_id=' + categoryId ) : '')
	+ "&js&rand=" +	Math.random() + "\" type=\"text/javascript\" /></script>");
}

function switchMPFlash(position,element)
{
	if(element) element.blur();
	var listItems = $("mpflash").getElementsByTagName("li");
	for(var i = 0; i < listItems.length; i++)
		if(i == position - 1) addClass(listItems[i],"active");
		else removeClass(listItems[i],"active");
	var products = $("mpflash").getElementsByTagName("div");
	var j = 0;
	for(var i = 0; i < products.length; i++)
	{
		if(!containsClass(products[i],"product")) continue;
		if(j == position - 1) removeClass(products[i],"hidden");
		else addClass(products[i],"hidden");
		j++;
	}
	return false;
}

function changeKPP(element,position)
{
	element.blur();
	var listItems = $("kppd").getElementsByTagName("a");
	for(var i = 0; i < listItems.length; i++)
		if(i == position - 1) addClass(listItems[i],"active");
		else removeClass(listItems[i],"active");
		
	var listItems = $("kpp").getElementsByTagName("li");
	for(var i = 0; i < listItems.length; i++)
		if(i == position - 1) addClass(listItems[i],"active");
		else removeClass(listItems[i],"active");
		
	return false
}