irise.namespace("irise"); // sets the namespace


var iPhoneMultiVPVInstanceArr = new Array(); // reference to all instances
var mvpvJSVersionGotFocus;
var gmgWrkArndFrScrlStop;
var mouseDownGMGMVPV;
irise.iPhoneMultiValuePickerVertical = function(){
}

irise.iPhoneMultiValuePickerVertical.prototype.onload = function(){
		var me = this;
		
		var mvpvCol1MousePressed = false;
		var mvpvCol1MouseMoved = false;
		
		var mvpvCol2MousePressed = false;
		var mvpvCol2MouseMoved = false;
		
		var mvpvCol3MousePressed = false;
		var mvpvCol3MouseMoved = false;
		
		//Variable that keeps inFocus Value Index of each column
		var mvpvCol1FocusIndex;
		var mvpvCol21FocusIndex;
		var mvpvCol3FocusIndex;
		
		var noOfColsExists = 1;
		
		var mvpvInstanceId = this.getId(); // Get widget instance ID..
		var mvpvInstIdShort = mvpvInstanceId.substring(mvpvInstanceId.length-4);
		
		iPhoneMultiVPVInstanceArr[mvpvInstIdShort] = this; // Stores the widget instance in the global array.
		
		var customizeForDevice = function(){
			var ua = navigator.userAgent;
			var checker = {
				iphone: ua.match(/(iPhone|iPod|iPad)/),
				blackberry: ua.match(/BlackBerry/),
				android: ua.match(/Android/)
			};
			if (checker.android || checker.iphone || checker.blackberry)
				return true;
			else
				return false;
		}
		
		//Get 1st column data					
		
		var mvpvOptions1 =  this.getProperty('mvpvOptions1');
		if(mvpvOptions1 == "" || mvpvOptions1 == null || mvpvOptions1 == "undefined"){
			mvpvOptions1 = new Array();
			mvpvOptions1[0] = "Lorem ipsum";
			mvpvOptions1[1] = "Etiam";
			mvpvOptions1[2] = "Sed vitae";
			mvpvOptions1[3] = "Quisque";
			mvpvOptions1[4] = "Nam porta";
			mvpvOptions1[5] = "Morbi ornare";
		}
		else{
			if (typeof(mvpvOptions1) == 'string'){
				var tempmvpvOptions1 = mvpvOptions1;
				mvpvOptions1 = new Array();
				mvpvOptions1[0] = tempmvpvOptions1;
				
			}
		}
		
		// Get 2nd column data
		
		var mvpvOptions2 =  this.getProperty('mvpvOptions2');
		
		if(mvpvOptions2 == "" || mvpvOptions2 == null || mvpvOptions2 == "undefined"){
			
		}
		else{
			noOfColsExists = 2;
			if (typeof(mvpvOptions2) == 'string'){
				var tempmvpvOptions2 = mvpvOptions2;
				mvpvOptions2 = new Array();
				mvpvOptions2[0] = tempmvpvOptions2;
				
			}
		}
			
		// Get 3 rd column data
		
		var mvpvOptions3 =  this.getProperty('mvpvOptions3');
		
		if(mvpvOptions3 == "" || mvpvOptions3 == null || mvpvOptions3 == "undefined"){
			
		}
		else{
			if (noOfColsExists == 2){
				noOfColsExists = 3;
				if (typeof(mvpvOptions3) == 'string'){
					var tempmvpvOptions3 = mvpvOptions3;
					mvpvOptions3 = new Array();
					mvpvOptions3[0] = tempmvpvOptions3;
				
				}
			}
		}
		
		// Get highlight value for 1st column
		var mvpvSelOpt1 = this.getProperty('mvpvSelectedOption1');
		if(mvpvSelOpt1 == "" || mvpvSelOpt1 == null || mvpvSelOpt1 == "undefined")
			mvpvSelOpt1 = "";
			
		// Get highlight value for 2nd column
		var mvpvSelOpt2 = this.getProperty('mvpvSelectedOption2');
		if(mvpvSelOpt2 == "" || mvpvSelOpt2 == null || mvpvSelOpt2 == "undefined")
			mvpvSelOpt2 = "";
			
		// Get highlight value for 3rd column
		var mvpvSelOpt3 = this.getProperty('mvpvSelectedOption3');
		if(mvpvSelOpt3 == "" || mvpvSelOpt3 == null || mvpvSelOpt3 == "undefined")
			mvpvSelOpt3 = "";
		
		// Get target widget for 1st column
		var mvpvTargetWidget1 = this.getProperty('mvpvTargtWidget1');
		if(mvpvTargetWidget1 == "" || mvpvTargetWidget1 == null || mvpvTargetWidget1 == "undefined")
				mvpvTargetWidget1 = "";	// no need to check the autoshow field
		
		var mvpvTargetWidget2 = this.getProperty('mvpvTargtWidget2');
		if(mvpvTargetWidget2 == "" || mvpvTargetWidget2 == null || mvpvTargetWidget2 == "undefined")
				mvpvTargetWidget2 = "";
				
		var mvpvTargetWidget3 = this.getProperty('mvpvTargtWidget3');
		if(mvpvTargetWidget3 == "" || mvpvTargetWidget3 == null || mvpvTargetWidget3 == "undefined")
				mvpvTargetWidget3 = "";
		/*else if(vPickerTagertWidget.getWidgetDiv().text())
			vPickerTagertWidget.getWidgetDiv().hide();	// if target is a label widget, then hide it initially
														// again, no need to check the autoshow field*/
		var mvpvFontFamily = this.getProperty('mvpvFontFamily');
		var mvpvFontSize = this.getProperty('mvpvFontSize');
		if(mvpvFontSize == "" || mvpvFontSize == null || mvpvFontSize == "undefined" || mvpvFontSize < 18 || mvpvFontSize > 26)
			mvpvFontSize = "26";
		var mvpvFontColor = this.getProperty('mvpvFontColor');
		if(mvpvFontColor == "" || mvpvFontColor == null || mvpvFontColor == "undefined")
			mvpvFontColor = "#000000";
		var mvpvFontWeight = this.getProperty('mvpvFontWeight');
		if(mvpvFontWeight === null || mvpvFontWeight === 'undefined' || mvpvFontWeight === false)
			mvpvFontWeight = 'normal';
		else
			mvpvFontWeight = 'bold';
			
		//gets the text align property of each column
		var mvpvCol1TextAlign = this.getProperty('Col1TextAlign');
		var mvpvCol2TextAlign = this.getProperty('Col2TextAlign');
		var mvpvCol3TextAlign = this.getProperty('Col3TextAlign');
		
		var mvpvCol1CompleteRows = '';
		var mvpvCol2CompleteRows = '';
		var mvpvCol3CompleteRows = '';
		
		if (noOfColsExists == 1){
			mvpvCol1FocusIndex = jQuery.inArray(mvpvSelOpt1, mvpvOptions1);
			if (mvpvCol1FocusIndex < 0)
				mvpvCol1FocusIndex = 0;
			for(var i = 0; i < mvpvOptions1.length; i++){
				mvpvCol1CompleteRows = mvpvCol1CompleteRows + mvpvRowPopulator(mvpvOptions1[i], i, mvpvInstanceId, 'Col1');
			}
			var toMVPVAppendDiv ='<div class="mvpvOuterDivSingleCol mvpvContainerDiv"><div class="mvpvfirstInnerDiv"><div class="mvpvInnerSingleDiv mvpvCol1">'+mvpvCol1CompleteRows+'</div></div></div>';
			
		}
		else if (noOfColsExists == 2){
			mvpvCol1FocusIndex = jQuery.inArray(mvpvSelOpt1, mvpvOptions1);
			if (mvpvCol1FocusIndex < 0)
				mvpvCol1FocusIndex = 0;
			for(var i = 0; i < mvpvOptions1.length; i++){
				mvpvCol1CompleteRows = mvpvCol1CompleteRows + mvpvRowPopulator(mvpvOptions1[i], i, mvpvInstanceId, 'Col1');
			}
			
			mvpvCol2FocusIndex = jQuery.inArray(mvpvSelOpt2, mvpvOptions2);
			if (mvpvCol2FocusIndex < 0)
				mvpvCol2FocusIndex = 0;
			for(var i = 0; i < mvpvOptions2.length; i++){
				mvpvCol2CompleteRows = mvpvCol2CompleteRows + mvpvRowPopulator(mvpvOptions2[i], i, mvpvInstanceId, 'Col2');
			}
			
			var toMVPVAppendDiv ='<div class="mvpvOuterDivDoubleCol mvpvContainerDiv"><div class="mvpvfirstInnerDiv"><div class="mvpvInnerDoubleDiv mvpvCol1">'+mvpvCol1CompleteRows+'</div><div class="mvpvSpacerDiv2Cols"></div><div class="mvpvInnerDoubleDiv mvpvCol2">'+mvpvCol2CompleteRows+'</div></div></div>';
		}
		
		else if (noOfColsExists == 3){
			mvpvCol1FocusIndex = jQuery.inArray(mvpvSelOpt1, mvpvOptions1);
			if (mvpvCol1FocusIndex < 0)
				mvpvCol1FocusIndex = 0;
			for(var i = 0; i < mvpvOptions1.length; i++){
				mvpvCol1CompleteRows = mvpvCol1CompleteRows + mvpvRowPopulator(mvpvOptions1[i], i, mvpvInstanceId, 'Col1');
			}
			
			mvpvCol2FocusIndex = jQuery.inArray(mvpvSelOpt2, mvpvOptions2);
			if (mvpvCol2FocusIndex < 0)
				mvpvCol2FocusIndex = 0;
			for(var i = 0; i < mvpvOptions2.length; i++){
				mvpvCol2CompleteRows = mvpvCol2CompleteRows + mvpvRowPopulator(mvpvOptions2[i], i, mvpvInstanceId, 'Col2');
			}
			
			mvpvCol3FocusIndex = jQuery.inArray(mvpvSelOpt3, mvpvOptions3);
			if (mvpvCol3FocusIndex < 0)
				mvpvCol3FocusIndex = 0;
			for(var i = 0; i < mvpvOptions3.length; i++){
				mvpvCol3CompleteRows = mvpvCol3CompleteRows + mvpvRowPopulator(mvpvOptions3[i], i, mvpvInstanceId, 'Col3');
			}
			
			var toMVPVAppendDiv ='<div class="mvpvOuterDivTripleCol mvpvContainerDiv"><div class="mvpvfirstInnerDiv"><div class="mvpvInnerTripleDiv mvpvCol1">'+mvpvCol1CompleteRows+'</div><div class="mvpvSpacerDiv3Cols"></div><div class="mvpvInnerTripleDiv mvpvCol2">'+mvpvCol2CompleteRows+'</div><div class="mvpvSpacerDiv3Cols"></div><div class="mvpvInnerTripleDiv mvpvCol3">'+mvpvCol3CompleteRows+'</div></div></div>';
		}
		
		
		
		this.getWidgetDiv().append(toMVPVAppendDiv);
		// correct the offsets appearing for the widget Div
		this.getWidgetDiv().css('lineHeight', 0);
		if($.browser.msie)// for IE
			this.getWidgetDiv().css('marginTop', 0);
		else if($.browser.opera) // for Opera
			this.getWidgetDiv().css('marginLeft', 0.5);
		else if($.browser.safari) // for Safari
			this.getWidgetDiv().css('marginTop', -5);

		if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) // Chrome
		this.getWidgetDiv().css('marginTop', 0);
		
		//Set the picker Col 1 text properties
		$('#'+mvpvInstanceId+' .mvpvRowText1').css('fontFamily',mvpvFontFamily);
		$('#'+mvpvInstanceId+' .mvpvRowText1').css('fontSize',mvpvFontSize+'px');
		$('#'+mvpvInstanceId+' .mvpvRowText1').css('color',mvpvFontColor);
		$('#'+mvpvInstanceId+' .mvpvRowText1').css('fontWeight',mvpvFontWeight);
		
		//Set the picker Col 3 text properties
		$('#'+mvpvInstanceId+' .mvpvRowText2').css('fontFamily',mvpvFontFamily);
		$('#'+mvpvInstanceId+' .mvpvRowText2').css('fontSize',mvpvFontSize+'px');
		$('#'+mvpvInstanceId+' .mvpvRowText2').css('color',mvpvFontColor);
		$('#'+mvpvInstanceId+' .mvpvRowText2').css('fontWeight',mvpvFontWeight);
		
		//Set the picker Col 3 text properties
		$('#'+mvpvInstanceId+' .mvpvRowText3').css('fontFamily',mvpvFontFamily);
		$('#'+mvpvInstanceId+' .mvpvRowText3').css('fontSize',mvpvFontSize+'px');
		$('#'+mvpvInstanceId+' .mvpvRowText3').css('color',mvpvFontColor);
		$('#'+mvpvInstanceId+' .mvpvRowText3').css('fontWeight',mvpvFontWeight);
		
		if (noOfColsExists == 1){
			$('#'+mvpvInstanceId+' .mvpvInnerSingleDiv').draggable({ axis: "y" }); // Makes the Column 1 draggable
			$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
		}
		else if (noOfColsExists == 2){	
			$('#'+mvpvInstanceId+' .mvpvInnerDoubleDiv').draggable({ axis: "y" }); // Makes the Column 1 draggable
			$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
			$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : ((2*39)-(mvpvCol2FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
		}
		else if (noOfColsExists == 3){
			$('#'+mvpvInstanceId+' .mvpvInnerTripleDiv').draggable({ axis: "y" }); // Makes the Column 1 draggable
			$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
			$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : ((2*39)-(mvpvCol2FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
			$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : ((2*39)-(mvpvCol3FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
		}
		
		// Binding Mouse Down Function To 3 Columns -- Start
		
		$('#'+mvpvInstanceId+' .mvpvCol1').bind('mousedown', function(e) {
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop.preventDefault();
				
		}
			
			mvpvCol1MousePressed = true;
			
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop = null;
			}
			// for the onBlur issue in IE when the widget is placed within a view
			if($.browser.msie){// for IE
			if(!mouseDownGMGMVPV){
				e.stopPropagation();
				$('#'+mvpvInstanceId+' .mvpvContainerDiv').mousedown();
				}
			}
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol2').bind('mousedown', function(e) {
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop.preventDefault();
			}
			
			mvpvCol2MousePressed = true;
			
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop =null;
			}
			// for the onBlur issue in IE when the widget is placed within a view
			if($.browser.msie){// for IE
			if(!mouseDownGMGMVPV){
				e.stopPropagation();
				$('#'+mvpvInstanceId+' .mvpvContainerDiv').mousedown();
				}
			}
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol3').bind('mousedown', function(e) {
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop.preventDefault();
		}
			
			mvpvCol3MousePressed = true;
			
			if(customizeForDevice()){
				gmgWrkArndFrScrlStop = null;
			}
								// for the onBlur issue in IE when the widget is placed within a view
			if($.browser.msie){// for IE
				if(!mouseDownGMGMVPV){
					e.stopPropagation();
					$('#'+mvpvInstanceId+' .mvpvContainerDiv').mousedown();
				}
			}
		});
		
		// Binding Mouse Move Function To 3 Columns -- Start
		
		$('#'+mvpvInstanceId+' .mvpvCol1').bind('mousemove', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		
		if (mvpvCol1MousePressed)
			mvpvCol1MouseMoved = true;
		
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol2').bind('mousemove', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		
		if (mvpvCol2MousePressed)
			mvpvCol2MouseMoved = true;
		
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol3').bind('mousemove', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		
		if (mvpvCol3MousePressed)
			mvpvCol3MouseMoved = true;
		
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		});
		
		// Binding Mouse Out Function To 3 Columns -- Start
		
		$('#'+mvpvInstanceId+' .mvpvCol1').bind('mouseout', function(e) {
			$('#'+mvpvInstanceId+' .mvpvCol1').mouseup();
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol2').bind('mouseout', function(e) {
			$('#'+mvpvInstanceId+' .mvpvCol2').mouseup();
		});
		
		$('#'+mvpvInstanceId+' .mvpvCol3').bind('mouseout', function(e) {
			$('#'+mvpvInstanceId+' .mvpvCol3').mouseup();
		});
		
		// Binding Mouse Up Function To 3 Columns -- Start
		
		$('#'+mvpvInstanceId+' .mvpvCol1').bind('mouseup', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		if (mvpvCol1MousePressed){
			var col1OldFocus = mvpvCol1FocusIndex;
			var col1FireEvent = false;
			if (!mvpvCol1MouseMoved){
				var col1Offset = $(this).offset();
				var col1ClickedY = e.pageY - col1Offset.top;  // Get the current mouse Y position
				mvpvCol1FocusIndex = col1ClickedY/39;
				mvpvCol1FocusIndex = Math.ceil(mvpvCol1FocusIndex)-1;
				$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
				
				// Highlight the in Focus Value while clicking on a value
				$('#'+mvpvInstanceId+' .mvpvRowText1').css('color',mvpvFontColor);
				$('#'+mvpvInstanceId+' #'+e.target.id).css('color','#324F85');
			}
			mvpvCol1MousePressed = false;
			
			if (mvpvCol1MouseMoved){
				mvpvCol1MouseMoved = false;
				var mvpvCol1Offset = $('#'+mvpvInstanceId+' .mvpvCol1').offset();
				var mvpvCol1CurrentY = e.pageY - mvpvCol1Offset.top;  // Get the current mouse Y position
				//alert('Moved '+vpvJSMouseMoved);
				//alert('Pressed '+vpvJSMousePressed);
				var mvpvCol1Pos = $(this).position().top;
				if (mvpvCol1Pos > 65){
					mvpvCol1FocusIndex = 0;
					$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : (2*39)+'px'}); // position the Focus Value at centre while loading
				}
				else if (mvpvCol1Pos <= (-(mvpvOptions1.length-3)*39)){
					mvpvCol1FocusIndex = mvpvOptions1.length-1;
					$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : (-(mvpvOptions1.length-3)*39)+'px'}); // position the Focus Value at centre while loading
				}
				else{
					var mvpvCol1CurrFocusY = ((2*39)-(mvpvCol1FocusIndex*39));
					if ( mvpvCol1Pos < mvpvCol1CurrFocusY ) // If new 'Y' val is less than current Y value
					{
						var mvpvCol1Diff = mvpvCol1Pos - mvpvCol1CurrFocusY;
						var mvpvCol1NoOfElements = Math.round(mvpvCol1Diff/39);
						mvpvCol1FocusIndex = mvpvCol1FocusIndex + Math.abs(mvpvCol1NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'});
					}
					else
					{
						var mvpvCol1Diff = mvpvCol1Pos - mvpvCol1CurrFocusY;
						var mvpvCol1NoOfElements = Math.round(mvpvCol1Diff/39);
						mvpvCol1FocusIndex = mvpvCol1FocusIndex - Math.abs(mvpvCol1NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol1').animate({ "top" : ((2*39)-(mvpvCol1FocusIndex*39))+'px'});
					}
									
				}
				// Highlight the in Focus Value while clicking on a value
				$('#'+mvpvInstanceId+' .mvpvRowText1').css('color',mvpvFontColor);
				$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol1Row'+mvpvCol1FocusIndex).css('color','#324F85');
			}
			
			if (col1OldFocus != mvpvCol1FocusIndex)
				col1FireEvent = true;
			setiPhoneMVPVProperties (mvpvOptions1[mvpvCol1FocusIndex], col1FireEvent, mvpvInstanceId, 'Column1'); // sets In Focus value in the target
		}
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		});
		
		// For Column 2
		
		$('#'+mvpvInstanceId+' .mvpvCol2').bind('mouseup', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		if (mvpvCol2MousePressed){
			var col2OldFocus = mvpvCol2FocusIndex;
			var col2FireEvent = false;
			if (!mvpvCol2MouseMoved){
			var col2Offset = $(this).offset();
			var col2ClickedY = e.pageY - col2Offset.top;  // Get the current mouse Y position
			mvpvCol2FocusIndex = col2ClickedY/39;
			mvpvCol2FocusIndex = Math.ceil(mvpvCol2FocusIndex)-1;
			$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : ((2*39)-(mvpvCol2FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
			
			// Highlight the in Focus Value while drag a value
			$('#'+mvpvInstanceId+' .mvpvRowText2').css('color',mvpvFontColor);
			$('#'+mvpvInstanceId+' #'+e.target.id).css('color','#324F85');
			
			}
			mvpvCol2MousePressed = false;
			
			if (mvpvCol2MouseMoved){
				mvpvCol2MouseMoved = false;
				var mvpvCol2Offset = $('#'+mvpvInstanceId+' .mvpvCol2').offset();
				var mvpvCol2CurrentY = e.pageY - mvpvCol2Offset.top;  // Get the current mouse Y position
				//alert('Moved '+vpvJSMouseMoved);
				//alert('Pressed '+vpvJSMousePressed);
				var mvpvCol2Pos = $(this).position().top;
				if (mvpvCol2Pos > 65){
					mvpvCol2FocusIndex = 0;
					$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : (2*39)+'px'}); // position the Focus Value at centre while loading
				}
				else if (mvpvCol2Pos <= (-(mvpvOptions2.length-3)*39)){
					mvpvCol2FocusIndex = mvpvOptions2.length-1;
					$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : (-(mvpvOptions2.length-3)*39)+'px'}); // position the Focus Value at centre while loading
				}
				else{
					var mvpvCol2CurrFocusY = ((2*39)-(mvpvCol2FocusIndex*39));
					if ( mvpvCol2Pos < mvpvCol2CurrFocusY ) // If new 'Y' val is less than current Y value
					{
						var mvpvCol2Diff = mvpvCol2Pos - mvpvCol2CurrFocusY;
						var mvpvCol2NoOfElements = Math.round(mvpvCol2Diff/39);
						mvpvCol2FocusIndex = mvpvCol2FocusIndex + Math.abs(mvpvCol2NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : ((2*39)-(mvpvCol2FocusIndex*39))+'px'});
					}
					else
					{
						var mvpvCol2Diff = mvpvCol2Pos - mvpvCol2CurrFocusY;
						var mvpvCol2NoOfElements = Math.round(mvpvCol2Diff/39);
						mvpvCol2FocusIndex = mvpvCol2FocusIndex - Math.abs(mvpvCol2NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol2').animate({ "top" : ((2*39)-(mvpvCol2FocusIndex*39))+'px'});
					}
									
				}
				// Highlight the in Focus Value while drag a value
				$('#'+mvpvInstanceId+' .mvpvRowText2').css('color',mvpvFontColor);
				$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol2Row'+mvpvCol2FocusIndex).css('color','#324F85');
			}
			
			if (col2OldFocus != mvpvCol2FocusIndex)
				col2FireEvent = true;
			setiPhoneMVPVProperties (mvpvOptions2[mvpvCol2FocusIndex], col2FireEvent, mvpvInstanceId, 'Column2'); // sets In Focus value in the target
		}
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		});
		
		// For Column 3
		
		$('#'+mvpvInstanceId+' .mvpvCol3').bind('mouseup', function(e) {
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop.preventDefault();
		}
		if (mvpvCol3MousePressed){
			var col3OldFocus = mvpvCol3FocusIndex;
			var col3FireEvent = false;
			if (!mvpvCol3MouseMoved){
			var col3Offset = $(this).offset();
			var col3ClickedY = e.pageY - col3Offset.top;  // Get the current mouse Y position
			mvpvCol3FocusIndex = col3ClickedY/39;
			mvpvCol3FocusIndex = Math.ceil(mvpvCol3FocusIndex)-1;
			$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : ((2*39)-(mvpvCol3FocusIndex*39))+'px'}); // position the Focus Value at centre while loading
			
			// Highlight the in Focus Value while clicking on a value
			$('#'+mvpvInstanceId+' .mvpvRowText3').css('color',mvpvFontColor);
			$('#'+mvpvInstanceId+' #'+e.target.id).css('color','#324F85');
			
			}
			mvpvCol3MousePressed = false;
			
			if (mvpvCol3MouseMoved){
				mvpvCol3MouseMoved = false;
				var mvpvCol3Offset = $('#'+mvpvInstanceId+' .mvpvCol3').offset();
				var mvpvCol3CurrentY = e.pageY - mvpvCol3Offset.top;  // Get the current mouse Y position
				//alert('Moved '+vpvJSMouseMoved);
				//alert('Pressed '+vpvJSMousePressed);
				var mvpvCol3Pos = $(this).position().top;
				if (mvpvCol3Pos > 65){
					mvpvCol3FocusIndex = 0;
					$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : (2*39)+'px'}); // position the Focus Value at centre while loading
				}
				else if (mvpvCol3Pos <= (-(mvpvOptions3.length-3)*39)){
					mvpvCol3FocusIndex = mvpvOptions3.length-1;
					$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : (-(mvpvOptions3.length-3)*39)+'px'}); // position the Focus Value at centre while loading
				}
				else{
					var mvpvCol3CurrFocusY = ((2*39)-(mvpvCol3FocusIndex*39));
					if ( mvpvCol3Pos < mvpvCol3CurrFocusY ) // If new 'Y' val is less than current Y value
					{
						var mvpvCol3Diff = mvpvCol3Pos - mvpvCol3CurrFocusY;
						var mvpvCol3NoOfElements = Math.round(mvpvCol3Diff/39);
						mvpvCol3FocusIndex = mvpvCol3FocusIndex + Math.abs(mvpvCol3NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : ((2*39)-(mvpvCol3FocusIndex*39))+'px'});
					}
					else
					{
						var mvpvCol3Diff = mvpvCol3Pos - mvpvCol3CurrFocusY;
						var mvpvCol3NoOfElements = Math.round(mvpvCol3Diff/39);
						mvpvCol3FocusIndex = mvpvCol3FocusIndex - Math.abs(mvpvCol3NoOfElements);
						$('#'+mvpvInstanceId+' .mvpvCol3').animate({ "top" : ((2*39)-(mvpvCol3FocusIndex*39))+'px'});
					}
									
				}
				// Highlight the in Focus Value while clicking on a value
				$('#'+mvpvInstanceId+' .mvpvRowText3').css('color',mvpvFontColor);
				$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol3Row'+mvpvCol3FocusIndex).css('color','#324F85');
			}
			
			if (col3OldFocus != mvpvCol3FocusIndex)
				col3FireEvent = true;
			setiPhoneMVPVProperties (mvpvOptions3[mvpvCol3FocusIndex], col3FireEvent, mvpvInstanceId, 'Column3'); // sets In Focus value in the target
		}
		if(customizeForDevice()){
			gmgWrkArndFrScrlStop = null;
		}
		});
		
		
		if (noOfColsExists >= 1){
			$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol1Row'+mvpvCol1FocusIndex).css('color','#324F85');
			$('#'+mvpvInstanceId+' .mvpvRowText1').css('text-align', ""+mvpvCol1TextAlign);
			setiPhoneMVPVProperties (mvpvOptions1[mvpvCol1FocusIndex], false, mvpvInstanceId, 'Column1');
		}
		if (noOfColsExists >= 2){
			$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol2Row'+mvpvCol2FocusIndex).css('color','#324F85');
			$('#'+mvpvInstanceId+' .mvpvRowText2').css('text-align', ""+mvpvCol2TextAlign);
			setiPhoneMVPVProperties (mvpvOptions2[mvpvCol2FocusIndex], false, mvpvInstanceId, 'Column2');
		}
		if (noOfColsExists > 2){
			$('#'+mvpvInstanceId+' #'+mvpvInstanceId+'DivCol3Row'+mvpvCol3FocusIndex).css('color','#324F85');
			$('#'+mvpvInstanceId+' .mvpvRowText3').css('text-align', ""+mvpvCol3TextAlign);
			setiPhoneMVPVProperties (mvpvOptions3[mvpvCol3FocusIndex], false, mvpvInstanceId, 'Column3');
		}
		
		
		// Handles On Blur Custom Event..
		$('#'+mvpvInstanceId+' .mvpvContainerDiv').bind('mousedown', function(){
			mouseDownGMGMVPV = true;	// for the onBlur issue in IE when the widget is placed within a view	
			if((mvpvJSVersionGotFocus != null) && (mvpvJSVersionGotFocus != mvpvInstanceId))
				iPhoneMultiVPVInstanceArr[mvpvJSVersionGotFocus.substring(mvpvJSVersionGotFocus.length-4)].sendEvent('onBlur');
			mvpvJSVersionGotFocus = mvpvInstanceId;
			mouseDownGMGMVPV = false;	// for the onBlur issue in IE when the widget is placed within a view	
    	});	
		
		$(document).bind("mousedown", me.blurHandler);
		
		if (customizeForDevice()){
				document.addEventListener("touchstart", me.touchHandler, true);
				document.addEventListener("touchmove", me.touchHandler, true);
				document.addEventListener("touchend", me.touchHandler, true);
		}
			
}
// Onload Function ends Here


function mvpvRowPopulator(mvpvText, arrayIndex, mvpvDivId, colNo){
	var mvpvTextClass;
	if (colNo == 'Col1')
		mvpvTextClass = "mvpvRowText1";
	else if (colNo == 'Col2')
		mvpvTextClass = "mvpvRowText2";
	else if (colNo == 'Col3')
		mvpvTextClass = "mvpvRowText3";
		
	var mvpvRowDiv = '<div class="mvpvRowDiv">';  // Row Div 
	var mvpvTextDiv = mvpvRowDiv+'<div class="'+mvpvTextClass+'" id="'+mvpvDivId+'Div'+colNo+'Row'+arrayIndex+'">'+mvpvText+'</div></div>';
	return mvpvTextDiv;
}


function setiPhoneMVPVProperties(vlue, fireEvent, instanceId, columnNo){
	var mvpvCurrColTarget;
	var mvpvCurrColSelOption;
	var mvpvCurrColFireEvent;
	var mvpvCurrInstanceId = instanceId.substring(instanceId.length-4);
	
	if (columnNo == 'Column1'){
		mvpvCurrColTarget = "mvpvTargtWidget1";
		mvpvCurrColSelOption = "mvpvSelectedOption1";
		mvpvCurrColFireEvent = "onSelectionChange1";
	}
	else if (columnNo == 'Column2'){
		mvpvCurrColTarget = "mvpvTargtWidget2";
		mvpvCurrColSelOption = "mvpvSelectedOption2";
		mvpvCurrColFireEvent = "onSelectionChange2";
	}
	else if (columnNo == 'Column3'){
		mvpvCurrColTarget = "mvpvTargtWidget3";
		mvpvCurrColSelOption = "mvpvSelectedOption3";
		mvpvCurrColFireEvent = "onSelectionChange3";
	}
	
	
	//alert('Len  :'+iPhoneValuePickerVerticalInstanceArr.length);
	iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].setProperty(mvpvCurrColSelOption,vlue);	// sets the widget property

if(iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget)){
		if (iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget).getType() === 'widget') // if an ibloc, then use the setValue action
			iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget).setValue(vlue);
		else{ 
			if(iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget).getWidgetDiv().text()){ // if label widget, then use html() method
				iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget).getWidgetDiv().html(vlue);
				// iPhoneValuePickerVerticalInstanceArr[instanceId].getProperty(mvpvCurrColTarget).getWidgetDiv().show();
			}
			else
				iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].getProperty(mvpvCurrColTarget).getWidgetDiv().val(vlue); // for all others, use the val() method
		}
	}
	if(fireEvent)
		iPhoneMultiVPVInstanceArr[mvpvCurrInstanceId].sendEvent(mvpvCurrColFireEvent);
	return "success";
}


// integration with the setValue action widget
irise.iPhoneMultiValuePickerVertical.prototype.setValue = function(c){
	var mvpvValUpdated = false;
	var mvpvThisID = this.getId();
	mvpvThisID = mvpvThisID.substring(mvpvThisID.length-4);
	var mvpvCol1CurrFocus = iPhoneMultiVPVInstanceArr[mvpvThisID].getProperty('mvpvSelectedOption1')
	var mvpvCol2CurrFocus = iPhoneMultiVPVInstanceArr[mvpvThisID].getProperty('mvpvSelectedOption2')
	var mvpvCol3CurrFocus = iPhoneMultiVPVInstanceArr[mvpvThisID].getProperty('mvpvSelectedOption3')
	var mvpvCol1Options = this.getProperty('mvpvOptions1');
	var mvpvCol2Options = this.getProperty('mvpvOptions2');
	var mvpvCol3Options = this.getProperty('mvpvOptions3');
	if ($.isArray(c)){
		var mvpvCol1NewVal = c[0];
		var mvpvCol2NewVal = c[1];
		var mvpvCol3NewVal = c[2];
	}
	else{
		var mvpvCol1NewVal = c;
		var mvpvCol2NewVal = c;
		var mvpvCol3NewVal = c;
	}
	if (jQuery.inArray(mvpvCol1NewVal, mvpvCol1Options) >= 0 ){
		if (mvpvCol1CurrFocus != mvpvCol1NewVal){
			iPhoneMultiVPVInstanceArr[mvpvThisID].sendEvent('onSelectionChange1');
			this.setProperty('mvpvSelectedOption1', mvpvCol1NewVal);
			mvpvValUpdated = true;
		}
	}
	if (jQuery.inArray(mvpvCol2NewVal, mvpvCol2Options) >= 0 ){
		if (mvpvCol2CurrFocus != mvpvCol2NewVal){
			iPhoneMultiVPVInstanceArr[mvpvThisID].sendEvent('onSelectionChange2');
			this.setProperty('mvpvSelectedOption2', mvpvCol2NewVal);
			mvpvValUpdated = true;
		}
	}
	if (jQuery.inArray(mvpvCol3NewVal, mvpvCol3Options) >= 0 ){
		if (mvpvCol3CurrFocus != mvpvCol3NewVal){
			iPhoneMultiVPVInstanceArr[mvpvThisID].sendEvent('onSelectionChange3');
			this.setProperty('mvpvSelectedOption3', mvpvCol3NewVal);
			mvpvValUpdated = true;
		}
	}
	if(mvpvValUpdated){
		$(this.getWidgetDiv()).children().remove();
		this.onload();
	}
}


irise.iPhoneMultiValuePickerVertical.prototype.touchHandler = function(event){
    var mvpvTouches = event.changedTouches,
        mvpvFirst = mvpvTouches[0],
        mvpvType = "";
        switch(event.type)
    	{
			case "touchstart": mvpvType = "mousedown"; break;
			case "touchmove":  mvpvType="mousemove"; break;        
			case "touchend":   mvpvType="mouseup"; break;
			default: return;
    	}

    
		var mvpvSimulatedEvent = document.createEvent("MouseEvent");
		mvpvSimulatedEvent.initMouseEvent(mvpvType, true, true, window, 1, 
								  mvpvFirst.screenX, mvpvFirst.screenY, 
								  mvpvFirst.clientX, mvpvFirst.clientY, false, 
								  false, false, false, 0/*left*/, null);
		
		gmgWrkArndFrScrlStop = event;
		mvpvFirst.target.dispatchEvent(mvpvSimulatedEvent);
}

irise.iPhoneMultiValuePickerVertical.prototype.blurHandler = function(event){
	if (mvpvJSVersionGotFocus && !(onBlurGMGChildFinder(event.target, '#'+mvpvJSVersionGotFocus))){
		iPhoneMultiVPVInstanceArr[mvpvJSVersionGotFocus.substring(mvpvJSVersionGotFocus.length-4)].sendEvent('onBlur');
		mvpvJSVersionGotFocus = null;
	}
}


function onBlurGMGChildFinder(childObj, parentName){
	var parentz = $(childObj).parents().get();
	for ( j = 0; j < parentz.length; j++ ) {
		if ( $(parentz[j]).is(parentName) ) {
			return true;
		}
    }
		return false;
}
