(function($){$.fn.extend({accordion:function(){return this.each(function(){if($(this).data('accordiated'))return false;$.each($(this).find('ul, li>div'),function(){$(this).data('accordiated',true);$(this).hide()});$.each($(this).find('a[class=\'content-question\']'),function(){$(this).click(function(e){activate(e.target);return false;})});var d=false;if($(this).find('li.current'))d=$(this).find('li.current a')[0];if(d){activate(d,'toggle','parents');$(d).parents().show()}function activate(a,b,c){$(a)[(c||'parent')]('li').toggleClass('active').siblings().removeClass('active').children('ul, div').slideUp('fast');$(a).siblings('ul, div')[(b||'slideToggle')]((!b)?'fast':null)}})}})})(jQuery);
var tools = { 
	checker		: "http://www.whitesmoke.com/free-online-checker/", 
	dictionary	: "http://www.whitesmoke.com/free-online-dictionary/"
};
var phrases = {
	name	: "Name",
	i_name	: "Name",
	email	: "Email",
	i_email	: "Email",
	question: "Enter your question...",
	query	: "Enter word/text",
	job		: "Job Title",
	phone	: "Phone",
	subject	: "Enter subject",
	message : "Your message..."
};
setDefaultText = function(el, name) {
	if($(el).val() === "" && phrases[name]) {
		$(el).val(phrases[name]);
	}
};
$(function() {
	if($('#slide').length){$('#slide').cycle({fx: 'fade',speed: 500,timeout: 7000});}
	if($('#faq').length){$('#faq').accordion();}
	$("#change-language").hover(
	function() {$("#languages").show('slow');},
	function(){$("#languages").hover(function(){$('#languages').show();},function(){setTimeout("$('#languages').hide('slow');",5*1000);});});
	$("#loading").ajaxStart(function(){$(this).show();});
	$("#loading").ajaxStop(function(){$(this).hide();});
	if ($(":input").length){
		$(":input").each(function(){
			var n = $(this).attr('name');
			setDefaultText(this, n);
			$(this).blur(function(){
				setDefaultText(this, n);
			});
			$(this).focus(function(){
				if ($(this).val() == phrases[n]) {
					$(this).val("");
				}
			});
		});
	}
	if($("select[name='langTo']").length) {
		$("select[name='langTo']").change(function(){
			Submit(this.form, null, setDictionaryData);
		});
	}
});
isLnaguageSupported = function(language) {
	var supported_languages = ['ar','de','du','en','es','fr','hi','it','ja','ko','pt','ru','zh'];
	if(language) {
		return $.inArray(language, supported_languages) !== -1;
	}
	return false;
};

function downloadFile(url, post_url) {
	if ( post_url ) {
		//window.open(url,'Download','scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,width=1,height=1,resizable=no');
		document.location.href=url;
		
		setTimeout(function(){
		document.location.href = post_url;
		}, 4000);	
		
	} else
		window.location.href = url;	
}

sendAction = function(source,params,language){
	if(!isLnaguageSupported(language)) {
		language = 'en';
	}
	
	$.ajax({
		type: "POST",
		url: "http://www.whitesmoke.com/library/php/action.php",
		data: "action=freetrial&id=1&" + params
	});
	
	var stubFileName = "http://get.whitesmoke.com/";
	var postUrl = "http://www.whitesmoke.com/lp/howto-download.php";
	
	switch(source) {
		case "zonemedia":
			stubFileName = "http://get.whitesmoke.com/WhiteSmokeTranslatorNoRegStubNoToolbar5000.exe";
			postUrl = "http://www.whitesmoke.com/lp/howto-download.php?" + params;
			break;
		case "ohtf": 
		case "translator": 
				if ( source == "translator" )
					postUrl = "http://www.whitesmoke.com/lp/howto-download.php?" + params;
				else
					postUrl = "http://www.whitesmoke.com/lp/ohtf/ohtf3.php?" + params;

				stubFileName = "http://get.whitesmoke.com/WhiteSmokeTranslatorNoRegStub_" + language + ".exe";

				if ( (exi = params.indexOf("exeFName")) >= 0 ) {
					startExe = params.substring(exi + 9);
					if ( startExe && startExe[0] != '&' ) {
						if ( ( endExe = startExe.indexOf("&")) >= 0 ) {
							exeFName = startExe.substring(0, endExe);
						} else {
							exeFName = startExe;
						}
						if ( exeFName.indexOf("Translator") >= 0 )
							stubFileName = "http://get.whitesmoke.com/" + exeFName;
					}
				}
			break;
		case 'writer' :
				postUrl = "http://www.whitesmoke.com/install_proc.html?" + params;
				if ( (exi = params.indexOf("exeFName")) >= 0 ) {
					startExe = params.substring(exi + 9);
					if ( startExe && startExe[0] != '&' ) {
						if ( ( endExe = startExe.indexOf("&")) >= 0 ) {
							exeFName = startExe.substring(0, endExe);
						} else {
							exeFName = startExe;
						}
						if ( exeFName.indexOf("WhiteSmokeNoRegStub_D") >= 0 ) {
							stubFileName = "http://get.whitesmoke.com/" + exeFName;
							postUrl = "http://www.whitesmoke.com/install_proc.html?" + params +  "stubFileName=" + escape(stubFileName);
						}
					}
				}
			break;
		default:
			stubFileName = "http://get.whitesmoke.com/";
			postUrl = "http://www.whitesmoke.com/install_proc.html?" + params;
			break;
	}
	if (stubFileName !== "") {
		downloadFile(stubFileName,postUrl);
	}	
	return false;
};


isEmpty = function(el, alert) {
	var text = $(el).val();
	var name = $(el).attr('name');
	var empty = (!text || $.trim(text) === "") || (text && phrases[name] && phrases[name] == text);
	
	if (alert && empty) {
		alertField(el, 1);
	}
	return empty;
};

isValidEmail = function(el, alert) {
	var email = el.value;
	var valid = true;
	
	email = $.trim(email);
	if(!email || email === "") { valid = false; }
	
	var symbols = new Array(";", ":", "'", "\"", " ", "/", "%", "#", "+", "*");
	var at	= "@";
	var dot	= ".";
	var lat	= email.indexOf(at);
	var lstr= email.length;
	var ldot= email.indexOf(dot);

	if( email.length <= 0 )						{ valid = false; }
	for(var i=0; i<symbols.length;i++)	{
		if (email.indexOf(symbols[i])!= -1)		{ valid = false; }
	}
	if (email.indexOf(at) == -1)				{ valid = false; }
	if (email.indexOf(at) == -1 ||
		email.indexOf(at) === 0  || 
		email.indexOf(at) == lstr - 1)		{ valid = false; }
	if (email.indexOf(dot) == -1 ||
		email.indexOf(dot) === 0 || 
		email.indexOf(dot) == lstr - 1)		{ valid = false; }
	if (email.indexOf(at,(lat+1)) != -1)		{ valid = false; }
	if (email.substring(lat-1,lat) == dot ||
		email.substring(lat+1,lat+2) == dot)	{ valid = false; }
	if (email.indexOf(dot,(lat+2)) == -1)		{ valid = false; }
	
	if (!valid && alert) {
		alertField(el, 3);
	}
	return valid;
};

isAlphaNumeric = function(el, alert) {
	var text = el.value;
	var pat = /[^\w\s]/g;
	if (text.match(pat)) {
		if (alert) {
			alertField(el, 2);
		}
		return false;
	}
	return true;
};

isNumeric = function(el, alert) {
	var text = el.value;
	var pat = /[^\d]/g;
	if (text.match(pat)) {
		if (alert) {
			alertField(el, 5);
		}
		return false;
	}
	return true;
};

_sanitize = function(text, pattern, to) {
	return text.replace(pattern, to);
};

sanitize = function(text, context) {
	var pat	= "";
	var to	= "";
	switch(context)
	{
		case "dictionary": {
			text = sanitize(text, 'alphabet');
			pat = /[\s]+/g;
			to = "-";
		} break;
		case "checker": {
			pat = /[\n\r&]/g;
			to = " ";
		} break;
		case 'alphabet': {
			pat = /[^a-zA-Z\s]/g;
		} break;
		default:
			return text;
			break;
	}
	return _sanitize(text, pat, to);
};

alertField = function(field, type) {
	if (field) {
		if (type && type > 0) {
			var msg = "<p class=\"form-field-alert\">";
			switch(type) {
				case 1: msg += "The above field is empty. Please complete."; break;
				case 2: msg += "Please use only letters and numbers for your name."; break;
				case 3: msg += "The email address is not valid. Please re-enter."; break;
				case 4: msg += "Checking the above box is required."; break;
				case 5: msg += "The above field must contain digits only."; break;
			}
			$(field).after(msg + "</p>");
		}
	}
};

clearFieldAlerts = function(form) {
	$(".form-field-alert", form).remove();
};

/**
 * gets the serialized JSON of the form and maps it to an associative array of name=>value
 * @param {HTMLFormObject} form : HTMLFormObject to be serialized
 * @return{Array}		result	: the associative array
 */
mapSerialized = function(form) {
	var elements = $(form).serializeArray();
	var map = new Array();
	$.each(elements, function(i, el){
		map[el.name] = el.value;
	});
	return map;
};

Submit = function(form,target,callback) {
    var valid = true;
	var fields = mapSerialized(form);
	var elements = form.elements;
	var formName = $(form).attr('name');
	clearFieldAlerts(form);

	switch (formName) {
		case 'wsTools': {
			var text = fields['query'];
			if (isEmpty(elements['query'], true)) {
				return false;
			}
			window.location.href = tools[fields['tool']] + encodeURI(sanitize(text,fields['tool']));
			return false;
		}
		break;
		case 'weeklyTipsSignup': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (!form.iAgree.checked) {
				alertField(elements['iAgree'], 4);
				return false;
			}
		}
		break;
		case 'supportTicket': {
			if (isEmpty(elements['issue'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['description'], true)) {
				return false;
			}
		} break;
		case 'supportInstructions': {
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
		} break;
		case 'blogQuestion': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['question'], true)) {
				return false;
			}
		} break;
		case 'poptb_buyRegForm': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			try {
				closeToolbar(365);
			}
			finally {
				return true;
			}
		} break;
		case 'poptb_newsletterSignup': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
		} break;
		case 'ws-assistant': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
		} break;
		case 'toolbarDictionary': {
			if (isEmpty(elements['query'])) {
				return false;
			}
			if (fields['langTo'] != "-1") {
				$.cookie('toolbarDictLangTo', fields['langTo'], {expires: 365, path: '/', domain: '.whitesmoke.com', secure: false});
			}
			if (!callback || !$.isFunction(callback)) {
				window.location.href = 'http://www.whitesmoke.com/free-online-dictionary/' + sanitize(fields['query'], 'dictionary');
				return false;
			}
		} break;
		case 'contact': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['subject'], true)) {
				return false;
			}
			if (isEmpty(elements['message'], true)) {
				return false;
			}
		} break;

		case 'multipleLicenses': {
			if (isEmpty(elements['firstname'], true) || !isAlphaNumeric(elements['firstname'], true)) {
				return false;
			}
			if (isEmpty(elements['lastname'], true) || !isAlphaNumeric(elements['lastname'], true)) {
				return false;
			}
			if (isEmpty(elements['phone'], true) || !isNumeric(elements['phone'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['job'], true)) {
				return false;
			}
			if (isEmpty(elements['company'], true)) {
				return false;
			}
			if (isEmpty(elements['country'], true)) {
				return false;
			}
			if (isEmpty(elements['numlicenses'], true)) {
				return false;
			}
			if (isEmpty(elements['message'], true)) {
				return false;
			}
		} break;
		
		case 'shippingForm': {
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['user_id'], true) || !isNumeric(elements['user_id'], true)) {
				return false;
			}
			if (isEmpty(elements['first_name'], true) || !isAlphaNumeric(elements['first_name'], true)) {
				return false;
			}
			if (isEmpty(elements['last_name'], true) || !isAlphaNumeric(elements['last_name'], true)) {
				return false;
			}
			if (isEmpty(elements['address'], true)) {
				return false;
			}
			if (isEmpty(elements['city'], true) || !isAlphaNumeric(elements['city'], true)) {
				return false;
			}
			if (isEmpty(elements['country'], true)) {
				return false;
			}
			if (($(elements['country']).val() == "US" || $(elements['country']).val() == "CA") && isEmpty(elements['state'], true)) {
				return false;
			}
			if (isEmpty(elements['zip'], true) || !isAlphaNumeric(elements['zip'], true)) {
				return false;
			}
			
		} break;

		case 'partnersContact': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['phone'], true) || !isNumeric(elements['phone'], true)) {
				return false;
			}
			if (isEmpty(elements['job'], true)) {
				return false;
			}
			if (isEmpty(elements['subject'], true)) {
				return false;
			}
			if (isEmpty(elements['message'], true)) {
				return false;
			}
		} break;
		
		case 'offerYourPrice': {
			if (isEmpty(elements['name'], true) || !isAlphaNumeric(elements['name'], true)) {
				return false;
			}
			if (!isValidEmail(elements['email'], true)) {
				return false;
			}
			if (isEmpty(elements['phone'], true) || !isNumeric(elements['phone'], true)) {
				return false;
			}
			/*if (isEmpty(elements['version'], true)) {
				return false;
			}
			if (isEmpty(elements['numlicenses'], true) || !isNumeric(elements['numlicenses'], true)) {
				return false;
			}
			if (isEmpty(elements['price'], true) || !isNumeric(elements['price'], true)) {
				return false;
			}*/
		} break;
	}
    if(valid) {
        $.ajax({
            type	: "POST",
            url		: "http://www.whitesmoke.com/library/php/action.php",
            data	: $(form).serialize(),
            dataType: "xml",
            success	: function(xml) {
                var sData	= $('data', xml).text();
                var sAnswer = $('answer', xml).text();
                var sError	= $('error', xml).text();

                if('' != sError) {
                    alert(sError);
                    return;
                } else {
					if (sAnswer != '') {
						switch(sAnswer) {
							case "inject": {
								if (target != null) {
									$(target).html(sData);
								} else {
									callback(sData);
								}
							}
							break;
							case "callback": {
								if(sData != '' && $.isFunction(callback)) {
									$('data', xml).find('object').each(function(){
										if($(this).attr('name') && $(this).attr('name') !== '') {
											callback($(this).attr('name'), $(this).text());
										} else {
											callback($(this).text());
										}
									});
								}
							}
							break;
						}
					}
				}
            }
        });
    }
    return false;
};

setDictionaryData = function(id, value){
	$('#' + id).html(value);
};

responseRedirect = function(url) {
	window.location.href = url;
};

openDemo = function(type){
	var url,width,height;
	switch(type){
		case "writer":{
			url = "http://www.whitesmoke.com/writer-pop-up-demo";
			width	= 400;
			height	= 300;
		}
		break;

		case "translator":{
			url = "http://www.whitesmoke.com/translator-pop-up-demo";
			width	= 400;
			height	= 300;
		}
		break;

		case "chat":{
			url = "http://www.whitesmoke.com/live-chat-pop-up";
			width	= 400;
			height	= 300;
		}
		break;
	}
	var left   = (screen.width  - width)/2;
	var top    = (screen.height - height)/2;
	var params = 'width=' + width + ', height=' + height;
	params += ', top=' + top + ', left=' + left;
	params += ', directories=0';
	params += ', location=0';
	params += ', menubar=0';
	params += ', resizable=0';
	params += ', scrollbars=0';
	params += ', status=0';
	params += ', toolbar=0';

	newwin = window.open(url,'WhitesmokeDemo', params);
	
	if (window.focus) {
		newwin.focus();
	}
	return false;
};

/**
 * countDown.js script for banner's counter
 */
/*
	An array of id's to checkout when this script is running and getting fed by 
	an ammount of seconds.
*/

g_ccpid = null;

anArray = new Array("countTime","countTime2","countTime3");
anArrayDays = new Array("countDays","countDays2","countDays3");

var aDay = 86400;

var WRInitTime=(new Date()).getTime();

getDaysLeft = function(){
	if (secondsLeft < 0){ return 0; }
	if (parseInt(secondsLeft/aDay) < secondsLeft/aDay){
		return parseInt(secondsLeft/aDay);
	} else {
		return parseInt(secondsLeft/aDay);
	}
};


decrementClock = function(){
	secondsLeft = parseInt(secondsLeft);
	if (secondsLeft < 0){
		populateFields("00:00:00");		
	} else {
		secondsLeft--;
		populateFields(interpretClock());
		//checkIfHourHasPassed(secondsLeft);
	}
	
	if (g_ccpid){
		clearInterval(g_ccpid);		
		g_ccpid = setTimeout("decrementClock();",1000);
	} else {		
		g_ccpid = setTimeout("decrementClock();",1000);
	}
	return;
};

checkIfHourHasPassed = function(sec) {
	switch(sec)	{
		case 82800:
		case 79200:
		case 75600:
		case 72000:
		case 68400:
		case 64800:
		case 61200:
		case 57600:
		case 54000:
		case 50400:
		case 46800:
		case 43200:
		case 39600:
		case 36000:
		case 32400:
		case 28800:
		case 25200:
		case 21600:
		case 18000:
		case 14400:
		case 10800:
		case 7200:
		case 3600:
  			//decrementLicenses(sec);				
		break;
		
		case 0:
		break;
		
		default:
	}
}

interpretClock = function(){
	var hours = parseInt(secondsLeft / 3600);
	var minutes =  parseInt((secondsLeft - hours*60*60) / 60);
	if (minutes > 59){
		hours++;
		minutes = minutes - 60;
	}
	var seconds = secondsLeft - (hours*3600) - (minutes*60);
	
	if (seconds > 59){
		minutes++;
		seconds = seconds - 60;
	}
	
	if (hours >= 0 && hours <= 9){
		hours = "0" + hours;
	}
	
	if (minutes >= 0 && minutes <= 9){
		minutes = "0" + minutes;
	}
	
	if (seconds >= 0 && seconds <= 9){
		seconds = "0" + seconds;
	}
	
	return hours + ":" + minutes + ":" + seconds;
};

populateFields = function(clockStr){
	for (var i=0;i<anArray.length;i++){
		if (document.getElementById(anArray[i])){
			document.getElementById(anArray[i]).innerHTML = clockStr;
		}
	}
	for (var i=0;i<anArrayDays.length;i++){
		if (document.getElementById(anArrayDays[i])){
			document.getElementById(anArrayDays[i]).innerHTML = getDaysLeft();
		}
	}
	return;
};

