var mode = 'PREPAID';
var isIE = document.all || window.opera;
var sliderWidth = 144;
var arrowWidth = 8;
var sliderOffset = 0;
var maxValues = {
	'accalls': 3600,
	'othcalls': 3600,
	'sms': 500,
	'mms': 200,
	'gprs': (100*1024),
	'weekdays': 100,
	'nighttime': 100
};
var defaultValues = {
	'accalls': 150,
	'othcalls': 40,
	'sms': 20,
	'mms': 20,
	'gprs': 10,
	'weekdays': 10,
	'nighttime': 10
};
var namespace_pre = 'calc_';

function calculate(mode) {
backupB3 = 2;
backupC3 = 450;
backupD3 = 60*backupB3/backupC3;
backupG6 = 1;
backupH7 = 1;
backupG7 = 2;
backupN18 = 11;
backupE3 = backupB3/backupC3;
backupN19 = 22;
backupN8 = 2;
backupH13 = 3;
backupG13 = 4;
backupH12 = 5;
backupG12 = 4;
backupO18 = 8;
backupO19 = 16;
backupO8 = 2;
backupH14 = 1;
backupG14 = 2;
backupH15 = 1;
backupG15 = 3;
backupB36 = 0.15;
backupC36 = 0.12;
backupD36 = 0.1;
backupE36 = 0.08;
backupF36 = 0.25;
backupG27 = 0.14;
backupK27 = 0.07;
backupO27 = 0.25;
backupD27 = 4.92;
backupG28 = 0.1;
backupK28 = 0.05;
backupO28 = 0.25;
backupD28 = 9.84;
backupG29 = 0.1;
backupK29 = 0.05;
backupO29 = 0.2;
backupD29 = 19.68;
sbbint = 3;
sbbrate = 1;
sbbonet = 0.06;
sbboffnet = 0.27;
sbbsms = 0.05;
result1 = 0;
result2 = 0;
result3 = 0;
result4 = 0;
result5 = 0;
minVal = 0;
gprspostp = 0.6;
mmspostp = 0.1;


//prepaid = (document.getElementById('calc').elements.prepaid.checked)
prepaid = ((mode=='PREPAID')? (true): (false));
E5 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'accalls'].value);
E6 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'othcalls'].value);
E8 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'sms'].value);
E9 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'mms'].value);
E10 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'gprs'].value);
E11 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'weekdays'].value)/100;
E12 = Number(document.getElementById(namespace_pre+'calc').elements[namespace_pre+'nighttime'].value)/100;
E13 = Math.round(E5*60/sbbint+0.4)*sbbrate*backupE3;


if (isNaN(E5) || isNaN(E6) || isNaN(E8) || isNaN(E9) || isNaN(E10) || isNaN(E11) || isNaN(E12)) {
        alert("Please enter valid numbers not less 0!");
        return;
        }

if ((E5<0) || (E6<0) || (E8<0) || (E10<0) || (E11<0) || (E9<0) || (E12<0)) {
        alert("Please enter valid numbers not less 0!");
        return;
        }

E7 = E5+E6;

if (prepaid) {

	result5 = Math.round((E6*60*backupE3*3/2+E13+E8*backupN18*backupE3+
        E9*backupN19*backupE3+(Math.round((E10+4)/10))*backupN8*backupE3)*100)/100;

        result1 = Math.round((E6*backupD3*backupG6+E5*(1-E12)*
        backupD3*backupG6+E5*E12*backupD3*backupH7/backupG7+
        E8*backupN18*backupE3+E9*backupN19*backupE3+(Math.round((E10+4)/10))*backupN8*backupE3)*100)/100;

        result2 = E7*(1-E11)*backupD3*backupH13/backupG13+
        E5*E11*backupD3+E6*E11*backupD3*backupH12/backupG12;
        if (E8<16)
                tmpE8 = 0;
        else
                tmpE8 = E8-15;
        if (E9<3)
                tmpE9 = 0;
        else
                tmpE9 = E9-2;
        if (E10<501)
                tmpE10 = 0;
        else
                tmpE10 = E10-500;
        result2 = Math.round((result2+tmpE8*backupE3*backupO18+tmpE9*backupE3*backupO19+(Math.round((tmpE10+4)/10))*backupO8*backupE3)*100)/100;

        result3 = Math.round((E6*backupD3*backupG6+E5*(1-E12)*backupD3*backupH14/backupG14+
        E5*E12*backupD3*backupH15/backupG15+E8*backupN18*backupE3+
        E9*backupN19*backupE3+(Math.round((E10+4)/10))*backupN8*backupE3)*100)/100;

        }
else {


        result5 = Math.round((E5*sbbonet+E6*sbboffnet+E8*sbbsms+(Math.round((E10+4)/10)*gprspostp/103)+E9*mmspostp)*100)/100;


        if (E5<61)
                tmpE5 = E5*backupB36;
        else if (E5<121)
                tmpE5 = 60*backupB36+(E5-60)*backupC36;
        else if (E5<181)
                tmpE5 = 60*backupB36+60*backupC36+(E5-120)*backupD36;
        else
                tmpE5 = 60*backupB36+60*backupC36+60*backupD36+(E5-180)*backupE36;
        result1 = Math.round((tmpE5+E6*backupF36+E8*0.05+(Math.round((E10+4)/10)*gprspostp/103)+E9*mmspostp)*100)/100;


        if (E5<11)
                tmpE5 = 0;
        else
                tmpE5 = (E5-10)*(1-E12)*backupG27+(E5-10)*E12*backupK27;
        if (E8<26)
                tmpE8 = 0;
        else
                tmpE8 = (E8-25)*0.05;
        result2 = Math.round((tmpE5+E6*backupO27+tmpE8+backupD27+(Math.round((E10+4)/10)*gprspostp/103)+E9*mmspostp)*100)/100;


        if (E5<26)
                tmpE5 = 0;
        else
                tmpE5 = (E5-25)*(1-E12)*backupG28+(E5-25)*E12*backupK28;
        if (E8<51)
                tmpE8 = 0;
        else
                tmpE8 = (E8-50)*0.05;
        result3 = Math.round((tmpE5+E6*backupO28+tmpE8+backupD28+(Math.round((E10+4)/10)*gprspostp/103)+E9*mmspostp)*100)/100;


        if (E5<51)
                tmpE5 = 0;
        else
                tmpE5 = (E5-50)*(1-E12)*backupG29+(E5-50)*E12*backupK29;
        if (E8<101)
                tmpE8 = 0;
        else
                tmpE8 = (E8-100)*0.05;
        result4 = Math.round((tmpE5+E6*backupO29+tmpE8+backupD29+(Math.round((E10+4)/10)*gprspostp/103)+E9*mmspostp)*100)/100;


        }

minVal = result1;
if (result2<minVal)
        minVal = result2;
if (result3<minVal)
        minVal = result3;
if (result5<minVal)
        minVal = result5;
if ((!prepaid) & (result4<minVal))
        minVal = result4;

var res1_field = document.getElementById(namespace_pre+'results').elements[namespace_pre+'result1'];
var res2_field = document.getElementById(namespace_pre+'results').elements[namespace_pre+'result2'];
var res3_field = document.getElementById(namespace_pre+'results').elements[namespace_pre+'result3'];
var res4_field = document.getElementById(namespace_pre+'results').elements[namespace_pre+'result4'];
var res5_field = document.getElementById(namespace_pre+'results').elements[namespace_pre+'result5'];

var res1_label = document.getElementById(namespace_pre+'c1_l');
var res2_label = document.getElementById(namespace_pre+'c2_l');
var res3_label = document.getElementById(namespace_pre+'c3_l');
var res4_label = document.getElementById(namespace_pre+'c4_l');
var res5_label = document.getElementById(namespace_pre+'c5_l');

res5_field.value = result5;
res1_field.value = result1;
res2_field.value = result2;
res3_field.value = result3;
res4_field.value = result4;


if (result1 == minVal) {
    res1_field.style.color = '#FF0000';
    res1_label.style.color = '#FF0000';
} else {
    res1_field.style.color = '#000000';
    res1_label.style.color = '#000000';
}

if (result2 == minVal) {
    res2_field.style.color = '#FF0000';
    res2_label.style.color = '#FF0000';
} else {
    res2_field.style.color = '#000000';
    res2_label.style.color = '#000000';
}

if (result3 == minVal) {
    res3_field.style.color = '#FF0000';
    res3_label.style.color = '#FF0000';
} else {
    res3_field.style.color = '#000000';
    res3_label.style.color = '#000000';
}

if (result5 == minVal) {
    res5_field.style.color = '#FF0000';
    res5_label.style.color = '#FF0000';
} else {
    res5_field.style.color = '#000000';
    res5_label.style.color = '#000000';
}

if (result4 == minVal) {
    res4_field.style.color = '#FF0000';
    res4_label.style.color = '#FF0000';
} else {
    res4_field.style.color = '#000000';
    res4_label.style.color = '#000000';
}

return true;
}

function startValues(hideFooter) {
//document.getElementById('calc').elements.prepaid.checked  = true;
initValues();
}

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SLIDER FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//

	function getValue(arrow) {
		var name = arrow.id.replace('_arrow','').replace(namespace_pre, '');
		var step = maxValues[name]/sliderWidth;
		var value = Math.round((parseInt(arrow.style.left.replace('px',''))+11)*step);
		return value;
	}
	
	function setValue(x, el, feedback) {
		if (feedback===undefined) {var feedback = true;}
		var element = el;
		var name = element.id.replace('_shield', '');
		var arrow = document.getElementById(name+'_arrow');
		if(x < 0) arrow.style.left = 0; 
		else if (x > sliderWidth-arrowWidth-3) arrow.style.left = (sliderWidth-3-arrowWidth)+'px';
		else {
			arrow.style.left = parseInt(x)+'px';
		}
		if (feedback) {document.getElementById(namespace_pre+'calc').elements[name].value = getValue(arrow);}
	}
	
	function setValue2 (x, name, feedback) {
		name = name.replace(namespace_pre, '');
		if (feedback===undefined) {var feedback = false;}
		if (x<0 || x>maxValues[name]) {
			alert('Value is not included into a slider range!');
		} else {
			setValue(Math.round(x*(sliderWidth/maxValues[name])), document.getElementById(namespace_pre+name+'_shield'), feedback);
		}
	}

	function sliderClick(e) {
		sliderOffset = this.offsetLeft;
		var x;
		if (isIE) {
			if (event.srcElement != this) return;
			x = event.offsetX - Math.round(arrowWidth/2);
		}	
		else x = e.pageX-sliderOffset-arrowWidth/2;
		setValue(x, this);
	}

	function startCoord(e) {
		var slider = document.getElementById(this.id.replace('_arrow', '').replace('_shield', '')+'_shield');
		var arrow = document.getElementById(this.id.replace('_shield', '').replace('_arrow', '')+'_arrow');
		var event = e || window.event;
		if (isIE) {
			offsX = event.clientX - parseInt(arrow.style.left);
			//this.onmousemove = mov;
			this.onmousemove = mov;
		} else {
			//this.addEventListener("mousemove", mov, true);
			slider.addEventListener("mousemove", mov, true);
		}
	}
	
	function mov(e)	{
		var x;
		var e = e || window.event;
		if (isIE) {
			x = event.clientX-offsX;
		} else {
			x = e.pageX-sliderOffset-arrowWidth/2;
		}
		var element = e.target || e.srcElement;
		var subelement = document.getElementById(element.id.replace('_arrow', '_shield'));
		if (x===undefined) {x=0;}
		setValue(x, subelement);
	}

	function endCoord()	{
		if (isIE) this.onmousemove = null;
		else this.removeEventListener("mousemove", mov, true);
	}
	
function initValues(hideFooter) {
	var names = ['accalls','othcalls','sms','mms','gprs','weekdays','nighttime'];
	var slider = 0;
	var arrow = 0;
	var field = 0;
	for (var i=0; i<names.length; i++) {
		slider = document.getElementById(namespace_pre+names[i]+'_shield');
		arrow = document.getElementById(namespace_pre+names[i]+'_arrow');
		field = document.getElementById(namespace_pre+'calc').elements[namespace_pre+names[i]];
		field.value = defaultValues[names[i]];
		setValue2(field.value, names[i]);
		if (isIE) {
			arrow.onmousedown = startCoord;
			slider.onmousedown = startCoord;
			slider.onclick = sliderClick;
			field.onchange = function(input){return function(){setValue2(input.value, input.name);};}(field);
			arrow.onmouseup = endCoord;
			slider.onmouseup = endCoord;
		} else {
			arrow.addEventListener("mousedown", startCoord, true);
			slider.addEventListener("mousedown", startCoord, true);
			slider.addEventListener("click", sliderClick, true);
			field.addEventListener("change", function(input){return function(){setValue2(input.value, input.name);};}(field), true);
			arrow.addEventListener("mouseup", endCoord, true);
			slider.addEventListener("mouseup", endCoord, true);
		}
		field = 0;
		slider = 0;
		arrow = 0;
	}
	return true;
}

var setMode = function(tariff) {
	var form = document.getElementById(namespace_pre+'input_box');
	var container = document.getElementById(namespace_pre+'rightBox');
	var weekdays = document.getElementById(namespace_pre+'weekdays_block');
	var prepaider = document.getElementById(namespace_pre+'prepaid_switch');
	var postpaider = document.getElementById(namespace_pre+'postpaid_switch');
	
	var business = document.getElementById(namespace_pre+'c4');
	var input = 0;
	
	if ((mode===tariff)&&(form.style.display!='none')) {
		form.style.display='none';
	} else {
		if (tariff=='PREPAID') {
			form.style.display="block";
			container.appendChild(postpaider);
			weekdays.style.display="block";
			business.style.display="none";
			document.getElementById(namespace_pre+'c1_l').innerHTML = '';
			document.getElementById(namespace_pre+'c2_l').innerHTML = 'G&#601;ncSim';
			document.getElementById(namespace_pre+'c3_l').innerHTML = 'Bizd&#601;n Biz&#601;';
		} else {
			form.style.display="block";
			container.insertBefore(postpaider, form);
			weekdays.style.display="none";
			business.style.display="block";
			document.getElementById(namespace_pre+'c1_l').innerHTML = 'Optimist';
			document.getElementById(namespace_pre+'c2_l').innerHTML = 'Ekonom';
			document.getElementById(namespace_pre+'c3_l').innerHTML = 'Standart';
		}
	}
	
	var curr = 0;
	for (var field in document.getElementById(namespace_pre+'results').elements) {
		input = document.getElementById(namespace_pre+'results').elements[field];
		if (input!=undefined) if (typeof(input)=='object') if (typeof(input.name)=='string') {
			curr = input.name.replace(namespace_pre+'result', '');
			if ((curr>0)&&(curr<6)) {
				input.value = '0';
				input.style.color = '#000000';
				document.getElementById(namespace_pre+'c'+curr+'_l').style.color = '#000000';
			}
		}
	}
	
	mode = tariff;
	return false;
}
