/*********************************************
	ACS 

	Authors: Joel Nagy | dotglu
	Last Modified: August 19th, 2009 10:59:47 AM EST

	Dependency: jQuery

**********************************************/

// GLOBAL CONSTANTS --------------------------/
var MOZ = $.browser.mozilla;
var MSIE = $.browser.msie;
var OPERA = $.browser.opera;
var BROWSER_VERSION = $.browser.version;
var MAC = false;
var WIN = false;

// GLOBALS
var errors = new Array();

var ImagesPath = "./x/images/optimized/";
var ImagesNames = ["background.jpg", "rightPanelimg.jpg", "imgGallBkgrnd.png", "slide_kitchen.jpg", "slide_library.jpg", "slide_lounge.jpg", "slide_meditate.jpg"];
var Images = new Array();
for (var i = 0, l = ImagesNames.length; i < l; i++) {
	var x = new Image();
	x.src = ImagesPath + ImagesNames[i];
	if (x != null)
		Images[Images.length] = x;
}

//PRODUCTS LANDING PAGE ANIMATION
$(document).ready(function(){	
// check for thank you and hide form
	if (window.location.href.toLowerCase().indexOf('thankyou') > 0) {
		$('#ACS').css('display', 'none');
		$('#ThankYou').css('display', 'block');
		window.location = '#ThankYou';
	}
});	

// FORMS
var ZIP_REGEXP = new RegExp(/^[0-9]{5}$/); // US ZIP
var ZIP4_REGEXP = new RegExp(/^[0-9]{5}[ -_.x+|]?[0-9]{4}$/); // US ZIP+4
var CAPOSTAL_REGEXP = new RegExp(/^[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvwxyz]{1}[0-9]{1}[ -_.x+|]?[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvwxyz]{1}[ -_.x+|]?[0-9]{1}[ -_.x+|]?[ABCEGHJKLMNPRSTVWXYZabceghjklmnprstvwxyz]{1}[0-9]{1}$/);
var EMAIL_REGEXP = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,20})+$/);
var URL_REGEXP = new RegExp(/^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$/);
var STRING_REGEXP = new RegExp(/\w+/);
var DOC_REGEXP = new RegExp(/\w+\.(doc|pdf|txt)$/i);
var IMG_REGEXP = new RegExp(/\w+\.(jpg|png|gif|jpeg)$/i);
var DIGIT_REGEXP = new RegExp(/\d+/);
var PHONE_REGEXP = new RegExp(/^[0-9\(\)-\. ]{7,25}$/);
var errorBox = '#Error'

function validateZip(F) {
	F = isString(F)? document.getElementById(F): F;
	var val = F.postal.value;
	var zip = val.match(ZIP_REGEXP);
	var postal = val.match(CAPOSTAL_REGEXP);

	if ((zip != null && zip == val) || (postal != null && postal == val)) {
		$(errorBox).css('visibility', 'hidden');
		return true;
	} else {
		$(errorBox).css('visibility', 'visible');
		return false;	
	}
}

function validate(F, func) {
//	try {
		F = isString(F)? document.getElementById(F): F;
		var pass = true, errors = new Array();

		switch (F.id) {
			case 'ACS':
				validateField(F.Name.value.match(STRING_REGEXP), F.Name.id, errors);
				validateField(F.email_address.value.match(EMAIL_REGEXP), F.email_address.id, errors);
				
				if (F.postalcode.value != '')
					validateField(F.postalcode.value.match(ZIP_REGEXP) || F.postalcode.value.match(ZIP4_REGEXP) || F.postalcode.value.match(CAPOSTAL_REGEXP), F.postalcode.id, errors);
				if (F.Phone.value != '')
					validateField(F.Phone.value.match(PHONE_REGEXP), F.Phone.id, errors);
			break;
		}
		// if any errors report them, otherwise send
		if (errors.length > 0)
			return indicateErrors(errors);
		else {
			if ($(errorBox)[0])
				$(errorBox).css('visibility', 'hidden');
			if (func != null)
				func(F);
			return true;
		}
//	} catch (e) { return true; }
}

String.prototype.trim = function (x) {
	if (!x) x = '\s';
    return eval('this.replace(/^'+ x +'*/, "").replace(/'+ x +'*$/, "");')
}
String.prototype.ltrim = function (x) {
	if (!x) x = '\s';
    return eval('this.replace(/^'+ x +'*/, "");')
}
String.prototype.rtrim = function (x) {
	if (!x) x = '\s';
    return eval('this.replace(/'+ x +'*$/, "");')
}

function toInt(s) {
	return parseInt(s.toString().ltrim('0'));
}

function isLeapYear(year) {
	return year % 4 == 0? year % 100 == 0? year % 400 == 0? true: false: true: false;
}

function getRadioValue(radio) {
	try { 
		for (var i = 0, l = radio.length; i < l; i++)
			if (radio[i].checked) return radio[i].value;
		return '';
	} catch (e) { }
}

function isString(o) {
   	return typeof(o) == 'string';
}

function isArray(o) {
	if (o.constructor && o.constructor.toString().indexOf("Array") >= 0)
		return true;
	else
		return false;
}

function validateField(fieldmatch, field, errors) {
	// push error field IDs into array or reset the fields class
	try {
		if (fieldmatch == false || fieldmatch == null || fieldmatch == '')
			errors.push(field);
		else {
			if (!isArray(field))
				field = [field];
			for (var i = 0, l = field.length; i < l; i++) {
				f = field[i];
				$(f).removeClass('error');
				$('label[for='+ f +']').removeClass('error');
			}
		}
	} catch (e) { }
}

function indicateErrors(errors) {
	// add class 'error' to the field's label
	for (var i = 0, l = errors.length; i < l; i++) {
		var errID = errors[i];
		var forID = errors[i];
		if (errors[i].indexOf(':') > 0) { // in the event that the for is inaccurately set by the CMS wizards!!
			var ee = errors[i].split(':');
			errID = ee[0];
			forID = ee[1];
		}
		var e = $(errID);
		var f = $(forID);
		if (e != null) {
			e.addClass('error');
			$('label[for='+ forID +']').addClass('error');
			//$(document).getElements('label[for='+ forID +']').getChildren().addClass('error');
		} else if (f != null) {
			$('label[id='+ forID +']').addClass('error');
			//$(document).getElements('label[id='+ forID +']').getChildren().addClass('error');
		}
	}
	$(errors[0]).focus();
	$(errorBox).css('visibility', 'visible');
	return false;
}

// COOKIES
function setCookie(name, value, days) {
	var expires = "";
	if (days) {
		var D = new Date();
		D.setTime(D.getTime()+(days*24*60*60*1000));
		expires = "; expires="+ D.toGMTString();
	} else expires = "";
	document.cookie = name +"="+ value + expires +"; path=/";
}

function getCookie(name) {
	var x = new RegExp("\\b" + name + "=([^;]*)");
	var value = x.exec(document.cookie);
	return (value) ? unescape(value[1]) : "";
}

// LOAD SWF
function loadSWF(url, width, height, background, div, flashvars, func, version, expressInstall) {
// flashvars is an array of name|value pairs of parameters
	$(function(){ // window.ready()
///		try {
			div = div == null? 'swfbox': div;
			version = version == null? '8.0.21': version;
			// SWFObject 1.5.1
			var so = new SWFObject(url, div+'flash', width, height, version, background);
			if (background == null || background == 'transparent')
				so.addParam("wmode", "transparent");
			so.addParam("allowScriptAccess", "always");
			so.useExpressInstall(expressInstall? expressInstall: './swf/expressInstall.swf');
			if (flashvars != null)
				for (var i = 0, l = flashvars.length; i < l; i++) {
					if (flashvars[i].length == 2) {
						so.addVariable(flashvars[i][0], flashvars[i][1]);
					}
				}
			so.write(div);
			
			if (func)
				func();
///			} catch (e) { }
	}); //: window.ready() from loadSWF()
}