var 	adam, //dummy variable
	tommy,  //dummy variable
	ajaxRes=new Function,  //ajax results functions
	xhr1,  //XHR Transaction
	xhr2,  //XHR Transaction
	xhr3,  //XHR Transaction
	xhr4;  //XHR Transaction

function errHandle(ary){  //Validates array of values by type
	var fNum='#f-'+curSlide,
	      test,
	      pass=true;
	for(i in ary){
		test=$(ary[i].ele,fNum).val().is(ary[i].type);
		if(test!=true){
			$(ary[i].ele,fNum).select().trigger('focus');
			alert($(ary[i].ele,fNum).val() + ' - ' + test);
			pass=false;
			break;
		}
	}
	return pass;
}

function hiddenValue(formId,eleName,eleVal){  //Add hidden input field with value if noexist if does update value
	if($('#' + formId + eleName).length==0){
		$('#' + formId).prepend("<input type='hidden' id='" + formId + eleName + "' name='" + eleName + "' value='" + eleVal + "'>");
	}else{
		$('#' + formId + eleName).val(eleVal);
	}
}

function ajaxCall(form,doAction,xhr){  //Make ajax call.  Pass form variables, action, and XHR transaction(if used, aborts previous transaction).  Calls ajaxRes[doAction]
	if(doAction)
		hiddenValue(form,'act',doAction);
	form='#' + form;
	if(typeof xhr=='object')xhr.abort();
	return $.ajax({url:ajaxPage,type:'POST',dataType:'json',success:function(res){window.ajaxRes[res.action](res);},data:$(form).serialize()});
}

function labelAttention(){  //Do action on input focus and keep track of current focus and last focus
	$('input').bind('focus',function(){$(".hadFocus").removeClass('hadFocus');$(this).addClass('hasFocus hadFocus');$("label[for=" + $(this).attr('id') + "]").effect("pulsate", { times:1 }, 500);}).bind('blur',function(){$(this).removeClass('hasFocus');});
}

function trimVal(ele){  //Save value as trimmed value
	ele.val($.trim(ele.val()));
	return ele;
}

function sendFocusBack(){  //Put focus on last place it was
	$('.hadFocus').focus();
}

function xmlData(data){  // Text to XML
	if (window.ActiveXObject){ // code for IE
		var doc=new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(data);
	}else{ // code for Mozilla, Firefox, Opera, etc.
		var parser=new DOMParser();
		var doc=parser.parseFromString(data,"text/xml");
	}
	return doc;
}

function clearChroma(form){  //Remove chroma colors
	$('.chroma-hash', form).remove();
}

function updateStatus(ele,mess,type){
	if(type=='error'){
		$(ele).removeClass('ui-state-highlight').addClass('ui-state-error');
		$(ele+' .icon').removeClass('ui-icon-info').addClass('ui-icon-alert');
	}else{
		$(ele).removeClass('ui-state-error').addClass('ui-state-highlight');
		$(ele+' .icon').removeClass('ui-icon-alert').addClass('ui-icon-info');
	}
	$(ele+' .message').html(mess);
	$(ele).show('clip',{},1000);
}

function clearForm(ele){
	$(ele+' input').val('');
	$(ele+' input[type=checkbox]').attr('checked', false);
}

ajaxRes.comLogout=function(res){  //If session expired send to login page
	if(res.info==2){
		window.location='login.php';
	}
}

try{  //If chromaHash is available use it
	$('input[type=password]').chromaHash();
}catch(err){

}

String.prototype.placeHolder = function (o) {  //Shortcut to create placeholders for variables in string
    return this.replace(/{([^{}]*)}/g, 
        function (a, b) {  
            var r = o[b];
            return typeof r === 'string' ? 
                r : a; 
        }
    ); 
};
