// JavaScript Document

// Dimension Tables Display Function

function showDimTables(target,idnum,container,multi){
	var curVal = ( multi > 0 ) ? ei(container).innerHTML : '' ;
	var url;
	var element;
	var extra = (issetObject('Tray_A','div') == true) ? 'wTray' : 'noTray';
	url = '/seatingOF/resources/includes/'+target+'.php';
	url = url+'?needle='+idnum;
	url = url+'&div='+container;
	url = url+'&extra='+extra;
	url = url+'&sid='+Math.random();
	xmlhttp.onreadystatechange=function(){
		element = ei(container);
		if(xmlhttp.readyState === 1){
                    displayElement(container);
                    element.innerHTML='<img id="loadingImage" src="/images/loading/trans_rolling.gif" height="16" width="16" alt="loading" /> <blink>Processing...</blink>';
		} else if(xmlhttp.readyState == 4) {
                    var addPrev = (curVal.length > 0) ? curVal : '' ;
                    element.innerHTML=addPrev+xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET',url,true);
	xmlhttp.send(null);
}

function jqShowDimTables(target,idnum,container){
    var el;
    var url;
    var extra = (issetObject('Tray_A','div') == true) ? 'wTray' : 'noTray';
    url = '/seatingOF/resources/includes/'+target+'.php';
    url += '?needle='+idnum;
    url += '&div='+container;
    url += '&extra='+extra;
    url = url+'&sid='+Math.random();
    xmlhttp.onreadystatechange=function(){
        el = $('#'+container);
        if(xmlhttp.readyState === 3){
            if(!it_exists($('#loadingImage'))){
                el.append('<span id="loadingImage" style="position:absolute; padding:5px; box-shadow:0 4px 10px rgba(0, 0, 0, 0.75); border:3px dimgray solid; border-top:none; background-color: rgba( 255, 255, 255, 0.60);"><img src="/images/loading/trans_rolling.gif" height="16" width="16" alt="loading" /> <blink>Processing...</blink></span>');
            }
        } else if(xmlhttp.readyState === 4) {
            el.append(xmlhttp.responseText);
            fadedRemove($('#loadingImage'),1000);
        }
    }
    xmlhttp.open('GET',url,true);
    xmlhttp.send(null);
}

var smoothRemove = function(e){
    var el = $(e);
    el.fadeOut(500).delay(50).queue(function(){el.remove();});
}

// Ajax for custom foam thicknes depending of a style

function foamThickRequest(foamType,fieldName,js,ph,divId,fieldid){
	var name = (fieldid.length > 0) ? fieldid : fieldName;
	var url = '/seatingOF/resources/includes/utilities.php';
	var element = ei(divId);
	url = url+'?type='+foamType;
	url = url+'&name='+fieldName;
	url = url+'&id='+fieldid;
	url = url+'&ph='+ph;
	url = url+'&js='+js;
	url = url+'&sid='+Math.random();
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState < 4){
			//displayElement(container);
			element.innerHTML='<select id="'+name+'"><option><blink>Processing...</blink></option></select>';	
		} else if(xmlhttp.readyState == 4) {
			element.innerHTML=xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET',url,true);
	xmlhttp.send(null);
}

// Show Hide Functions //

function processElement(proThis,trig,style,hide,disable){
		if(trig == '1') {
			if(hide == 1){
				if(style=="block"){
					displayInBlock(proThis);
				} else if(style=="inline-table") {
					ei(proThis).style.display="inline-table";
					ei(proThis).style.visibility="visible";
				} else {
					displayElement(proThis);
				}
			}
			if(disable == 1){
				enableElement(proThis);
			}
		} else {
			if(hide == 1){
				hideElement(proThis);
			}
			if(disable == 1){
				disableElement(proThis);
			}
		}
}

function processArray(list){
	var newList = (list.indexOf(',') > 0) ? list.split(',') : '' ;
	return newList;
}

function processList(nl,vl,tg,sty,hd,dis){
	if (nl.length > 0){
		for( i in nl ){
			processElement(nl[i],tg,sty,hd,dis);
		}
	} else {
		processElement(vl,tg,sty,hd,dis);
	}
}

function dsl(idlist,trig){
	var newlist = processArray(idlist);
	var values = idlist;
	
	processList(newlist,values,trig,'inline',1,1);
	
}

function dslBlock(idlist,trig){
	var newlist = processArray(idlist);
	var values = idlist;
	
	processList(newlist,values,trig,'block',1,1);
	
}

function cdsl(idlist,trig,mode,hd,ds){
	var newlist = processArray(idlist);
	var values = idlist;
	
	processList(newlist,values,trig,mode,hd,ds);
	
}

function dslIndArray(mainId,total,exception,style){
	for(i=1;i<(Math.abs(total)+1);i++){
		element = mainId+i;
		if(element == exception){
			//alert(element);
			processElement(element,1,style,1,1);
		} else {
			processElement(element,0,style,1,1);
		}
	}
}

function dsenGroup(idlist,trig) {
	var newlist = processArray(idlist);
	var values = idlist;
	
	processList(newlist,values,trig,'inline',0,1);
	
}

function hsGroup(idlist,trig) {
	var newlist = processArray(idlist);
	var values = idlist;
	
	processList(newlist,values,trig,'inline',1,0);
	
}

function removeElement(parentDiv, childDiv){
	if(ei(childDiv)){
		if (childDiv == parentDiv) {
		  alert("The parent div cannot be removed.");
		}
		else if (ei(childDiv)) {     
		  var child = ei(childDiv);
		  var mainDv = (parentDiv == 'body')? document.body : ei(parentDiv);
		  mainDv.removeChild(child);
		}
		else {
		  alert("Child div has already been removed or does not exist.");
		  return false;
		}
	}
        return true;
}

// Math and calculator Functions

function relativeDecimal(val){
	var newVal = Math.abs(val) / 100;
	return newVal;
}

function percentResidue(valOne,valTwo,result){
	var newResult = (result == 1) ? Math.abs(valOne) - (Math.abs(valOne) * Math.abs(valTwo)) : ( Math.abs(valOne) * Math.abs(valTwo) );
	return newResult;
}

//This function calculate a value and stamp it in a field or span/div
function calculateField(valToCalc,fieldToDisplayCalc,methodCalc,secondValCalc){
    var finalCalc;
    switch (methodCalc){
        case 'addition':
            preliminarCalc = Math.abs(valToCalc) + Math.abs(secondValCalc);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        case 'subtraction':
            preliminarCalc = Math.abs(valToCalc) - Math.abs(secondValCalc);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        case 'multiply':
            preliminarCalc = Math.abs(valToCalc) * Math.abs(secondValCalc);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        case 'divide':
            preliminarCalc = Math.abs(valToCalc) / Math.abs(secondValCalc);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        case 'percentage':
            var percent = relativeDecimal(secondValCalc);
            preliminarCalc = percentResidue(valToCalc,percent,0);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        case 'discount':
            percent = relativeDecimal(secondValCalc);
            preliminarCalc = percentResidue(valToCalc,percent,1);
            finalCalc = (preliminarCalc.toFixed(2)) ? preliminarCalc.toFixed(2) : preliminarCalc.toPrecision(2) ;
            break;
        default:
            finalCalc = 0;
    }
    updateField(finalCalc,fieldToDisplayCalc);
}

// end Math and calculator functions

/* Discount Calculator Engine */

function discountStructure(mainVal,defVal,discVal,recDue,recDiscount){
	var element = ei(recDue);
	var element2 = ei(recDiscount);
	var discounts = (discVal.indexOf(',') > 0) ? discVal.split(',') : '';
	var discount = discVal;
	var value = mainVal;
	var i = 0;
	var m = 0;
	var defDisc = Math.abs(defVal);
	var	disc = Array(defDisc,0,0,0);
	var thisVal = Array(0,0,0,0);
	
	if(discounts.length > 0){
		for(i in discounts){
			disc[i] = ei(discounts[i]).value;
		}
		disc.unshift(defDisc);
	} else if(discounts.length == 0){
		for(i in disc){
			disc[i] = disc[i];
		}
	}
	
	
	for(m in disc){
		disc[m] = relativeDecimal(disc[m]);
		value = percentResidue(value,disc[m],1);
		thisVal[m] = percentResidue(value,disc[m],0);
	}
	
	theResult = value;
	theDiscount = Math.abs(mainVal) - value;
	//(thisVal[0] + thisVal[1] + thisVal[2] + thisVal[3])
	
	finalCalc = (theResult.toFixed(2)) ? theResult.toFixed(2) : theResult.toPrecision(2) ;
	finalDisc = (theDiscount.toFixed(2)) ? theDiscount.toFixed(2) : theDiscount.toPrecision(2) ;
	
	element.value = finalCalc;
	element2.value = finalDisc;
	
}

/* Back Functions */

function iBackFormula(mainVal,cont,val1,val2,val3){
	mainVal = Math.abs(mainVal);
	switch(cont){
            case 'Back_C':
                    calculateField(mainVal,'Back_D','subtraction',Math.abs(val1));
                    if(issetObject('Back_E')){
                        ei('Back_E').value = '';
                    }
                    break;
            case 'Back_D':
                    if(issetObject('Back_E')){
                        calculateField(mainVal,'Back_E','subtraction',(Math.abs(val1) + Math.abs(val2)));
                    }
                    break;
            case 'Back_E':
                    calculateField(mainVal,'Back_D','subtraction',(Math.abs(val1) + Math.abs(val3)));
                    break;
	}
}

function foamOverlayFormula(width,value,target){
	var divId = ei(target);
	var result = Math.abs(width) - ((Math.abs(value) * 2) + 1);
	divId.value = result;
}

function enableDisableBackMods(ver,st,end){
	if(ver != 'empty'){ 
		enableFields('back_type_modifications',st,end);
	} else { 
		disableFields('back_type_modifications',st,end);
		uncheckFields('back_type_modifications',1,9);
		emptyDivContent('backModHolder');
	}
}


// New function showBackModifications() is more effective and more beatifully coded! And because is based in Ajax
// you don't need to disable any field if hidden, because will be removed from the HTML in other words. Is not there
// in the first place September 9th 2010

function showBackMods(target,backMod,container){
	switch(backMod){
		// For compatibility
		case 'SB253':
		case 'BMD223':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications2').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
                    // compatibility
		case 'BMD242':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications3').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		case 'BMD254':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications4').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		case 'BMD236':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications7').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
			break;
		case 'BMD237':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications5').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		case 'BMD222':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications6').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		case 'BMD256':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications8').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		case 'BMD293':
                    unchkSpeField('back_type_modifications',1);
                    if(ei('back_type_modifications9').checked == false){
                        //removeElement(container,backMod);
                        $('#'+backMod).fadeOut(200).delay(50).queue(function(){$(this).remove();});
                    } else {
                        jqShowDimTables(target,backMod,container);
                    }
                    break;
		default:
			resetBackMods(container);
	}
}
 
function resetBackMods(div){
	emptyDivContent(div);
	uncheckFields('back_type_modifications',2,9);
}

function showStandard(value){
	var vl = (value == 'empty') ? value : 'SB250';
	showDimTables('dim_layouts',vl,'typeHolder',0);
	ei('backType').value='SB250';
}

////////////////////////////////////////

// True Forming Back Availability Defaults

function handleTrueFormDefaults(cond,field,div){
	if(cond=='SB251' || cond=='BMD220' || cond=='BMD202'){ 
		ei(field).value='empty'; 
		disableElement(field); 
		trueForm('no',div); 
	} else { 
		enableElement(field); 
	} 
}

/* Header Functions */

function headTitle(style){
	var title;
	switch(style){
		case 'SU':
			title = 'Ultra QCRS';
			break;
		case 'i2i':
			title = 'i2i';
			break;
		case 'CB':
			title = 'Combo';
			break;
		case 'CP':
			title = 'Comfort Plus';
			break;
		case 'TCP':
			title = 'Tri-Comfort Plus';
			break;
		case 'AP':
			title = 'All Positioning';
			break;
		case 'OB':
			title = 'Otto-Bock';
			break;
		default:
			title = 'No modifications for '+style+' Series';			
	}
	
	return title;
}

function verCustomHead(value){
	headArray = new Array('CP950','CB905','TCP905','i2i950');
	
	for(i in headArray){
		//alert(headArray[i]);
		ver = headArray[i];
		if(ver == value){
			alert('Use special instructions field for specifications not available in this form.');
			break;
		}
	}
	
}

function getHeadMods(style,divId){
	var url = '/seatingOF/resources/includes/headOpt.php';
	var element = ei(divId);
	url = url+'?style='+style;
	url = url+'&sid='+Math.random();
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState < 4){
			element.innerHTML='<img src="/images/loading/trans_rolling.gif" height="16" width="16" alt="loading" /> <blink>Processing...</blink>';	
		} else if(xmlhttp.readyState == 4) {
			element.innerHTML='';
			element.innerHTML=xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET',url,true);
	xmlhttp.send(null);
}

function headrestMods(value){
	getHeadMods(value,'headSelOptions'); 
	
	if(value != 'empty'){ 
		if(value == 'i2i') { 
                    dsenGroup('hrHrdOptionTwo,hrHrdOptionFive',1); 
                    dsenGroup('hrHrdOptionZero,hrHrdOptionOne,hrHrdOptionThree,hrHrdOptionFour,hrHrdOptionSix,hrHrdOptionSeven,hrHrdwOpt2',0); 
                    ei('hrMountingHrdw').value='TWB480-1';
                    ei('hrHrdwOpt').checked=true;
                    fdmPartNum(ei('hrMountingHrdw').value,1);
		} else { 
                    dsenGroup('hrHrdOptionZero,hrHrdOptionOne,hrHrdOptionTwo,hrHrdOptionThree,hrHrdOptionFour,hrHrdOptionFive,hrHrdOptionSix,hrHrdOptionSeven,hrHrdwOpt2',1);
                    ei('hrMountingHrdw').value='empty'; 
                    ei('hrHrdwOpt').checked=false;
                    fdmPartNum(ei('hrMountingHrdw').value,0);
		} 
	} else { 
            dsenGroup('hrHrdOptionZero,hrHrdOptionOne,hrHrdOptionTwo,hrHrdOptionThree,hrHrdOptionFour,hrHrdOptionFive,hrHrdOptionSix,hrHrdOptionSeven',0);
            dsenGroup('hrHrdwOpt2',1)
            ei('hrMountingHrdw').value='empty';
            ei('hrHrdwOpt').checked=false;
            ei('fdm-part').innerHTML='';
            fdmPartNum(ei('hrMountingHrdw').value,0);
	}
	
}

function headDescription(value,div){
	var url;
	var element = ei(div);
	url = '/seatingOF/resources/includes/headDesc.php';
	url = url+'?value='+value;
	url = url+'&sid='+Math.random();
	xmlhttp.onreadystatechange=function(){
		if(xmlhttp.readyState < 4){
			element.innerHTML = '<img src="/images/loading/trans_rolling.gif" height="16" width="16" alt="loading" /> <blink>Processing...</blink>';	
		} else if(xmlhttp.readyState == 4) {
			element.innerHTML = '<h2>'+headTitle(value)+'</h2>'+xmlhttp.responseText;
		}
	}
	xmlhttp.open('GET',url,true);
	xmlhttp.send(null);
}

function fdmPartNum(value,stat){
	var newval;
	var dval;
	var suVar;
	
	switch(value){
		case 'TWB480-1':
		case 'TWB485-1':
			newval = value.replace('-1','-');
			break;
		case 'TWB480-17mm':
		case 'TWB485-17mm':
			newval = value.replace('mm','');
			break;
		default:
			newval = value;
	}
													   
	dval = (newval.length > 0) ? newval : value;
	suVar = (ei('hrStyle').value == 'SU') ? 'Q' : '';
	
	
	var res = (stat == 1) ? dval+suVar+'FDM' : '';
	ei('fdm-part').innerHTML=res;
	ei('fdmHrdw').value=res;
}

function saDisplay(value,idList){
	idArray = idList.split(',');
	
	switch(value){
            case 'Both':
                dsl(idList,1);
                dsenGroup('hrSAAddOn,F8675L,F8675L2,hrSAleftRodSize',1);
                dsenGroup('hrSAAddOnRight,F8675R,F8675R2,hrSArightRodSize',1);
                break;
            case 'Left':
                hsGroup(idArray[0],1);
                hsGroup(idArray[1],0);
                dsenGroup('hrSAAddOn,F8675L,F8675L2,hrSAleftRodSize',1);
                dsenGroup('hrSAAddOnRight,F8675R,F8675R2,hrSArightRodSize',0);
                break;
            case 'Right':
                hsGroup(idArray[0],0);
                hsGroup(idArray[1],1);
                dsenGroup('hrSAAddOn,F8675L,F8675L2,hrSAleftRodSize',0);
                dsenGroup('hrSAAddOnRight,F8675R,F8675R2,hrSArightRodSize',1);
                break;
            default:
                dsl(idList,0);
                dsenGroup('hrSAAddOn,F8675L,F8675L2,hrSAleftRodSize',0);
                dsenGroup('hrSAAddOnRight,F8675R,F8675R2,hrSArightRodSize',0);
                dsenGroup('hrSAAddOn,hrSAEggSwitchesLeft,hrSA_left_microlite,F8675L,hrSARightFigureEightOptions,hrSAEggSwitchesLeftTwo,hrSAleftRodSize,hrSAleftRodSize2,F8675L2',0);
                dsenGroup('hrSAAddOnRight,hrSAEggSwitchesRight,hrSA_right_microlite,F8675R,hrSARightFigureEightOptions,hrSArigthEggSwitchesTwo,hrSArightRodSize,hrSArightRodSize2,F8675R2',0);
			
	}
	
}

function saTitle(value,div){
	var element = ei(div);
	switch(value){
		case 'SU':
		case 'i2i':
		case 'CB':
		case 'AP':
			var title = 'SUS9';
			break;
		case 'CP':
		case 'TCP':
			title = 'CPS9';
			break;
		case 'OB':
			title = 'OTTOS9';
			break;
		default:
			title = '';
	}
	
	element.innerHTML = title;
}

function headrestThumb(value,div){
	var mdiv = div.split(',');
	dslBlock(div,1);
	ei(mdiv[1]).innerHTML=headTitle(value)+' Sample*';
	ei(mdiv[0]).innerHTML='<p><span id="hdesc" class="right default_padding hidden cborder justifytext shadow4" style="display:inline-block; max-width:250px; background:#ececec; cursor:pointer;" onclick="hideElement(this.id);"></span><img class="headPrev" src="/images/2010/products/head/'+value+'.png" title="Click to view '+headTitle(value)+' description" alt="Click to view '+headTitle(value)+' description" style="cursor:pointer;" onclick="headDescription(\''+value+'\',\'hdesc\'); dsl(\'hdesc\',1);" /></p><p>[*] This is just a sample, not an exact representation of your order</p>';
}

/* Tray Fucntions */
