/*
* checkAttributes.js for Product Attributes plugin
* Wizzud : 12/04/06 - v2.2 mod for lightboxGallery compatibility
*/
/**
* Checks that any attributes have been selected
* @return boolean
* @param object (form)
* @param array (parameter array for checking attributes selected)
* @param string (error message)
* @param array (parameter array for passing to checkForm)
*/
function checkAttributes( form, ids, msg, chkFm ){
  var bValid = true;
  var oFocus;
  var obj;

  for( i in ids ){
    if(obj = form[ids[i]]){
      if( obj.options[obj.selectedIndex].value == '' ){
        if( bValid ){
          bValid = false;
          oFocus = obj;
        }
 	  	  obj.style.backgroundColor = '#ff8080';
      }else{
  		  obj.style.backgroundColor = '#ffffff';
	  	}
	  }
  }

  if( !bValid ) {
    if( msg != '' ){
      alert(msg);
    }
    oFocus.focus();
    return false;
  } else {
    if( chkFm == null ){
      return true;
    }else{
      return checkForm(form, chkFm);
    }
  }
} // end function checkAttributes
/**
* Checks each attribute select and adjusts the display price appropriately
* @return void
* @param object (select)
*/
function checkAttributes_Offset(obj){
  var currSym = gEBI('attributeCurrencySymbol').value;
  var aOff = attributeOffsets;
  aOff[obj.name][1] = false;
  aOff[obj.name][2] = 0;
  if( obj.options[obj.selectedIndex].value == '' ){aOff[obj.name][0] = 0;}
  else{

//purchase number?
if (obj.options[obj.selectedIndex].text.substr(0,1) == '#') {
	var purchaseI = obj.options[obj.selectedIndex].text.indexOf('(');
	if (purchaseI >= 0) {
		var purchaseN = obj.options[obj.selectedIndex].text.substr(1,purchaseI-2);
		purchaseN = parseInt(purchaseN);
		aOff[obj.name][2] = purchaseN;
		var purchaseB = gEBI('iQuantity');
		if (purchaseB.value < purchaseN) {
			purchaseB.value = purchaseN;
		}
	}
}

    // pattern looks for containing brackets, and allows for optional currency symbol in 3 places...
    var pattern = /\(.*[=|+|-].*\d+\.?\d*%?[^%]*\)$/g;
	  var result = obj.options[obj.selectedIndex].text.match(pattern);
  	if( result != null ){
      // slice removes containing brackets...
      var offset = result[result.length-1].slice(1,-1);
      // remove currency symbol if present...
      if(currSym != ''){
        var currSymPos = offset.indexOf(currSym);
        if(currSymPos >= 0){
          var newOffset = offset.substr(0,currSymPos)+offset.substr(currSymPos+currSym.length);
          offset = newOffset;
        }
      }
      	if( offset.substr(offset.length-1) == '%' ) {
		aOff[obj.name][0] = offset.substr(0,offset.length-1);
        	aOff[obj.name][1] = '1';
      	} else {
		if( offset.substr(0,1) == '=' ) {
			aOff[obj.name][0] = offset.substr(1);
			aOff[obj.name][1] = '2';
		} else {  
			aOff[obj.name][0] = offset;
			aOff[obj.name][1] = '0';
		}
	}
    }else{aOff[obj.name][0] = 0;}
  }
  var show = gEBI('price');
  var hide = gEBI('fPrice');
  var nPrice = parseFloat(hide.firstChild.nodeValue);
  var oPrice = parseFloat(hide.firstChild.nodeValue);

var nPrice0 = 0;
var nPrice1 = 0;
var nPrice2 = 0;

  for(var i in aOff){
    if(parseFloat(aOff[i][0]) != 0){
      //percentages are based on original price
      	if(aOff[i][1] == '1') {
		nPrice1 = nPrice1 + ((oPrice * parseFloat(aOff[i][0])) / 100);
      	} else {
		if(aOff[i][1] == '0'){
			nPrice0 = nPrice0 + parseFloat(aOff[i][0]);
		} else {
			if(aOff[i][1] == '2'){
				nPrice2 = parseFloat(aOff[i][0]);
			}
		} 
    	}
    }
  }

if (nPrice2 != 0) {
	nPrice = nPrice2;
}
nPrice = nPrice + nPrice0 + nPrice1;

  show.firstChild.nodeValue = fix(nPrice);
} // end function checkAttributes_Offset
/**
* Sets up the array for use by the checkAttributes_Offset function above
* @return object (of array[s])
* @param array
*/
function checkAttributes_Setup(ary){
  var rtn = new Object();
  if(ary.length > 0){for(var i in ary){rtn[ary[i]] = Array(0,false,0);}}
  return rtn;
} // end function checkAttributes_Setup
/**
* Clears down the selects so that a redisplay of the page won't keep any previously selected options
* @return void
*/
function checkAttributes_Clear(){
  var j;
  if(attributeOffsets.length > 0){for(var i in attributeOffsets){if((j=gEBI(i)) && (j.selected)){j.selectedIndex=0;}}}
}




/**
* Checks purchase number and adjusts the display price appropriately
* @return void
* @param object (select)
*/
function checkAttributes_Number(number){

var currSym = gEBI('attributeCurrencySymbol').value;
var aOff = attributeOffsets;

var purchasenumber;
var j = 0;
for(var i in aOff) {
	if(parseFloat(aOff[i][0]) != 0) {
		if(parseFloat(aOff[i][2]) > 0) {
			purchasenumber = i;
			if (purchasenumber = gEBI(purchasenumber)) {
				if (purchasenumber.length > 0) {
					for (var j=0; j<purchasenumber.length; j++) {
						if (purchasenumber.options[j].text.substr(0,1) == '#') {
							var purchaseI = purchasenumber.options[j].text.indexOf('(');
							if (purchaseI >= 0) {
								var purchaseN = purchasenumber.options[j].text.substr(1,purchaseI-2);
								purchaseN = parseInt(purchaseN);
								if (number < purchaseN) {
									break;
								}
							}
						}
					}
					j=j-1;
					if (j>0) {
						break;
					}
				}
			}
		}
	}					
}
if (j>0) {
	var purchaseN = purchasenumber.options[j].text.substr(1,purchaseI-2);
	purchaseN = parseInt(purchaseN);
	purchasenumber.selectedIndex = j;
	
	aOff[i][2] = purchaseN;
	aOff[i][1] = false;
	aOff[i][0] = 0;
	// pattern looks for containing brackets, and allows for optional currency symbol in 3 places...
	var pattern = /\(.*[=|+|-].*\d+\.?\d*%?[^%]*\)$/g;
	var result = purchasenumber.options[j].text.match(pattern);
	if( result != null ){
		// slice removes containing brackets...
		var offset = result[result.length-1].slice(1,-1);
		// remove currency symbol if present...
		if(currSym != ''){
			var currSymPos = offset.indexOf(currSym);
			if(currSymPos >= 0){
				var newOffset = offset.substr(0,currSymPos)+offset.substr(currSymPos+currSym.length);
				offset = newOffset;
		        }
		}
		if( offset.substr(offset.length-1) == '%' ) {
			aOff[i][0] = offset.substr(0,offset.length-1);
	        	aOff[i][1] = '1';
		} else {
			if( offset.substr(0,1) == '=' ) {
				aOff[i][0] = offset.substr(1);
				aOff[i][1] = '2';
			} else {  
				aOff[i][0] = offset;
				aOff[i][1] = '0';
			}
		}
	}
	else {
		aOff[i][0] = 0;
	}
	var show = gEBI('price');
	var hide = gEBI('fPrice');
	var nPrice = parseFloat(hide.firstChild.nodeValue);
	var oPrice = parseFloat(hide.firstChild.nodeValue);

	var nPrice0 = 0;
	var nPrice1 = 0;
	var nPrice2 = 0;

	for(var i in aOff){
		if(parseFloat(aOff[i][0]) != 0){
			//percentages are based on original price
			if(aOff[i][1] == '1') {
				nPrice1 = nPrice1 + ((oPrice * parseFloat(aOff[i][0])) / 100);
      			} else {
				if(aOff[i][1] == '0'){
					nPrice0 = nPrice0 + parseFloat(aOff[i][0]);
				} else {
					if(aOff[i][1] == '2'){
						nPrice2 = parseFloat(aOff[i][0]);
					}
				} 
    			}
		}
	}
	if (nPrice2 != 0) {
		nPrice = nPrice2;
	}
	nPrice = nPrice + nPrice0 + nPrice1;
	show.firstChild.nodeValue = fix(nPrice);												
}

} // end function checkAttributes_Offset

/**
* Checks purchase number and adjusts the display number appropriately
* @return void
* @param object (select)
*/
function checkAttributes_Aantal(obJ, numberO){
	if (obJ.value < numberO) {
		obJ.value = numberO;
	}
}


