var CODE_BOOL_NO = 0;
var CODE_BOOL_YES = 1;
var THUMBSNUMBER = 2;
var DEFAULTCOLORNAME = "(neuvedena)";
var IMGFOLDER = "/files/img/";
var GLOBALDATAFOLDER = "/global/data/";
var AJAXIMGFOLDER = "/global/data/ajax/";
var SHAPEFOLDER = "/global/data/shape/";
var SUFIX = ".jpg";
var THUMBSUFIX = "_nahled.jpg";
var MINITHUMBSUFIX = "_mininahled.jpg";
var NOPICTURE = "neniFoto.jpg";
var NOPICTUREMINI = "neniFotoMini.gif";
var DIALOGBUTTONPREFIX = "thumbdialogbutton-";
// kdyz ajax akce dobehla, ale s false stavem
var FAILEDPIC = "redcross.png";
var AJAXFAILPIC = "ajaxfail.gif";
var AJAXLOADEDPIC = "ok.png";
var AJAXLOADPIC = "ajaxload.gif";
var AJAXLOADING = "loading.gif";
var BASKETBUTTONPREFIX = "basketbutton-";

var COOKIE_PUBLICBASKET = "publicbasket";
var COOKIE_PUBLICBASKETTOTAL = "publicbaskettotal";
var COOKIE_PRIVATEBASKETTOTAL = "privatebaskettotal";

var pageBuffer = new Object();

function registerScript(aScriptName, aScriptPath) {
 if (this.pageBuffer[aScriptName] == null) {
  this.pageBuffer[aScriptName] = aScriptPath;
  var fileref=document.createElement('script');
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", aScriptPath);
  document.getElementsByTagName("head")[0].appendChild(fileref);  
 }
}

function registerCss(aCssName, aCssPath) {
 if (this.pageBuffer[aCssName] == null) {
  this.pageBuffer[aCssName] = aCssPath;
  var fileref=document.createElement("link");
  fileref.setAttribute("rel", "stylesheet");
  fileref.setAttribute("type", "text/css");
  fileref.setAttribute("href", aCssPath);
  document.getElementsByTagName("head")[0].appendChild(fileref);      
 }
}

function imgOverChange(aImg, aImgFileName) {
        aImg.src = aImgFileName;
}

function isJSON(aStr) {
    if (aStr == null || aStr == 'undefined' || aStr == "") {
      return false;
    }
    str = aStr.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
}

function measureIt() {
  var dtEnd = new Date();
  var nMSeconds = dtEnd.valueOf() - dtStart.valueOf();
  var sDuration = duration2String(nMSeconds);
  //alert("Javascript: " + duration2String(nMSeconds));
}

function duration2String(nMS) {
	var sReturn, sComp, nDur;

	nDur = nMS % 1000;
	sComp = nDur.toString();
	while (sComp.length<3) {
		sComp = "0" + sComp;
	}
	sReturn = "." + sComp + " seconds";

	// Strip off last component
	nMS -= nDur;
	nMS /= 1000;

	nDur = nMS % 60;
	if (nDur) {
		sReturn = nDur.toString() + sReturn;
	}	else {
		sReturn = "0" + sReturn;
	}

	// Strip off last component
	nMS -= nDur;
	nMS /= 60;

	nDur = nMS % 60;
	sReturn = nDur.toString() + " minutes, and " + sReturn;

	// Strip off last component
	nMS -= nDur;
	nMS /= 60;

	return nMS.toString() + " hours, " + sReturn;
}

function makeComboEmpty(aCombo) {
  for (i = aCombo.length - 1; i>=0; i--) {
      aCombo.remove(i);
  }
  return aCombo;
}

function fillCombo(aCombo, aData) {
  for(var i = 0; i < aData.length; i++) {    
    aCombo.options[i] = new Option(aData[i][1],aData[i][0]);
  }  
}

function fillComboByKeys(aCombo, aData, aKey1, aKey2) {
  for(var i = 0; i < aData.length; i++) {    
    aCombo.options[i] = new Option(aData[i][aKey2],aData[i][aKey1]);
  }  
}

function selectComboValueByKey(aCombo, aKey) {
  for(var i = 0; i < aCombo.length; i++) {
    if (aCombo.options[i].value == aKey) {
      aCombo.options[i].selected = true;
      return;
    }
  }
}

var ajaxcache = new Object();

function ajaxput(aID, aData) {
	ajaxcache[aID] = aData;
}

function ajaxget(aID) {
  return ajaxcache[aID];
}

function getIndicator(aTimestamp) {
	return ajaxcache[aTimestamp];
}

function testcallback(aId) {
	window.alert(aId);
}

/* AJAX UNIVERZALNI METODA*/
function ajax(aInput, aUrl, aParameters, aCallback, aCallbackParameters,  aIndicator, aBuffer) {
    var indicator = document.getElementById(aIndicator);
    var input = aInput;
    
    
    var callback = {
      success:function(o) {
        if (input != null) {
          input.disabled = false;
        }
        if (aIndicator != null) {
          indicator.removeChild(indicator.lastChild);
        }       
        if (o.responseText != null && isJSON(o.responseText)) {
          var parameters = eval('(' + o.responseText + ')');
          if (parameters.state != null && parameters.state) {
            if (aCallback != null) {
              if (aCallbackParameters != null) {
                  for (var parameter in aCallbackParameters) {
                    parameters[parameter] = aCallbackParameters[parameter];
                  }
              }
              if (aBuffer != null) {
                parameters['buffer'] = aBuffer;
              }
              aCallback.call(parameters);
            }
            if (aIndicator != null) {
                var pic = new Image();
                pic.src = AJAXIMGFOLDER+AJAXLOADEDPIC;
                pic.title = parameters.msg;
                indicator.appendChild(pic);
            }             
          } else {
            if (aIndicator != null) {
              var pic = new Image();
              pic.src = AJAXIMGFOLDER+FAILEDPIC;
              pic.title = parameters.msg;
              indicator.appendChild(pic);
            }            
          }               
        } else {
            if (aIndicator != null) {
              var pic = new Image();
              pic.src = AJAXIMGFOLDER+FAILEDPIC;
              pic.title = "Nebyla obdržena korektní odpověd od serveru, výsledek vaší akce je nejasný.";
              indicator.appendChild(pic);
            }                
        }
      },    
      customevents:{ 
        onFailure:function(o) {
            input.disabled = false;
            if (aIndicator != null) {
              indicator.removeChild(indicator.lastChild);
              var pic = new Image();
              pic.src = AJAXIMGFOLDER+AJAXFAILPIC;
              pic.title = "Komunikace se serverem se nezdařila.";
              indicator.appendChild(pic);
            }           
        },
        onStart:function(o) {            
            input.disabled = true;
            if (aIndicator != null) {
              if (indicator.hasChildNodes()) {
                indicator.removeChild(indicator.lastChild);
              }
              var pic = new Image();
              pic.src = AJAXIMGFOLDER+AJAXLOADPIC;
              indicator.appendChild(pic);
            }
        },    
        onAbort:function(o) {
            input.disabled = false;
            if (aIndicator != null) {
              indicator.removeChild(indicator.lastChild);
              var pic = new Image();
              pic.src = AJAXIMGFOLDER+AJAXFAILPIC;
              pic.title = "Odeslání požadavku na server bylo stornováno.";
              indicator.appendChild(pic);
            }  
        }
      }
    };
    timestamp = new Date().getTime();
    aUrlParams = "&timestamp="+timestamp;
    //ajaxcache.put(timestamp, indicator);
    if (aParameters != null) {
      if (aParameters.target != null) {
        for(var i = 0; i < aParameters.target.length; i++) {
          if (YAHOO.lang.isArray(aParameters.target[i])) {
            for(var j = 0; j < aParameters.target[i].length; j++) {
              targetEl = document.getElementById(aParameters.target[i][j]);
              if (targetEl != null) {
                aUrlParams += "&"+targetEl.name+"="+targetEl.value;
              }                      
            }
          } else {
            targetEl = document.getElementById(aParameters.target[i]);
            if (targetEl != null) {
              aUrlParams += "&"+targetEl.name+"="+targetEl.value;
            }          
          }
        } 
      }
      if (aParameters.unitarget != null) {
        for(var i = 0; i < aParameters.unitarget.length; i++) {
          unitargetEl = document.getElementById(aParameters.unitarget[i][0]);
          if (unitargetEl != null) {
            aUrlParams += "&"+aParameters.unitarget[i][1]+"="+unitargetEl.value;
          }
        } 
      }      
    }
    YAHOO.util.Connect.initHeader( 'Content-Type', 'text/xml', false );
    if (aInput != null && aInput.name && aInput.value) {
      aUrl = aUrl+"&"+aInput.name+"="+aInput.value;
    }
    aUrl = aUrl+aUrlParams;
    YAHOO.util.Connect.asyncRequest('GET', aUrl, callback);
}

function checkCookie(c_name, value, expiredays) {
  c_value = value;
  c_start = document.cookie.indexOf(c_name + "=");
  if (c_start != -1) { 
    c_start = c_start + c_name.length+1;
    c_end = document.cookie.indexOf(";",c_start)
    if (c_end == -1) { 
      c_end = document.cookie.length;
    }
    c_value = unescape(document.cookie.substring(c_start,c_end));
  } else {
    setCookie(c_name, c_value, expiredays);
  }
  return c_value;
}

function setCookie(aName, aValue, aExpireDays) {
  var exdate = new Date();
  exdate.setDate(exdate.getDate()+aExpireDays);
  document.cookie=aName+ "=" +escape(aValue)+
  ((aExpireDays==null) ? "" : ";expires="+exdate.toGMTString());
}

function formatMoney(aNumber, c, d, t) {
	var n = aNumber, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
	return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}


// tohle predelat, bude vracet bud euro tvar nebo kc tvar, podle nejakyho globalniho parametru
function toMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, aRate) {
  return makeMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, aRate, LOCALE_RATEONE, LOCALE_DECIMALSEP, LOCALE_THOUSANDSEP, LOCALE_DECIMALPLACES, LOCALE_BEFORE, LOCALE_AFTER);
}

function toCzMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor) {
  return makeMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, 1, 1, LOCALE_DEFAULT_DECIMALSEP, LOCALE_DEFAULT_THOUSANDSEP, LOCALE_DEFAULT_DECIMALPLACES, LOCALE_DEFAULT_BEFORE, LOCALE_DEFAULT_AFTER);
}

function toEurMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, aRate) {
  return makeMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, aRate, 1, LOCALE_SECONDARY_DECIMALSEP, LOCALE_SECONDARY_THOUSANDSEP, LOCALE_SECONDARY_DECIMALPLACES, LOCALE_SECONDARY_BEFORE, LOCALE_SECONDARY_AFTER);
}

function makeMoneyFormat(aValue, aIsWithSymbol, aBeforePrizeDecor, aAfterPrizeDecor, aRate, aRateOne, aDecimalSep, aThousandSep, aDecimalPlaces, aBefore, aAfter) {
  if (aRate != 0) {
    rate = aRate;     
  } else {
    rate = LOCALE_RATE;
  }
  if (aIsWithSymbol) {
    partBefore = aBefore;
    partAfter = aAfter;
  } else {
    partBefore = "";
    partAfter =  "";
  }
  if (aDecimalPlaces == 0 && aDecimalSep != "") {
    additionalSep = aDecimalSep;
  } else {
    additionalSep = "";
  }
  return partBefore+aBeforePrizeDecor+formatMoney((aValue*aRateOne)/rate, aDecimalPlaces, aDecimalSep, aThousandSep)+additionalSep+aAfterPrizeDecor+partAfter;
}

function parseLocaleNumber(aLocaleNumber) {
  localeNumber = new String(aLocaleNumber);
  if (localeNumber.substr(0,1) == "-") {
    isNegative = true;
    localeNumber = localeNumber.substr(1,localeNumber.length-1);
  } else {
    isNegative = false;
  }
  if (LOCALE_DECIMALSEP != "") {
    chunks = localeNumber.split(LOCALE_DECIMALSEP, 2);
    totalpart1 = chunks[0];
    if (!chunks[1]) {
      totalpart2 = 0;
    } else {
      totalpart2 = chunks[1];
    }  
  } else {
    totalpart1 = localeNumber;
    totalpart2 = 0;     
  }
  totalpart1 = totalpart1.replace(LOCALE_THOUSANDSEP, "");
  newValue = parseFloat(new String(totalpart1+"."+totalpart2));
  if (isNegative) {
    return newValue*(-1);
  } else {
    return newValue;
  }  
}

function newWin(aUrl) {
  wasOpen  = false;
  win = window.open(aUrl);    
  return (typeof(win)=='object')?true:false;
}

