﻿var enterlayertop=-1;
var mouseupset=false;
var currentPosition=new Array(-1,-1,-1,-1,-1,-1,-1);	

var waitfordown=true;

// **************************************************  function getMousePos
function getMousePos(e) {
        //get the position of the mouse
 	var mouseX, mouseY;

	if (!e){
		var e = window.event||window.Event;
	}
	if('undefined'!=typeof e.pageX){
		mouseX = e.pageX;
		mouseY = e.pageY;
	}else if( !e || ( typeof( e.pageX ) != 'number' && typeof( e.clientX ) != 'number' ) ) {
		mouseX=0;
		mouseY=0;
	}else if( typeof( e.pageX ) == 'number' ) { 
		mouseX = e.pageX;
		mouseY = e.pageY; 
	} else {
        mouseX = e.clientX;
        mouseY = e.clientY;
        if( !( ( window.navigator.userAgent.indexOf( 'Opera' ) + 1 ) || ( window.ScriptEngine && ScriptEngine().indexOf( 'InScript' ) + 1 ) || window.navigator.vendor == 'KDE' ) ) {
            if( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) ) {
                mouseX += document.documentElement.scrollLeft;
                mouseY += document.documentElement.scrollTop;
            } else if( document.body && ( document.body.scrollTop || document.body.scrollLeft ) ) {
                mouseX += document.body.scrollLeft;
                mouseY += document.body.scrollTop; 
            } 
        } 
    }
			
        
    return [mouseX,mouseY];
}

//	************************************************ function slideIsDown
function slideIsDown(e) {
	waitfordown=false;
	
 }

//	*********************************************** function slideIsMove for w3c compatibles
function slideIsMove(e) {
	
 	moveslider(e,this.id.substr(this.id.length-1,1));


}

//	********************************************* slideIsMove for IE
function slideIsMove0(e) {
	if(!e){e=window.event;}
	moveslider(e,0);

}

function slideIsMove1(e) {
	if(!e){e=window.event;}
	moveslider(e,1);

}
function slideIsMove2(e) {
	if(!e){e=window.event;}
	moveslider(e,2);

}
function slideIsMove3(e) {
	if(!e){e=window.event;}
	moveslider(e,3);

}
function slideIsMove4(e) {
	if(!e){e=window.event;}
	moveslider(e,4);

}
function slideIsMove5(e) {
	if(!e){e=window.event;}
	moveslider(e,5);

}
function slideIsMove6(e) {
	if(!e){e=window.event;}
	moveslider(e,6);

}

// ******************************************************* function moveslider
function moveslider(e, currentcolourID){

	if( !waitfordown) {
	
        var msMvCo = getMousePos(e); 
        var oPix = document.childNodes ? 'px' : 0;
		var domoveit=1;
		var imod=(currentcolourID>2)*3;
		
		if(currentPosition[currentcolourID]==-1){
			currentPosition[currentcolourID]=msMvCo[1];
		} else {	
			var diff=currentPosition[currentcolourID]-msMvCo[1];  // provides negative number for decreased colour value
																// ie as pixel value goes up we make it come down	

			var locksliderchecked=new Array(0,0);
			
			if(diff!=0){
	    	    if(currentcolourID==6){
	    	    	n=6;
	    	    	var tempF=currentcoloursFloat[n]+(diff*onePixelmoved[n]);
	    	    	var tempC=parseInt(tempF+0.5);
	    	    	if((tempC>3)&&(tempC<49)){
		 				currentcoloursFloat[n]=tempF;
						currentcolours[n]=tempC;
						slidersArray[n].setPosition(1-((currentcolours[n]-4)/44));	

    	    			movefont(currentcolours[n]);
					}
					currentPosition[n]=msMvCo[1];								
					    	    		
    		    } else {    
					if(currentcolourID<3){
						locksliderchecked[0]=unisliders[0].obj.checked;
						if(unisliders[2]){
							locksliderchecked[1]=unisliders[2].obj.checked;
						}
					} else {
						locksliderchecked[0]=unisliders[1].obj.checked;
						if(unisliders[3]){
							locksliderchecked[1]=unisliders[3].obj.checked;
						}
					}	
					var tempFloat=new Array(3);
					var tempCurrent=new Array(3);
					for(n=(0+imod);n<(3+imod);n++){
						if(domoveit&&((n==currentcolourID)||locksliderchecked[0])){  // ie if it's us or the lockslider is checked
			 				tempFloat[n-imod]=currentcoloursFloat[n]+(diff*onePixelmoved[n]);
							tempCurrent[n-imod]=parseInt(tempFloat[n-imod]+0.5);

							domoveit=(tempCurrent[n-imod]>=0)&&(tempCurrent[n-imod]<=255);
						}	
			 		}
					if(domoveit&&locksliderchecked[1]){	//  maintainbrightness lock
						tempFloat=checkothersvalues(imod, currentcolourID, diff, tempFloat[currentcolourID-imod]);
						domoveit=tempFloat[0]>-1;
						if(domoveit){
							for(n=0;n<3;n++){
								tempCurrent[n]=parseInt(tempFloat[n]+0.5);
							}
						}
					}	
					if(domoveit){
						for(n=(0+imod);n<(3+imod);n++){
							if((n==currentcolourID)||locksliderchecked[0]||locksliderchecked[1]){  // ie if it's us or the lockslider is checked
						
				 				
				 				currentcoloursFloat[n]=tempFloat[n-imod];
								currentcolours[n]=tempCurrent[n-imod];
							
								moveColour(n,imod, true, ((locksliderchecked[0]||locksliderchecked[1])&&(n==(2+imod)))||(!locksliderchecked[0]&&!locksliderchecked[1]));
							}
						}
						currentPosition[currentcolourID]=currentPosition[currentcolourID]-diff;  // has to be minus as we're reversing the pixel increments								
					}
				}
			}		
	    }  
	  
	}
}

// ****************************************************** function othersvalues
// ****************************************************** works out the values of the other sliders on maintain brightness diff

function checkothersvalues(imod, currentcolourID, diff, ournewval){
	var ov=new Array(0,0,0);
//
	var currentbrightnessv=currentcoloursFloat[currentcolourID]*brightnessweightings[currentcolourID-imod];
	var newbrightnessv=ournewval*brightnessweightings[currentcolourID-imod];
	var wdiff=newbrightnessv-currentbrightnessv;
	var sumofremainder=0;

	for (var n=(0+imod); n<(3+imod); n++){
		if(n!=currentcolourID){
			sumofremainder=sumofremainder+brightnessweightings[n-imod];
		}
	}
	var newgt;
	var newgtint;
	if(sumofremainder==0){
		ov[0]=-1;
	} else {	
		for (var n=(0+imod); n<(3+imod); n++){
			if(n!=currentcolourID){
				newgt=wdiff*(brightnessweightings[n-imod]/sumofremainder);
				newgt=(currentcoloursFloat[n]*brightnessweightings[n-imod])-newgt;
				newgt=newgt/brightnessweightings[n-imod];
				newgtint=parseInt(newgt+0.5);
				if((newgtint>255)||(newgtint<0)){
					ov[0]=-1;
					break;
				} else {	
					ov[n-imod]=newgt;
				}
			}	
		}
	}

	ov[currentcolourID-imod]=ournewval;
	return ov;
}


// *********************************************** function slideIsUp
function slideIsUp(){
	waitfordown=true;
	for(var k=0; k<7;k++){
		currentPosition[k]=-1;
	}	
}


// ********************************************** function setSliderPosition
function setSliderPosition(oPortion) {
        //set the slider's position
        if( isNaN( oPortion ) || oPortion < 0 ) { oPortion = 0; } if( oPortion > 1 ) { oPortion = 1; }

        var theDiv = new getObj("SliderButton"+this.id.substr(this.id.length-1,1));
		theDivheight=buttonHeight(theDiv);

        oPortion = Math.round(oPortion * (this.maxLength-theDivheight ));

        if(oPortion<0){
        	oPortion=0;
        }	
        if(oPortion>(this.maxlength-theDivheight)){
        	oPotion=this.maxlength-theDivheight
        }	
         var oPix = document.childNodes ? 'px' : 0;
    if( theDiv.style ) { theDiv = theDiv.style; }
        theDiv.top = oPortion + oPix;
      
}

// ************************************************* function buttonheight
function buttonHeight(theDiv){

    if( theDiv.style ) { theDiv = theDiv.style; }
    if(theDiv.height.substr(theDiv.height.length-2,2)=="px"){
    	var theDivheight=theDiv.height.substr(0,theDiv.height.length-2);
    }else{	
    	var theDivheight=theDiv.height;
    }		
	return theDivheight;

}
// ************************************************** function slider
function slider(oThght,oTwdth,oTcol,oTBthk,oTBcol,oTRthk,oTRcol,oBhght,oBwdth,oBcol,oBthk,oBtxt,oSliderID) {
        //draw the slider using huge amounts of nested layers (makes the borders look normal in as many browsers as possible)
	sliderHeights[oSliderID]=oThght+(2*oTBthk);
	if(oSliderID==6){
		onePixelmoved[6]=44/(oThght-(oBhght+(oBthk*2)));
	} else {
		onePixelmoved[oSliderID]=256/(oThght-(oBhght+(oBthk*2)));
		
	}	

    document.write(
      '<div style="position:relative;left:0px;top:0px;height:'+sliderHeights[oSliderID]+'px;width:'+(oTwdth+(2*oTBthk))+'px;background-color:'+oTBcol+';font-size:0px;">'+
      '<div style="position:relative;left:'+oTBthk+'px;top:'+oTBthk+'px;height:'+oThght+'px;width:'+oTwdth+'px;background-color:'+oTcol+';font-size:0px;">'+
      '<div style="position:absolute;left:'+(Math.floor((oTwdth-oTRthk)/2))+'px;top:0px;height:'+oThght+'px;width:'+oTRthk+'px;background-color:'+oTRcol+';font-size:0px;"><\/div>'+
      '<div style="position:absolute;left:'+(Math.floor((oTwdth-(oBwdth+(2*oBthk)))/2))+'px;top:0px;height:'+(oBhght+(2*oBthk))+'px;width:'+(oBwdth+(2*oBthk))+'px;font-size:0px;" oncontextmenu="return false;" id="SliderButton'+oSliderID+'">'+
      '<div style="border-top:'+oBthk+'px solid #ffffff;border-left:'+oBthk+'px solid #ffffff;border-right:'+oBthk+'px solid #000000;border-bottom:'+oBthk+'px solid #000000;">'+
      '<div style="height:'+oBhght+'px;width:'+oBwdth+'px;font-size:0px;background-color:'+oBcol+';">'+
      '<span style="width:100%;text-align:center;">'+oBtxt+'<\/span><\/div><\/div><\/div><\/div><\/div>'
                );
 
     
    this.id = 'SliderControl'+oSliderID; 
    this.maxLength = sliderHeights[oSliderID];

    this.setPosition = setSliderPosition; 
    
}
//  ************************************************* function setmouseevents for slider
function setmouseevents(oSliderID){

     var divObj=new getObj("SliderButton"+oSliderID);

	 if (document.addEventListener){
		divObj.obj.addEventListener('mousemove',slideIsMove,true);
		if(!mouseupset){
			document.addEventListener('mouseup',slideIsUp,true);
			mouseupset=true;
		}	
		divObj.obj.addEventListener('mousedown',slideIsDown,true);
					
	} else {
		if(document.attachEvent){
			if(oSliderID==0){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove0);
			} else if(oSliderID==1){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove1);
			} else if(oSliderID==2){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove2);
			} else if(oSliderID==3){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove3);
			} else if(oSliderID==4){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove4);
			} else if(oSliderID==5){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove5);
			} else if(oSliderID==6){
				
				divObj.obj.attachEvent('onmousemove',slideIsMove6);
			}

			if(!mouseupset){
				document.attachEvent('onmouseup',slideIsUp);
				mouseupset=true;
			}	
			divObj.obj.attachEvent('onmousedown',slideIsDown);
		}
	}




}

// *************************************************** function unislidersclick
function unislidersclick(e){
	 
	var n=eval(this.id.substr(this.id.length-1,1));
	if(this.id.substr(this.id.length-2,1)=="b"){
		var k=0;
	} else {
		var k=2;	
	}

	unisliders[k+n].obj.checked=false;

}

// *************************************************** and now for IE
function unislider0click(e){
	unisliders[2].obj.checked=false;
}
function unislider1click(e){
	unisliders[3].obj.checked=false;
}
function unislider2click(e){
	unisliders[0].obj.checked=false;
}
function unislider3click(e){
	unisliders[1].obj.checked=false;
}