irise.namespace("irise"); // sets the namespace
var iOSSearchBoxInstanceArr = new Array(); // reference to all instances
var iOSSBoxDivGotFocus;
var gmgWrkArndFrScrlStop;
var mouseDownGMGiOSSBox;
irise.iOSSearchBox = function(){
}

irise.iOSSearchBox.prototype.onload = function(){
	var me=this;
	// shortening large identifiers
	var iOS_SB_Id = this.getId();
	var iOS_SB_FullId = this.getId();
    iOS_SB_Id = iOS_SB_Id.substring(iOS_SB_Id.length-4);
	iOSSearchBoxInstanceArr[iOS_SB_Id] = this;   // Stores the widget instance in the global array.
		
	var iOSSB_Width = this.getProperty('width');
	
	if (iOSSB_Width < 80)
		iOSSB_Width = 80;
	
	var iOSSB_TipText = this.getProperty('iOSSBoxTipText');
	if(iOSSB_TipText == "" || iOSSB_TipText == null || iOSSB_TipText == "undefined"){
		iOSSB_TipText = "Search";
		this.setProperty('iOSSBoxValue', iOSSB_TipText)
	}
	var iOSSB_Icon = this.getProperty('iOSSBoxIcon');
	if(iOSSB_Icon === null || iOSSB_Icon === 'undefined' || iOSSB_Icon === false)
		iOSSB_Icon = false;
	else
		iOSSB_Icon = true;
		
	var iOSSBoxImageDiv = '<div class="iOSSBoxRoundedDiv"><div class="iOSSBoxRoundedDivLeft"></div><div class="iOSSBoxRoundedDivCenter"></div><div class="iOSSBoxRoundedDivRight"></div></div>';
	
	var iOSSBoxTextInputDiv = '<div class="iOSSBoxWidgetsDiv"><div class="iOSSBoxWidgetsDivLeft"><div class="iOSSBoxSearchGlyph"></div></div><div class="iOSSBoxWidgetsDivCenter"><div class="iOSSBoxTextBoxContainer"><input id="txtSearchBox" type="text" class="iOSSBoxTextBox" style="font-family:arial; font-size:14px; color:#959aa0; -webkit-appearance: none;"/><div id="iOSCursor"></div></div></div><div class="iOSSBoxWidgetsDivRight"><div class="iOSSBoxXIcon"></div></div></div>';

	var toAppendDiv ='<div class="iOSSBoxOuterContainer">'+iOSSBoxImageDiv+iOSSBoxTextInputDiv+'</div>';
		
	this.getWidgetDiv().append(toAppendDiv);
	
	$('#'+iOS_SB_FullId+' #txtSearchBox').val(iOSSB_TipText); // Set Tip Text in the textinput Box.
	$('#'+iOS_SB_FullId+' .iOSSBoxOuterContainer').css('width', iOSSB_Width+'px');
	$('#'+iOS_SB_FullId+' .iOSSBoxRoundedDivCenter').css('width', (iOSSB_Width-30)+'px');
	$('#'+iOS_SB_FullId+' .iOSSBoxWidgetsDivCenter').css('width', (iOSSB_Width-45)+'px');
	
	
	if (!iOSSB_Icon){ // if 'Icon' property is false, the remove lens icon, adjst the textbox div's left and width properties.
		$('#'+iOS_SB_FullId+' .iOSSBoxSearchGlyph').remove();
		//$('#'+iOS_SB_FullId+' .iOSSBoxTextBoxContainer').css('margin-left', 10+'px');
		$('#'+iOS_SB_FullId+' .iOSSBoxWidgetsDivLeft').css('width', '8px');
		$('#'+iOS_SB_FullId+' .iOSSBoxWidgetsDivCenter').css('width', (iOSSB_Width-32)+'px');
		$('#'+iOS_SB_FullId+' .iOSSBoxTextBoxContainer').css('width', (iOSSB_Width-34)+'px');
		$('#'+iOS_SB_FullId+' #txtSearchBox').css('width', (iOSSB_Width-38)+'px');
	}
	else{
		$('#'+iOS_SB_FullId+' .iOSSBoxTextBoxContainer').css('width', (iOSSB_Width-45)+'px');
		$('#'+iOS_SB_FullId+' #txtSearchBox').css('width', (iOSSB_Width-50)+'px');
	}
	
	
	$('#'+iOS_SB_FullId+' .iOSSBoxTextBoxContainer').bind('keydown', function(e) { //when a keydown event fires with textinput, the x-icon and cursor image shows.
		$('#'+iOS_SB_FullId+' .iOSSBoxXIcon').css('visibility', 'visible');																	  
		var iOSBackNextCurrInsTipText = iOSSearchBoxInstanceArr[iOS_SB_FullId.substring(iOS_SB_FullId.length-4)].getProperty('iOSSBoxTipText');
		if ($.browser.msie)
			var iOSBackNextCurrTextColor = '#959aa0';
		else
			var iOSBackNextCurrTextColor = 'rgb(149, 154, 160)';
		if (($('#'+iOS_SB_FullId+' #txtSearchBox').val() == iOSBackNextCurrInsTipText) && ($('#'+iOS_SB_FullId+' #txtSearchBox').css('color') == iOSBackNextCurrTextColor)){
			$('#'+iOS_SB_FullId+' #txtSearchBox').val('');
			$('#'+iOS_SB_FullId+' #txtSearchBox').css('color', '#000000');
			$('#'+iOS_SB_FullId+' .iOSSBoxXIcon').css('visibility', 'visible');
		}
		e.stopPropagation();
	});
	
	$('#'+iOS_SB_FullId+' .iOSSBoxTextBoxContainer').bind('keyup', function(e) { //if textinput is empty, removes the x-icon.
		if ($('#'+iOS_SB_FullId+' #txtSearchBox').val() == 0){
			$('#'+iOS_SB_FullId+' .iOSSBoxXIcon').css('visibility', 'hidden');
			$('#'+iOS_SB_FullId+' #txtSearchBox').css('color', '#959aa0');
			$('#'+iOS_SB_FullId+' #txtSearchBox').val(iOSSearchBoxInstanceArr[iOS_SB_FullId.substring(iOS_SB_FullId.length-4)].getProperty('iOSSBoxTipText'));			
		}
		
	});
	
	$('#'+iOS_SB_FullId+' .iOSSBoxXIcon').bind('mouseup', function(e) { // When we click on x-icon, the textinput is cleared.
		$('#'+iOS_SB_FullId+' #txtSearchBox').val('');
		$('#'+iOS_SB_FullId+' #txtSearchBox').css('color', '#959aa0');
		$('#'+iOS_SB_FullId+' #txtSearchBox').val(iOSSearchBoxInstanceArr[iOS_SB_FullId.substring(iOS_SB_FullId.length-4)].getProperty('iOSSBoxTipText'));
		$('#'+iOS_SB_FullId+' .iOSSBoxXIcon').css('visibility', 'hidden');
	});
	
	$('#'+iOS_SB_FullId+' #txtSearchBox').bind('mousedown', function(e) { //removes the tip text, and fires the onSelect event.
		if (iOSSB_TipText == $('#'+iOS_SB_FullId+' #txtSearchBox').val()){
			$('#'+iOS_SB_FullId+' #txtSearchBox').val('');
			$('#'+iOS_SB_FullId+' #txtSearchBox').css('color', '#000000');
			iOSSearchBoxInstanceArr[iOS_SB_Id].sendEvent('OnSelect');
		}
		if($.browser.msie){// for IE
			if(!mouseDownGMGiOSSBox){
				e.stopPropagation();
				$('#'+iOS_SB_FullId+' .iOSSBoxOuterContainer').mousedown();
			}
		}
	});
	
	// correct the offsets appearing for the widget Div
	this.getWidgetDiv().css('lineHeight', 0);
	if($.browser.msie){// for IE
		this.getWidgetDiv().css('marginTop', 0);
		//if ($.browser.version < "8.0")
			$('#'+iOS_SB_FullId+' #txtSearchBox').css('padding-top', 4+'px');
	}
	else if($.browser.opera) // for Opera
		this.getWidgetDiv().css('marginLeft', 0.5);
	else if($.browser.safari){// for Safari
		if((parseInt($.browser.version))>=534)
			this.getWidgetDiv().css('marginTop', 0);
		else{
			this.getWidgetDiv().css('marginTop', -4);
		}
	}

	if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) // Chrome
		this.getWidgetDiv().css('marginTop', 0);
		
	// Handles On Blur Custom Event..
	$('#'+iOS_SB_FullId+' .iOSSBoxOuterContainer').bind('mousedown', function(){
			mouseDownGMGiOSSBox = true;													
			if((iOSSBoxDivGotFocus != null) && (iOSSBoxDivGotFocus != iOS_SB_FullId)){
				iOSSearchBoxInstanceArr[iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4)].sendEvent('onBlur');
				if ($('#'+iOSSBoxDivGotFocus+' #txtSearchBox').val() == 0){
					$('#'+iOSSBoxDivGotFocus+' #txtSearchBox').css('color', '#959aa0');
					$('#'+iOSSBoxDivGotFocus+' #txtSearchBox').val(iOSSearchBoxInstanceArr[iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4)].getProperty('iOSSBoxTipText'));			
				}
				setiOSSearchBoxTargetValue($('#'+iOSSBoxDivGotFocus+" #txtSearchBox").val(), iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4)); // Set target widgets.
			}
			iOSSBoxDivGotFocus = iOS_SB_FullId;
			mouseDownGMGiOSSBox = false;	
    });	
	
	$(document).bind("mousedown", me.blurHandler);
	
	setiOSSearchBoxTargetValue($('#'+iOS_SB_FullId+" #txtSearchBox").val(), iOS_SB_Id); // Set target widgets.
}

function setiOSSearchBoxTargetValue(vlue,instanceId){
	var iOSSBox_TargetArray = iOSSearchBoxInstanceArr[instanceId].getProperty('iOSSBoxTarget'); // get target widgets array, and set the textinput value into it.
	iOSSearchBoxInstanceArr[instanceId].setProperty('iOSSBoxValue', vlue);
	if(iOSSBox_TargetArray == "" || iOSSBox_TargetArray == null || iOSSBox_TargetArray == "undefined")
		iOSSBox_TargetArray = "";
	else {
		if (iOSSBox_TargetArray.length == "" || iOSSBox_TargetArray.length == null || iOSSBox_TargetArray.length == "undefined"){
			var tempTarget = iOSSBox_TargetArray;
			iOSSBox_TargetArray = new Array();
			iOSSBox_TargetArray[0] = tempTarget;
		}	
		
		for(var arrayIndex=0;arrayIndex<iOSSBox_TargetArray.length;arrayIndex++)
		{
			if (iOSSBox_TargetArray[arrayIndex].getType() === 'widget') // if an ibloc, then use the setValue action
				iOSSBox_TargetArray[arrayIndex].setValue(vlue);
			else{ 
					var targetWidgetId = iOSSBox_TargetArray[arrayIndex].id;
					if(iOSSBox_TargetArray[arrayIndex].getWidgetDiv().text() && !$("#"+targetWidgetId).val()){ // if label widget, then use html() method
						iOSSBox_TargetArray[arrayIndex].getWidgetDiv().html(vlue);
					}
					else{
						$("#"+targetWidgetId).val(vlue);
					}
				}
		}
		return "success";
	}
}
	

//Function that handles On Blur Custom event.
irise.iOSSearchBox.prototype.blurHandler = function(event){
	if((event.type)=="mousedown")
	{
		if (iOSSBoxDivGotFocus && !(PASonBlurGMGChildFinder(event.target, '#'+iOSSBoxDivGotFocus))){
			iOSSearchBoxInstanceArr[iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4)].sendEvent('onBlur');
			if ($('#'+iOSSBoxDivGotFocus+' #txtSearchBox').val() == 0){
					$('#'+iOSSBoxDivGotFocus+' #txtSearchBox').css('color', '#959aa0');
					$('#'+iOSSBoxDivGotFocus+' #txtSearchBox').val(iOSSearchBoxInstanceArr[iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4)].getProperty('iOSSBoxTipText'));			
			}
			setiOSSearchBoxTargetValue($('#'+iOSSBoxDivGotFocus+" #txtSearchBox").val(), iOSSBoxDivGotFocus.substring(iOSSBoxDivGotFocus.length-4));
			iOSSBoxDivGotFocus = null;
		}
	}
}

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



