function Visual_list(listName) {
 this.listName = listName;
 this.confArr = VConf[listName];
 this.tmpStr = "";
 this.tmpItemPrice = "";
 this.tmpItemQuantity = "";
 this.formatedTotalPrice = "";
 this.formatTotalPriceRight = "";
 this.formatTotalPriceLeft = "";
 this.tmpHtmlStr = "";
 this.tmpTotalPrice = "";
 this.tmpNo = 0;
 this.regexp = null;
 this.regexpArr = new Array("\\.",",");
 this.regexpRplArr = new Array("",".");
 this.tmpArr = null;
 this.cookieSplitter = "; ";
 this.cookieValSep = "~";
 this.cookieKey = "";
 this.cookieVal = "";
 this.totalPrice = 0;
 this.tmpObj = null;
 this.cntr = 0;
 this.priceCntr = 0;
 this.objListItems = new Array();
 this.objListItemIds = null;
 this.objListItemState = null;
 this.isEmptyBasket = false;
 
 this.getListItems = getListItems;
 this.constructItemObjects = constructItemObjects;
 this.writeItemList = eval(this.confArr['write_function']);
 this.calculateTotalPrice = calculateTotalPrice;
 this.removeItem = removeItem;
 this.addItem = addItem;
 this.formatMathPrice = formatMathPrice;
 this.formatDisplayPrice = formatDisplayPrice;
 this.formatPriceThousands = formatPriceThousands;
 this.openListAction = openListAction;
 
 this.constructItemObjects();
}

function constructItemObjects() {  //constructs list items as objects
  this.tmpArr = null;
  this.tmpStr = this.getListItems();
  this.objListItemIds = new Array();
  this.objListItemState = new Array();
   if(this.tmpStr.indexOf(this.cookieValSep) == -1 && this.tmpStr.length > 0) {//if only one item
     this.tmpArr = new Array();
     this.tmpArr[0] = this.tmpStr;
     this.isEmptyBasket = false;
   }
   else if(this.tmpStr.length == 0) {//empty basket set first elem to null
     this.tmpArr = new Array();
     this.isEmptyBasket = true;
   }
   else if(this.tmpStr.indexOf(this.cookieValSep) != -1 && this.tmpStr.length > 0) {//more than one item in basket
     this.tmpArr = this.tmpStr.split(this.cookieValSep);
     this.isEmptyBasket = false;
   }
   
   if(!this.isEmptyBasket) {//if not empty basket
	  for(this.cntr=0;this.cntr<this.tmpArr.length;this.cntr++) {
	    this.objListItemIds[this.cntr] = this.tmpArr[this.cntr];
		this.objListItemState[this.tmpArr[this.cntr]] = true;
	    this.objListItems[this.tmpArr[this.cntr]] = new List_item(this.tmpArr[this.cntr],this.listName);
	  }
   }
       
 this.calculateTotalPrice();//calculate total price
 this.formatedTotalPrice = this.formatDisplayPrice();
}

function calculateTotalPrice() {
 this.totalPrice = 0;
 if(!this.isEmptyBasket) {
   for(this.priceCntr=0;this.priceCntr<this.objListItemIds.length;this.priceCntr++) {//iterate through basket item ids
     this.totalPrice += this.formatMathPrice(this.priceCntr);
   }
 }
}

function formatDisplayPrice() {//formats total price for display
  this.tmpTotalPrice = new String(this.totalPrice);

  if(this.tmpTotalPrice.indexOf(".") == -1)
   this.tmpTotalPrice = this.tmpTotalPrice + ",00";//adds two zeroes to the end
  else
   this.tmpTotalPrice = this.tmpTotalPrice.replace(".", ",");//from calculation there can only be one decimal point
  
  if((this.tmpTotalPrice.length - this.tmpTotalPrice.indexOf(",")) > 2)//handles many last decimals output
    this.tmpTotalPrice = this.tmpTotalPrice.slice(0,this.tmpTotalPrice.indexOf(",") + 3);
 
 this.tmpArr = this.tmpTotalPrice.split(",");
 this.formatTotalPriceRight = "," + this.tmpArr[1];
 this.formatTotalPriceLeft = this.tmpArr[0];
 this.formatPriceThousands();//sending left part of price
 this.tmpTotalPrice = this.formatTotalPriceLeft + this.formatTotalPriceRight;
 return this.tmpTotalPrice;
}

function formatPriceThousands() {
  if(this.formatTotalPriceLeft.length > 3) {
   this.formatTotalPriceRight = "." + this.formatTotalPriceLeft.slice(this.formatTotalPriceLeft.length - 3,this.formatTotalPriceLeft.length) + this.formatTotalPriceRight;
   this.formatTotalPriceLeft = this.formatTotalPriceLeft.slice(0,this.formatTotalPriceLeft.length - 3);
   this.formatPriceThousands(this.formatTotalPriceLeft);
  } else
      return (this.formatTotalPriceLeft + this.formatTotalPriceRight);  
}

function formatMathPrice(itemIdCntr) {//formats price for calculation
 this.tmpItemPrice = this.objListItems[this.objListItemIds[itemIdCntr]].itemPrice;
 this.tmpItemQuantity = this.objListItems[this.objListItemIds[itemIdCntr]].itemQuantity;
 this.tmpArr = this.tmpItemPrice.match(/,/g);
 if(this.tmpArr.length >= 1) {
	 for(var i=0;i<this.regexpArr.length;i++) {
	  this.regexp = eval("/" + this.regexpArr[i] + "/g");
	  this.tmpItemPrice = (this.tmpItemPrice).replace(this.regexp,this.regexpRplArr[i]);
	 }
 }
 return parseFloat(this.tmpItemPrice * this.tmpItemQuantity);
}

function getListItems() {  //returns string of values for desired list
 if(!document.cookie) return "";
 
 this.tmpArr = document.cookie.split(this.cookieSplitter);
   for(this.cntr=0;this.cntr<this.tmpArr.length;this.cntr++) {
     if(this.tmpArr[this.cntr].indexOf("=") != -1) {
       this.cookieKey = unescape(this.tmpArr[this.cntr].split("=")[0]);
       this.cookieVal = this.tmpArr[this.cntr].split("=")[1];
         if(this.cookieKey == this.listName)
                   return (unescape(this.cookieVal));
     }
   }
  return "";
}

function removeItem(itemId) {//removes item from basket
 deleteCookieVal(this.listName,itemId);
 deleteItemDataCookie(this.listName,itemId); 
 this.constructItemObjects();
 this.writeItemList();//writes basket again
}

function addItem(itemId,itemDesc,itemPrice,itemQuantity,itemDetailPage) {//to build simulation
 var tmpNum;
 var tmpStr;

 
 if(!itemQuantity)
    itemQuantity = "1";
 
 addValToCookieList(this.listName,itemId);
 addItemDataCookie(this.listName,itemId,itemDesc,itemPrice,itemQuantity,itemDetailPage);
 
 this.isEmptyBasket = false;
 this.constructItemObjects();
 this.writeItemList();
}

function openListAction(totalListPrice) {
  window.open("/hr/tools/go_" + this.listName + ".asp?listname=" + this.listName + "&totalPrice=" + totalListPrice,"","directories=no,height=500,menubar=no,resizable=yes,scrollbars=yes,width=600");
}

function writeBasketList() {
 this.tmpHtmlStr = "";
 this.tmpHtmlStr += "<div id='list-" + this.listName + "' class='" + this.confArr['list_class'] + "'>\n"
   if(!this.isEmptyBasket) {//if there are items in basket
	   for(this.cntr=0;this.cntr<this.objListItemIds.length;this.cntr++) {//for each item in basket write html
	   	this.tmpObj = this.objListItems[this.objListItemIds[this.cntr]];
		     this.tmpHtmlStr += "<div id='item-" + this.objListItemIds[this.cntr] + "'>";
		     this.tmpHtmlStr += "<table border='0' cellspacing='0' cellpading='0' width='100%'><tr>\n"
		     
		       if(this.tmpObj.itemDetailPage != "")
			 this.tmpHtmlStr += "<td width='60%'><font id='" + this.confArr['item_title_class'] + "'>&nbsp;" + this.tmpObj.itemQuantityStr + "</font><a href='" + this.tmpObj.itemDetailPage + "' class='" + this.confArr['item_title_href_class'] + "'>"+ this.tmpObj.itemName + "</a></td>\n";
		       else
		         this.tmpHtmlStr += "<td width='60%'><font id='" + this.confArr['item_title_class'] + "'>"+ this.tmpObj.itemQuantityStr + "&nbsp;" + this.tmpObj.itemName +  "</font></td>\n";
		         
			 this.tmpHtmlStr += "<td width='30%' align='right'><font id='" + this.confArr['item_price_class'] + "'>"+ this.tmpObj.itemPrice + "</font></td>\n";
			 this.tmpHtmlStr += "<td width='10%' align='right'><a href=\"javascript:listObjArr['" + this.listName + "'].removeItem('" + this.objListItemIds[this.cntr] + "')\";><img src='" + this.confArr['images_path'] + "list_delete.gif' border='0'></a></td>";
			 this.tmpHtmlStr += "</tr></table>\n";
			 this.tmpHtmlStr += "</div>\n";
	   }
	 this.tmpHtmlStr += "<div>\n";
	 this.tmpHtmlStr += "<table border='0' cellspacing='0' cellpading='0' width='100%'>\n";
	 //this.tmpHtmlStr += "<td width='70%' align='right' style='padding-right:10px;'><font id='" + this.confArr['item_total_class'] + "'>" + this.confArr['total_price_title'] + "</font></td>\n";
	 this.tmpHtmlStr += "<td width='90%' align='right' id='total_price-" + this.listName + "'><font id='" + this.confArr['item_total_class'] + "'>" + this.confArr['total_price_title'] + "</font>&nbsp;<font id='" + this.confArr['total_price_class'] + "'>" + this.formatedTotalPrice + "</font></td>\n";
	 this.tmpHtmlStr += "<td width='10%' align='right'><font id='" + this.confArr['total_price_class'] + "'>" + this.confArr['list_currency'] + "</font></td>";
	 this.tmpHtmlStr += "</tr></table></div>\n";
	 
   } else {
	 this.tmpHtmlStr += "<font id='" + this.confArr['item_title_class'] + "'>" + this.confArr['nodata_in_basket'] + "</font></center>";
   }
 this.tmpHtmlStr += "</div>\n";
   if(!this.isEmptyBasket) {
     this.tmpHtmlStr += "<div id='list_action-" + this.listName + "'>\n";
     this.tmpHtmlStr += "<table cellspacing='0' cellpadding='0' border='0' width='100%'>\n";
     this.tmpHtmlStr += "<tr><td align='right' style='padding-right:0px'><a href=\"javascript:listObjArr['" + this.listName + "'].openListAction('" + this.formatedTotalPrice + "')\"><img src='" + this.confArr['images_path'] + "general-kupi.gif' border='0'></a></td></tr>\n";
     this.tmpHtmlStr += "</table>\n";
     this.tmpHtmlStr += "</div>\n";
   }
 document.getElementById(this.listName + "-list_td").innerHTML = this.tmpHtmlStr;
}

function writeQuotaList() {
 this.tmpHtmlStr = "";
 this.tmpHtmlStr += "<div id='list-" + this.listName + "' class='" + this.confArr['list_class'] + "'>\n"
   if(!this.isEmptyBasket) {//if there are items in basket
	   for(this.cntr=0;this.cntr<this.objListItemIds.length;this.cntr++) {//for each item in basket write html
	   	this.tmpObj = this.objListItems[this.objListItemIds[this.cntr]];
		     this.tmpHtmlStr += "<div id='item-" + this.objListItemIds[this.cntr] + "'>";
		     this.tmpHtmlStr += "<table border='0' cellspacing='0' cellpading='0' width='100%'><tr>\n"
		     
		       if(this.tmpObj.itemDetailPage != "")
			 this.tmpHtmlStr += "<td width='90%'><a href='" + this.tmpObj.itemDetailPage + "' class='" + this.confArr['item_title_href_class'] + "'>"+ this.tmpObj.itemName + "</a><font id='" + this.confArr['item_title_class'] + "'>&nbsp;" + this.tmpObj.itemQuantityStr + "</font></td>\n";
		       else
		         this.tmpHtmlStr += "<td width='90%'><font id='" + this.confArr['item_title_class'] + "'>"+ this.tmpObj.itemName + "&nbsp;" + this.tmpObj.itemQuantityStr + "</font></td>\n";
		 
			 this.tmpHtmlStr += "<td width='10%' align='right'><a href=\"javascript:listObjArr['" + this.listName + "'].removeItem('" + this.objListItemIds[this.cntr] + "')\";><img src='" + this.confArr['images_path'] + "list_delete.gif' border='0'></a></td>";
			 this.tmpHtmlStr += "</tr></table>\n";
			 this.tmpHtmlStr += "</div>\n";
	   }
   } else {
	 this.tmpHtmlStr += "<center><font id='" + this.confArr['item_title_class'] + "'>" + this.confArr['nodata_in_basket'] + "</font></center>";
   }
 this.tmpHtmlStr += "</div>\n";
    if(!this.isEmptyBasket) {
     this.tmpHtmlStr += "<div id='list_action-" + this.listName + "'>\n";
     this.tmpHtmlStr += "<table cellspacing='0' cellpadding='0' border='0' width='100%'>\n";
     this.tmpHtmlStr += "<tr><td align='right' style='padding-right:10px'><a href=\"javascript:listObjArr['" + this.listName + "'].openListAction()\"><img src='" + this.confArr['images_path'] + "general-zatrazi-ponudu.gif' border='0'></a></td></tr>\n";
     this.tmpHtmlStr += "</table>\n";
     this.tmpHtmlStr += "</div>\n";
   }
 document.getElementById(this.listName + "-list_td").innerHTML = this.tmpHtmlStr;
}

function writeDesignerList() {
 this.tmpHtmlStr = "";
 this.tmpHtmlStr += "<div id='list-" + this.listName + "' class='" + this.confArr['list_class'] + "'>\n"
   if(!this.isEmptyBasket) {//if there are items in basket
	   for(this.cntr=0;this.cntr<this.objListItemIds.length;this.cntr++) {//for each item in basket write html
	   	this.tmpObj = this.objListItems[this.objListItemIds[this.cntr]];
		     this.tmpHtmlStr += "<div id='item-" + this.objListItemIds[this.cntr] + "'>";
		     this.tmpHtmlStr += "<table border='0' cellspacing='0' cellpading='0' width='100%'><tr>\n"
		 
		       if(this.tmpObj.itemDetailPage != "")
			 this.tmpHtmlStr += "<td width='90%'><a href='" + this.tmpObj.itemDetailPage + "' class='" + this.confArr['item_title_href_class'] + "'>"+ this.tmpObj.itemName + "</a><font id='" + this.confArr['item_title_class'] + "'>&nbsp;" + this.tmpObj.itemQuantityStr + "</font></td>\n";
		       else
		         this.tmpHtmlStr += "<td width='90%'><font id='" + this.confArr['item_title_class'] + "'>"+ this.tmpObj.itemName + "&nbsp;" + this.tmpObj.itemQuantityStr + "</font></td>\n";
		 
			 this.tmpHtmlStr += "<td width='10%' align='right'><a href=\"javascript:listObjArr['" + this.listName + "'].removeItem('" + this.objListItemIds[this.cntr] + "')\";><img src='" + this.confArr['images_path'] + "list_delete.gif' border='0'></a></td>";
			 this.tmpHtmlStr += "</tr></table>\n";
			 this.tmpHtmlStr += "</div>\n";
	   }
   } else {
	 this.tmpHtmlStr += "<center><font id='" + this.confArr['item_title_class'] + "'>" + this.confArr['nodata_in_basket'] + "</font></center>";
   }
 this.tmpHtmlStr += "</div>\n";
    if(!this.isEmptyBasket) {
     this.tmpHtmlStr += "<div id='list_action-" + this.listName + "'>\n";
     this.tmpHtmlStr += "<table cellspacing='0' cellpadding='0' border='0' width='100%'>\n";
     this.tmpHtmlStr += "<tr><td align='right' style='padding-right:10px'><a href=\"javascript:listObjArr['" + this.listName + "'].openListAction()\"><img src='" + this.confArr['images_path'] + "general-posalji-dizajneru.gif' border='0'></a></td></tr>\n";
     this.tmpHtmlStr += "</table>\n";
     this.tmpHtmlStr += "</div>\n";
   }
 document.getElementById(this.listName + "-list_td").innerHTML = this.tmpHtmlStr;
}