// DO NOT REMOVE THE COMMENT LINE BELOW
// $Id: reqform.js 491 2007-04-05 15:40:07Z mitko $

DomainRE = location.href.match( /:\/\/(www\.)?([^\/:]+)/ );
sDomain = '';
sDomain += DomainRE[1]?DomainRE[1]:'';
sDomain += DomainRE[2]?DomainRE[2]:'';
sCookieDomain = DomainRE[2]?'.'+DomainRE[2]:'';

GotoCheckoutAfterAdd = true;
TaxRate = 0.20;

if( !bLanguageDefined ){
	
	RelativeCheckoutLink = "/cgi-bin/e-cms/vis/vis.pl?s=001&p=0205&n=000002";
	
	AddRequestNotice = "";
	MiscNote = "You can add more items to your request, before submitting it";
	RequestExistsNotice = "Item already requested";
	EmptyRequestNotice = "Your request is empty.<br>You can make inquiry about specific property by clicking<br>REQUEST ADDITIONAL INFO button on the property page";
	RemoveRequestCaption = "Remove";
	RequestTableCaption = "Requested items";
	SendRequestCaption = "send";
	
	strCurrencySymbol = "BGN";
	
	// table headings
	HeadItemId		= "ID";
	HeadItemName	= "Name";
	HeadItemQty   = "Qty";
	HeadItemPrice	= "Price";
	HeadItemSum		= "Sum";
	HeadItemDescr	= "Description";
	
	HeadSubtotal = "Subtotal";
	HeadTax		= "VAT";
	HeadTotal = "Total";
	
	bLanguageDefined = true;
}


SmallRequestStyle = "class=\"request\"";
BigRequestStyle = "class=\"checkout\"";

// form input names
OutputItemId		= "IID_";
OutputItemName	= "INM_";
OutputItemQty	= "IQT_";
OutputItemPrice	= "IPR_";
OutputItemDescr	= "IDS_";
OutputItemSum = "ISU_";

CheckoutLink = 'http://'+sDomain + RelativeCheckoutLink;

if(RelativeCheckoutLink == ""){
	alert("Invalid checkout link!");
}

function ManageRequest( bDisplay , bAllowRemove, bShowHeadings, bShowItemQty, bShowTotals) {	
	 var iNumberRequested = 0;
	 var iTableCols				= 4; // id, name, price, descr
   var strOutput      = "";   //String to be written to page
   
   var fTotal         = 0;    // Total cost of order
   var fCost					= 0;		// Item Cost (qty * price)
   var fTax           = 0;    // Tax amount
   
   iNumberRequested = GetCookie("NumberRequested");
   if ( iNumberRequested == null )
      iNumberRequested = 0;
   if ( bDisplay ){
      strOutput = "<TABLE "+BigRequestStyle+">";
      
      if( bShowHeadings ){
      	strOutput += "<TR>";
      	strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemId+"</TD>";
      	strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemName+"</TD>";
      	if(bShowItemQty){
      		strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemQty+"</TD>";
      		iTableCols++;
      	}
      	strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemPrice+"</TD>";
      	if(bShowItemQty){
      		strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemSum+"</TD>";
      		iTableCols++;
      	}
      	strOutput += "<TD "+BigRequestStyle+" align=\"center\">"+HeadItemDescr+"</TD>";
      	if( bAllowRemove ){ 
      		strOutput += "<TD "+BigRequestStyle+"> </TD>";
      		iTableCols++;
      	}
      	strOutput += "</TR>";
      }
      
   		if ( iNumberRequested == 0 ) {
   			if( bShowHeadings )
      		strOutput += "<TR colspan=\""+iTableCols+"\"><TD "+BigRequestStyle+" align=\"center\"><B>"+EmptyRequestNotice+"</B></TD></TR>"
      	else
      		strOutput += "<TR><TD "+BigRequestStyle+" align=\"center\"><B>"+EmptyRequestNotice+"</B></TD></TR>";
   		}
  }
   for ( i = 1; i <= iNumberRequested; i++ ) {
      fCost = 0;
      
      NewRequest = "Request." + i;
      database = "";
      
      database = GetCookie(NewRequest);
      Token0 = database.indexOf("|", 0);						// id
      Token1 = database.indexOf("|", Token0+1);			// name
      Token2 = database.indexOf("|", Token1+1);			// price
      Token3 = database.indexOf("|", Token2+1);			// qty
      Token4 = database.indexOf("|", Token3+1);			// description
      
      fields = new Array;
      fields[0] = database.substring( 0, Token0 );									// id
      fields[1] = database.substring( Token0+1, Token1 );						// name
      fields[2] = database.substring( Token1+1, Token2 );						// price
      fields[3] = database.substring( Token2+1, Token3 );						// qty
      fields[4] = database.substring( Token3+1, database.length );	// descr
      
      fTotal     += (parseInt(fields[3]) * parseFloat(fields[2]) );
      fTax        = (fTotal * TaxRate);
      fCost				= moneyFormat( parseInt(fields[3]) * parseFloat(fields[2]) );
      
      strTotal    = moneyFormat(fTotal);
      strTax      = moneyFormat(fTax);   
      
      if ( bDisplay ) {
         strOutput += "<TR><TD "+BigRequestStyle+">"  + fields[0] + "</TD>";
         strOutput += "<TD "+BigRequestStyle+">"  + fields[1] + "</TD>";
         if( bShowItemQty ){
         	strOutput += "<TD "+BigRequestStyle+"><input type=text id=\"" + OutputItemQty + i + "\" name=\"" + OutputItemQty + i + "\" value=\"" + parseInt(fields[3]) + "\" align=\"right\"  onChange=\"DoChangeItemSum('"+i+"')\" style=\"{text-align: right;}\"></TD>";
         }
         strOutput += "<TD "+BigRequestStyle+" align=\"right\">"  + moneyFormat(parseFloat(fields[2])) +"&nbsp;"+strCurrencySymbol+ "</TD>";
         if( bShowItemQty ){
         	strOutput += "<TD "+BigRequestStyle+"><input type=text id=\"" + OutputItemSum + i + "\" name=\"" + OutputItemSum + i + "\" value=\"" + moneyFormat(fCost) + "\" style=\"{text-align: right;}\" readOnly>&nbsp;" + strCurrencySymbol +"</TD>";
         }
         strOutput += "<TD "+BigRequestStyle+">"  + fields[4] + "</TD>";
         if(bAllowRemove)
         	strOutput += "<TD "+BigRequestStyle+" align=\"center\"><input type=button "+BigRequestStyle+" value=\""+RemoveRequestCaption+"\" onClick=\"RemoveFromRequest('"+i+"')\"></TD>";
                  	
         strOutput += "</TR>";
      }
      strFooter = i;
            
      strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">";
      strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[1] + "\">";
      strOutput += "<input type=hidden id=\""+OutputItemPrice + strFooter+"\" name=\"" + OutputItemPrice + strFooter + "\" value=\"" + moneyFormat(fields[2]) + "\">";
      strOutput += "<input type=hidden name=\"" + OutputItemDescr + strFooter + "\" value=\"" + fields[4] + "\">";
      
   }
   
   // print totals table
	 if( bShowTotals){
		strOutput += "<TR><TD colspan=\""+iTableCols+"\">&nbsp</TD></TD>";
		var col1 = 0;
		var col2 = 0;
		if(bAllowRemove){
			col1 = iTableCols-2;
			col2 = 2;
		} else {
			col1 = iTableCols-1;
			col2 = 1;
		}
		
		strOutput += "<TR><TD colspan=\""+col1+"\" width=\"70%\" "+BigRequestStyle+">"+HeadSubtotal+"</TD><TD colspan=\""+col2+"\" "+BigRequestStyle+" align=\"right\">"+moneyFormat(fTotal)+"&nbsp;"+strCurrencySymbol+"</TD></TR>";
		strOutput += "<TR><TD colspan=\""+col1+"\" "+BigRequestStyle+">"+HeadTax+"</TD><TD colspan=\""+col2+"\" "+BigRequestStyle+" align=\"right\">"+moneyFormat(fTax)+"&nbsp;"+strCurrencySymbol+"</TD></TR>";
		strOutput += "<TR><TD colspan=\""+col1+"\" "+BigRequestStyle+">"+HeadTotal+"</TD><TD colspan=\""+col2+"\" "+BigRequestStyle+" align=\"right\">"+moneyFormat(fTotal + fTax)+"&nbsp;"+strCurrencySymbol+"</TD></TR>";   	
		
		strOutput += "</TABLE>";
	}
   
   strOutput += "</TABLE>";
   
   if(bDisplay && (MiscNote.length > 0) && (iNumberRequested>0)){
   	strOutput += "<P "+BigRequestStyle+">"+MiscNote+"</P>"
   }
   
   strOutput += "<input type=hidden name=\"total_items\" value=\"" + iNumberRequested + "\">";
   strOutput += "<input type=hidden name=\"request_subtotal\" value=\"" + moneyFormat(fTotal) + "\">";
   strOutput += "<input type=hidden name=\"request_tax\" value=\"" + moneyFormat(fTax) + "\">";
   strOutput += "<input type=hidden name=\"request_total\" value=\"" + moneyFormat(fTotal + fTax) + "\">";
   
   document.write(strOutput);
   document.close();
}


function ShowSmallRequest(bShowRemove, bShowHeadings){
	iNumberRequested = GetCookie("NumberRequested");
  if ( iNumberRequested == null )
      iNumberRequested = 0;
  
  strOutput = "";
  
  if(iNumberRequested > 0){    
  	strOutput += "<table "+SmallRequestStyle+">";
  	
  	if( bShowHeadings ){
  		if(bShowRemove){
  			strOutput += "<tr><td colspan=2 "+SmallRequestStyle+" align=\"center\">"+RequestTableCaption+"</td></tr>"
  		} else {
  			strOutput += "<tr><td "+SmallRequestStyle+">"+RequestTableCaption+"</td></tr>"
  		}
  	}
  	
		for(i=1; i <= iNumberRequested; i++){
			NewRequest = "Request." + i;
	    database = "";
	    database = GetCookie(NewRequest);
	
	    Token0 = database.indexOf("|", 0);
	    
	    fields = new Array;
	    fields[0] = database.substring( 0, Token0 );
	    
	    strOutput += "<tr><td "+SmallRequestStyle+">"+fields[0]+"</td>";
	    if(bShowRemove){
	    	//strOutput += "<td "+SmallRequestTableRow+"><button onClick=\"RemoveFromRequest("+i+")\"><img src=/e-internal/fc_prop_remove.gif border=0></button></td>";
	    	strOutput += "<td "+SmallRequestStyle+"><input type=button "+SmallRequestStyle+" onClick=\"RemoveFromRequest("+i+")\" value=\""+RemoveRequestCaption+"\"></td>";
	    }
	    strOutput += "</tr>";
		}	
		if(bShowRemove){
			strOutput += "<tr><td colspan=2 "+SmallRequestStyle+" align=\"center\"><a "+SmallRequestStyle+" href=\""+CheckoutLink+"\">"+SendRequestCaption+"</a></td></tr>";
		} else {
			strOutput += "<tr><td "+SmallRequestStyle+" align=\"center\"><a "+SmallRequestStyle+" href=\""+CheckoutLink+"\">"+SendRequestCaption+"</a></td></tr>";
		}
		
		strOutput += "</table>";
	}
	
	
	document.write(strOutput);
	document.close();
}

function AddToRequest(itemId, itemName, itemQty, itemPrice, itemDescr) {
	var iNumberRequested = 0;	
	var iQty = (parseInt(itemQty) > 0)?parseInt(itemQty):1;
	
	// replace decimal comma with dot in price
	var strPrice = new String(itemPrice);
	strPrice = strPrice.replace(",",".");
	
	if((iQty <= 0) || (parseFloat(strPrice)<=0.0)){
		alert("Invalid qty or price!");
		return;
	}
		
	iNumberRequested = GetCookie("NumberRequested");
	if ( iNumberRequested == null )
		iNumberRequested = 0;
      
	if( ! RequestExists(itemId) ){  
		iNumberRequested++;
		dbUpdatedRequest = itemId + '|' + itemName + '|' + strPrice +'|'+ iQty + '|' +itemDescr;
		strNewRequest = "Request." + iNumberRequested;
		
		SetCookie(strNewRequest, dbUpdatedRequest, null, "/", sCookieDomain);
		SetCookie("NumberRequested", iNumberRequested, null, "/", sCookieDomain);
		
		if( AddRequestNotice.length > 0 )
			alert(AddRequestNotice);
	
		if(GotoCheckoutAfterAdd){
			location.href = CheckoutLink;
		} else {
			location.href = location.href;
		}
	} else {
		if(RequestExistsNotice.length > 0)
			alert(RequestExistsNotice);
	}
}

function DoChangeItemSum( itemIdx ){
	//var sum = document.getElementById(OutputItemSum+itemIdx);
	//var price = document.getElementById(OutputItemPrice+itemIdx);
	var qty = document.getElementById(OutputItemQty+itemIdx);
	//if(sum && price && qty){
	//	sum.value = moneyFormat(parseInt(qty.value) * parseFloat(price.value));
	//}
	if(qty){
		if(parseInt(qty.value) > 0){
			if( ChangeQuantity(itemIdx,parseInt(qty.value)) ){
				location.href = location.href;
			}
		}
	}
}

function RequestExists( itemId ){
	var exists = false;
	var iNumberRequested = GetCookie("NumberRequested");
	
	if ( iNumberRequested == null )
      iNumberRequested = 0;
 
 	for ( i = 1; i <= iNumberRequested; i++ ) {
      database = GetCookie("Request."+i);
      Token0 = database.indexOf("|", 0);							// item id
      fields = new Array;
      fields[0] = database.substring( 0, Token0 );     
  
  		if(fields[0] == itemId)    {
  			exists = true;
  			break;
  		}
	}
	
	return exists;
}

function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if ( endstr == -1 )
      endstr = document.cookie.length;
   return(unescape(document.cookie.substring(offset, endstr)));
}
function FixCookieDate (date) {
   var base = new Date(0);
   var skew = base.getTime();
   date.setTime (date.getTime() - skew);
}
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 SetCookie (name,value,expires,path,domain,secure) {
   document.cookie = name + "=" + escape (value) +
                     ((expires) ? "; expires=" + expires.toGMTString() : "") +
                     ((path) ? "; path=" + path : "") +
                     ((domain) ? "; domain=" + domain : "") +
                     ((secure) ? "; secure" : "");
}
function DeleteCookie (name,path,domain) {
   if ( GetCookie(name) ) {
      document.cookie = name + "=" +
                        ((path) ? "; path=" + path : "") +
                        ((domain) ? "; domain=" + domain : "") +
                        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}
function RemoveRequest( itemId ){
	 iNumberRequested = GetCookie("NumberRequested");
   if ( iNumberRequested == null )
      iNumberRequested = 0;
	for ( i = 1; i <= iNumberRequested; i++ ) {
      database = GetCookie("Request."+i);
      Token0 = database.indexOf("|", 0);
      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Item ID
      if( fields[0] == itemId ){
      	RemoveFromRequest(i);
      	break;
      }
	}
}
function RemoveFromRequest(RemRequest) {
	NumberRequested = GetCookie("NumberRequested");
	
	for ( i=RemRequest; i < NumberRequested; i++ ) {
		NewRequest1 = "Request." + (i+1);
		NewRequest2 = "Request." + (i);
		database = GetCookie(NewRequest1);
		SetCookie (NewRequest2, database, null, "/", sCookieDomain);
	}
	
	NewRequest = "Request." + NumberRequested;
	SetCookie ("NumberRequested", NumberRequested-1, null, "/", sCookieDomain);
	DeleteCookie(NewRequest, "/");
	location.href=location.href;
}

function OpenWin(sURL,sName,sOps){
	if(sURL != null){
		window.open(sURL, sName, sOps);
	}
}
function ClearRequest() {
	iNumberRequested = GetCookie("NumberRequested");
  if ( iNumberRequested == null )
  	iNumberRequested = 0;
  	
  for ( j = 1; j <= iNumberRequested; j++ ) {
  	NumberRequested = GetCookie("NumberRequested");
      for ( i=j; i < NumberRequested; i++ ) {
         NewRequest1 = "Request." + (i+1);
         NewRequest2 = "Request." + (i);
         database = GetCookie(NewRequest1);
         SetCookie (NewRequest2, database, null, "/", sCookieDomain);
      }
      NewRequest = "Request." + NumberRequested;
      SetCookie ("NumberRequested", NumberRequested-1, null, "/", sCookieDomain);
      DeleteCookie(NewRequest, "/");
  }
  location.href=location.href;
}

function moneyFormat(input) {
   var dollars = Math.floor(input);
   if( isNAN(dollars) ){
   		return "";
  	}
   var tmp = new String(input);

   for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) {
      if ( tmp.charAt(decimalAt)=="." )
         break;
   }

   var cents  = "" + Math.round(input * 100);
   cents = cents.substring(cents.length-2, cents.length)
           dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

   if ( cents == "0" )
      cents = "00";

   return(dollars + "." + cents);
}

function ChangeQuantity(ItemIdx,NewQuantity) {
   if ( !isNaN(NewQuantity) ) {
      UpdRequest = "Request." + ItemIdx;
      database = "";
      
      database = GetCookie(UpdRequest);
      Token0 = database.indexOf("|", 0);						// id
      Token1 = database.indexOf("|", Token0+1);			// name
      Token2 = database.indexOf("|", Token1+1);			// price
      Token3 = database.indexOf("|", Token2+1);			// qty
      Token4 = database.indexOf("|", Token3+1);			// description
      
      fields = new Array;
      fields[0] = database.substring( 0, Token0 );									// id
      fields[1] = database.substring( Token0+1, Token1 );						// name
      fields[2] = database.substring( Token1+1, Token2 );						// price
      fields[3] = database.substring( Token2+1, Token3 );						// qty
      fields[4] = database.substring( Token3+1, database.length );	// descr

			if( parseInt(fields[3]) != NewQuantity ){
      	dbUpdatedRequest = fields[0] + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       NewQuantity + "|" +
                       fields[4];
                       
      	strUpdRequest= "Request." + ItemIdx;
      	DeleteCookie(UpdRequest, "/");
      	SetCookie(strUpdRequest, dbUpdatedRequest, null, "/", sCookieDomain);
      	return true;
      }
   }
   return false;
}
