/**
 * Ankermann.com.au JavaScript - Contains all application specific javascript code
 */

hld_ajax_enabled = true;
hld_ajaxLinkIdent = ".ajaxLink"; 
hld_ajaxFormIdent = ".ajaxForm";
hld_ajaxRefreshIdent = ".ajaxRefresh";  
hld_ajaxRefreshToolIdent = ".ajaxRefresh";  
hld_ajaxRefreshColoradoIdent = ".ajaxRefreshColorado";  
hld_popupLinkIdent = ".popupLink"; 
hld_mainContentIdent = "#contentWrapper";
hld_documentReadyListeners = new Array();
hld_ajaxThreads = 0;

/**
 * Keeps an array of all registered document ready listeners. This
 * are invoked when the page is loaded by full page load or AJAX
 */
function hld_documentReady(fnName){
	hld_documentReadyListeners[fnName]=fnName;
}

/**
 * Invokes all registered document ready listeners
 */
function hld_invokeDocumentReadyListeners(firesifr){
	for(f in hld_documentReadyListeners){
		//alert(f);
		eval(f+"()");
	}
	if(firesifr){
		hld_fireSIFR();
	}
}

/**
 * Define the global document ready handler
 */
$(document).ready(function(){
	hld_invokeDocumentReadyListeners(false);
});

/**
 * Register the standard document ready listeners
 */
hld_documentReady("hld_turnOnPopupLinks");
hld_documentReady("hld_turnOnAjaxLinks");
hld_documentReady("hld_turnOnAjaxForms");
hld_documentReady("hld_turnOnAjaxRefreshTool");
hld_documentReady("hld_turnOnAjaxRefreshColorado");
hld_documentReady("hideLoaderOnPageLoad");
hld_documentReady("addExternalMessageWindow");

function hld_goToVehicleRange(vehicleName){
	hld_redirect(hld_context_path+"/vehicles/"+vehicleName);
}

function hld_redirect(url){
	location.href = url;
}

function hld_goToLatestOffer(offerURL){
	//alert("TODO: Go to offer URL: " + offerURL);
	hld_redirect(offerURL);
}

function hld_viewLinup(){
	location.href="#viewLineUp";
}

function hld_popup(url, trackingid){
	var params  = 'width='+ (screen.width);
 	params += ', height='+ (screen.height);
 	params += ',menubar=0';
 	params += ',toolbar=0';
 	//params += ', top=0, left=0';
 	//params += ', fullscreen=yes';

	window.open(url,"", params);
	
}

function hld_micrositePopup(url, vehicleName) {
	var params  = 'width='+ (screen.width);
 	params += ', height='+ (screen.height);
 	params += ',menubar=0';
 	params += ',toolbar=0';

  // Microsite Event Trackking
  hld_trackEventClick('Microsite'.toUpperCase(), vehicleName.toUpperCase(), 'Vehicle_Range'.toUpperCase());
	window.open(url,"", params);
}

function hld_trackClick(trackingidsuffix){


}

// Google Analytics Event Tracking
function hld_trackEventClick(evCategory, evAction, evLabel){

  try {
         
    // Additional Event Tracking for Colours
    if ( evCategory.toUpperCase() == 'COLOURS_VIEW') {
      pageTracker._trackEvent('COLOURS', hld_tracking_id.toUpperCase(), evAction.toUpperCase() );
    }
    
    if ( evCategory.toUpperCase() == 'HOME') {
      evCategory = 'HOMEPAGE';
    } else if ( evCategory.toUpperCase() == 'VEHICLES') {
      evCategory = 'VEHICLE SHOWROOM';
    } else if ( evCategory.toUpperCase().match('RANGE') != null ) {      
      var subStrIdx = evCategory.toUpperCase().indexOf('RANGE');
      evCategory = evCategory.substr(0, subStrIdx-1);
    }
    
    pageTracker._trackEvent(evCategory.toUpperCase(), evAction.toUpperCase(), evLabel.toUpperCase() );
      
  } catch(err) {
  
  }
  
}

// Sophus Tracking
function hld_sophusTracking() {

}

function hld_turnOnPopupLinks(){
	$(hld_popupLinkIdent).unbind();
	$(hld_popupLinkIdent).click(function(){
	 	window.open(this.href,"Popup"+(new Date()).getTime(),"width=600, height=400");
	});
}

function hld_turnOnAjaxForms(){
	$(hld_ajaxFormIdent).unbind();
	$(hld_ajaxFormIdent).ajaxForm({ target: hld_mainContentIdent, success: function(){
     	hld_invokeDocumentReadyListeners(true);
	}}); 
}

function hld_turnOnAjaxRefresh(ident,id){
	$(ident).unbind();
	$(ident).change(function(){
     	hld_ajaxLoading(true, 0);
		document.forms[id]['ajax'].value='true';
		$("#" + id).ajaxSubmit({ target: hld_mainContentIdent, success: function(){
	     	hld_invokeDocumentReadyListeners(true);
	     	hld_ajaxLoading(false, 0);
		}});
		return false;
	});
}

function hld_turnOnAjaxRefreshTool(){
	hld_turnOnAjaxRefresh(hld_ajaxRefreshToolIdent,"tool");
}

function hld_turnOnAjaxRefreshColorado(){
	hld_turnOnAjaxRefresh(hld_ajaxRefreshColoradoIdent,"colorado");
}

function hideLoaderOnPageLoad()
{
	$("#ajaxLoader").hide();
}

var loaderCallback = function(){}; // is called when the loader is setup
// Loader callback should contain code to perform a load
var callbackFunction = function(){ 
	hld_ajaxLoading(false, 0);  
	hld_invokeDocumentReadyListeners(true);
};
// The callbackFunction is called after load is complete

function hld_ajaxLoading(start, timer){
	if(start){
		hld_ajaxThreads++;
	}
	else {
		hld_ajaxThreads--;
	}
	
	if(hld_ajaxThreads>0)
	{
		window.status="Loading..... please wait";
		setupLoading(loaderCallback, timer);
	}
	else 
	{
		window.status="Finished Loading";
		hideLoadingInModal();
	}
}

function hld_ajaxBeforeSubmit(formData, jqForm, options){
	alert("Submitting with AJAX: " + formDat);	
	return true;	
}

function hld_turnOnAjaxLinks() 
{
	$(hld_ajaxLinkIdent).unbind();
	$(hld_ajaxLinkIdent).click(function() 
	{
		callbackFunction = function()
     	{
         	hld_invokeDocumentReadyListeners(true);
        	hld_ajaxLoading(false, 500);
     	};
     	
     	var currentHref = this.href;
     	hld_loadURL(currentHref, hld_mainContentIdent, callbackFunction);
	 	return false;
	 });
}

function hld_loadURL(href, divToLoad, otherCallback)
{
	if(otherCallback == undefined)
		otherCallback = callbackFunction;
	
	loaderCallback = function()
	{
		var sep = href.indexOf("?")>=0 ? "&" : "?";  
	    $(divToLoad).load(href+sep+"ajax=true", null, otherCallback);
	};
	hld_ajaxLoading(true, 1000);
}

function hld_hideElementById(id) {
	$("#" + id).hide();	
}

function hld_hideElementByIdSlow(id) {
	$("#" + id).hide("slow");
}

function hld_showElementById(id) {
	$("#" + id).show();	
}

function hld_showElementByIdSlow(id) {
	$("#" + id).show("slow");	
}

function hld_clearInputField(id) {
	$("#" + id).val("");
}

function hld_populateInputField(id, value) {
	var val =$("#" + id).val();
	
	if(val == "")
		$("#" + id).val(value);
}

function hld_splitValue(value, token, index) {
	var arr = value.split(token);
 	return arr[index];
}

function hld_openSubWindow(pageURL) {
	var sw = screen.width - 100;
	var sh = screen.height - 100;
	
	var paramz = 'toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,scrollbars=yes,width='+sw+',height='+sh;
	var oSubWin = window.open("", null, paramz );

  	oSubWin.moveTo(50, 50);
  	oSubWin.location.replace( pageURL );
}

function hld_openNormalWindow(pageURL) {
	var sw = screen.width - 100;
	var sh = screen.height - 100;
	
	var paramz = 'toolbar=yes,location=yes,directories=no,status=yes,menubar=yes,resizable=yes,scrollbars=yes,width='+sw+',height='+sh;
	var oSubWin = window.open("", null, paramz );

  	oSubWin.moveTo(50, 50);
  	oSubWin.location.replace( pageURL );
}


function hld_numbersOnly(e) {
	var key;
	var keychar;
	
	if (window.event) {
        key = window.event.keyCode;
    } else if (e) {
       key = e.which;
    } else {
       return true;
    }
	
	if((key >= 45 && key <= 57) || key == 8 || key == 0) {
		return true;
	} 
	
	return false;
}

function hld_postcodeInput(event, value) {

	//check the length
	if (value.length > 3)
		return false;
		
	//check if number
	return hld_numbersOnly(event);
	
}

function hld_submitForm(formId) {
	var form = document.getElementById(formId);
	form.submit();
}

function hld_submitFormWithNumbers(textField, formId) {
	var text = document.getElementById(textField).value;
	
	//go through text to see if numbers
	if (!isNaN(text))
		hld_submitForm(formId);
	else
		return false;

}

function hld_submitSelectedContent(formId, select) {
	var text = select.options[select.selectedIndex].value;

	if (text != "")
		hld_submitForm(formId);
	else
		return false;
}

function hld_JumpToModel(index) {

	if (index != "")
		window.location = index;
	else
		return false;
}

// required for helpmechoose
function setSize(width, height)
{
	<!-- id  -->
	var divtag = document.getElementById('panel');
	divtag.style.height = height + 'px';
	divtag.style.width = width + 'px';		
}

function hld_fireGoogleTracking(key, id) {
try {
	hld_tracking_id = id;

	//var pageTracker = _gat._getTracker(key);
	//pageTracker._setDomainName("none");
	pageTracker._trackPageview(hld_tracking_id);

} catch(err) {
	//alert(err);
}

}

