function getFreeTrial(languageid, versionid, productid) {
	var username = document.getElementById("f_user_name").value;
	var password = document.getElementById("f_password1").value;

	if (username.length > 0 && password.length > 0) {
		window.location = '/?node_id=3.3.1.6&languageid=' + languageid + '&versionid=' + versionid + 'stage1=true&productid=' + productid + '&quickreg=1&skipContent=1&tried=1&user_name=' + username + '&password1=' + password;
	} else if (username.length > 0) {
		alert('Please enter your password before continuing.');
		document.getElementById("f_password1").focus();
	} else if (password.length > 0) {
		alert('Please enter your email before continuing.');
		document.getElementById("f_user_name").focus();
	} else {
		alert('Please enter your email and password before continuing.');
		document.getElementById("f_user_name").focus();
	}
}


function submitLanguageForm(value, pId) {
	window.location = '/?node_id=3.5.1.2.1&versionId=' + value + '&id=' + pId;
}


function gotoDownloadForm() {
	document.getElementById('f_user_name').focus();
}


function showDownloadButton() {
	document.getElementById('get-free-button').style.display = 'block';
}




function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function insertAfter(newElement,targetElement) {
  var parent = targetElement.parentNode;
  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement,targetElement.nextSibling);
  }
}

function addClass(element,value) {
  if (!element.className) {
    element.className = value;
  } else {
    newClassName = element.className;
    newClassName+= " ";
    newClassName+= value;
    element.className = newClassName;
  }
}

/*
open external link targets in new (_blank) window
params: pass a specific array of anchor elements (e.g. all within a certain container),
else function defaults to all anchors with rel='external'
*/
function externalLinks(targetAnchors) {
    if (!document.getElementsByTagName) return;
    if(! targetAnchors) {
        var anchors = document.getElementsByTagName("a");
        for (var i=0; i<anchors.length; i++) {
            var anchor = anchors[i];
            if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "external" || anchor.parentNode.className=='external')) anchor.target = "_blank";
        }
    } else {
        var anchors = targetAnchors;
        for (var i=0; i<anchors.length; i++) {
            var anchor = anchors[i];
            anchor.target = "_blank";
        }
    }
}

Event.observe(window,'load',function(){
	$$('a[rel="popup"]').each(function(s){
		Event.observe(s,'click',function(e){
			Event.stop(e);
			window.open(s.href,'newwin','top=0,left=0,width=729,height=480');
		});
	});
});

function doDemo() {
  if (!document.getElementsByTagName) return false;
  var links=document.getElementsByTagName("a");
  for (var i=0; i < links.length; i++) {
    if (links[i].getAttribute('rel') == "demo") {
      links[i].onclick=function() {
            window.open(this.href, "newwin","top=0,left=0,width=810,height=610");
            return false;
            }
    }
  }
}

function homeFlashLink(url) {
    window.open(url, "newwin","top=0,left=0,width=810,height=610");
}


function stripeHeadlines() {
    if (!document.getElementsByTagName) return;
    var divs = document.getElementsByTagName("div");
    for(var i=0;i<divs.length;i++) {
        div = divs[i];
        if (div.className.indexOf('headlines') != -1) {
            var odd=false;
            var rows=div.getElementsByTagName("li");
            for(var j=0;j<rows.length;j++) {
                if(odd==true) {
                    addClass(rows[j],"odd");
                    odd=false;
                } else {
                    odd=true;
                }
            }
        }
    }
}

function stripeTable(tablename,multiple) {
    if (!document.getElementsByTagName) return;
    if (!document.getElementById) return;
    // check if we are addressing multiple tables using a common class, or a single element
    multiple = multiple || false;
    if(! multiple) {
        if (!document.getElementById(tablename)) return;
        var table = document.getElementById(tablename);
        var even=false;
        var rows=table.getElementsByTagName("tr");
        for(var j=0;j<rows.length;j++) {
            if(even==true) {
                addClass(rows[j],"even");
                even=false;
            } else {
                even=true;
            }
        }
    } else {
        if (!document.getElementsByTagName("table")) return;
        var tables = document.getElementsByTagName("table");
        for(var i=0;i<tables.length;i++) {
            table = tables[i];
            if (table.className.indexOf(tablename) != -1) {
                var even=false;
                var rows=table.getElementsByTagName("tr");
                for(var j=0;j<rows.length;j++) {
                    if(even==true) {
                        addClass(rows[j],"even");
                        even=false;
                    } else {
                        even=true;
                    }
                }
            }
        }
    }
}

function toggleSearchValue() {
    if (! document.getElementById) return;
    if (! document.getElementById('term')) return;
    var terminput = document.getElementById('term');
    var originalValue = terminput.value;
    terminput.onclick= function() {
	                        this.value='';
                       }
    terminput.onblur = function() {
	                        if(this.value=='') {
                                this.value=originalValue;
                            }
                       }
}

function checkQueryString() {
    if (! document.getElementById) return;
    if (! document.getElementById('search')) return;
    var form = document.getElementById('search');
    form.onsubmit = function() {
                            if ( document.forms["search"].sq.value == "Search..." || document.forms["search"].sq.value == "" ) {
    	                        alert("Please enter your search term first.");
    	                        document.forms["search"].sq.value = "";
                          	    document.forms["search"].sq.focus();
                          	    return false;
	                        } else {
                                return true;
                        	}
                        }
}

/* set up history.back links */
function historyBack() {
    if (! document.getElementsByTagName) return;
    var links = document.getElementsByTagName("a");
    for (var c=0; c<links.length; c++) {
        var anchorlink = links[c];
        if (anchorlink.getAttribute("rel") == "previous") {
            anchorlink.onclick = function() {
                                this.href='javascript:history.back()';
                                //return false;
                             }
        }
    }
}

function submitCurrency() {
    if (!document.getElementById) return;
    if (!document.getElementById("currencyform")) return;
    var currform = document.getElementById("currencyform");
    var currselect = document.getElementById("currency");
    currselect.onchange = function() {
        this.form.submit();
    }
    return true;
}

emailConfirm={

	xhr:false,
	url:"/productEmailConfirmation.php",
    finishUrl:false,

	createXHR:function() {
		if(window.XMLHttpRequest) {
			this.xhr = new XMLHttpRequest();
		} else if(window.ActiveXObject){
			try {
				this.xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					this.xhr = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {}
			}
		}
	},

    send:function(params, el) {
        this.createXHR();
        this.xhr.onreadystatechange = this.requestComplete;
		this.xhr.open('GET', this.url+params, true);
		this.xhr.send(null);
        this.finishUrl = el.getAttribute("href");
	},

    requestComplete:function() {
        if(emailConfirm.xhr.readyState == 4) {
            //alert("Thank you, an email confirmation has been sent");
            window.location=emailConfirm.finishUrl;
        }
    }
}

/* print */
function printPage() {
    if (!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "print") {
        anchor.onclick = function() {
                                    window.print();
                                    return false;
                                    }
        }
    }
}

/* Check that an email address is valid based on RFC 821 (?) */
function isValidEmail(address) {
    if(!address) return false;
    if (address != '' && address.search) {
        if (address.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
            return true;
        } else return false;
    } else return true;
}

function isValidPhone(NumStr, String) {
    for(var Idx=0; Idx<NumStr.length; Idx++) {
        var Char = NumStr.charAt(Idx);
        var Match = false;

        for(var Idx1=0; Idx1<String.length; Idx1++)
        {
            if(Char == String.charAt (Idx1))
                Match = true;
        }

        if (!Match)
            return false;
    }
    return true;

}

function isValidName(NameStr, String) {
    for(var Idx=0; Idx<NameStr.length; Idx++) {
        var Char = NameStr.charAt(Idx);
        var Match = false;

        for(var Idx1=0; Idx1<String.length; Idx1++)
        {
            if(Char == String.charAt (Idx1))
                Match = true;
        }

        if (Match)
            return false;
    }
    return true;

}

/*
   validation:::
   check required fields have been filled
   check email fields have a valid email address
   check username and password fields are at least 6 chars long
*/
function validateforms() {
    if(! document.getElementsByTagName) return false;
    var forms = document.getElementsByTagName("form");
    for (var i=0;i<forms.length;i++) {
        if(forms[i].name.match("ALregistrationform")) {
            f = forms[i];
            f.onsubmit = function() {
                for (var j=0;j<f.length;j++) {
                    el = f.elements[j];
                    if (el.type=='text' || el.type=='password') {
                        if (el.name.match('email')) {
                            if (! isValidEmail(el.value)) {
                                alert("Please supply a valid email address in the format you@yourdomain.com");
                                el.focus();
                                addClass(el,'required');
                                return false;
                            }
                        } else if ( el.name.match('firstname') || el.name.match('surname') ) {
                            if (! isValidName(el.value,"1234567890 ")) {
                                alert("Please supply a valid " + el.name + " (containing no numbers).");
                                el.focus();
                                addClass(el,'required');
                                return false;
                            }
                        } else if (el.name.match('phone') || el.name.match('fax') || el.name.match('mobile') || el.name.match('day') || el.name.match('month') || el.name.match('year')) {
                            if (! isValidPhone(el.value,"1234567890+- ")) {
                                if(el.name.indexOf('number') != -1) {
                                    elname = el.name;
                                } else {
                                    elname = el.name + " number";
                                }
                                alert("Please supply a valid " + elname + ".");
                                el.focus();
                                addClass(el,'required');
                                return false;
                            }
                        }
                    }
                }
            }
        }
    }
}

function stripeCart() { stripeTable("cart-contents"); }
function stripeMyAdapTex() { stripeTable("userinfo",1); }

addLoadEvent(historyBack);
addLoadEvent(printPage);
addLoadEvent(stripeHeadlines);
addLoadEvent(externalLinks);
addLoadEvent(doDemo);
addLoadEvent(toggleSearchValue);
addLoadEvent(checkQueryString);
addLoadEvent(stripeCart);
addLoadEvent(stripeMyAdapTex);
addLoadEvent(submitCurrency);
addLoadEvent(validateforms);

Event.observe(window,'load',function(){
	if ($('ie-footer') && $('twitterWidget')) {
		$('free-content').setStyle({position:'relative'});
		$('twitterWidget').setStyle({
			position:'absolute',
			top:'214px',
			left:'520px'
		});
		var pageHeight = $(document.body).getStyle('height');
		var hPx = parseInt(pageHeight);
		hPx = hPx + 214;
		$('container-3').setStyle({
			position:'relative'
		});
		$('ie-footer').setStyle({
			position:'absolute',
			top: hPx + 'px',
			left:'0'
		});
	}
});

// display more languages on the product index page
document.observe('dom:loaded',function(){
	if ($('manListDetailed')) {
		$$('a.moreLanguages').each(function(s){
			s.observe('click',function(e){
				Event.stop(e);
				// the other rows here are hidden. get them into an array and remove the 'hide' class from them
				var firstRow = s.ancestors()[0];
				var rowsToShow = firstRow.siblings();
				rowsToShow.each(function(p){
					if (p.nodeName == 'DIV') {
						var toggle = p.id + '-down';
						if ($(toggle).value == 0) {
							Effect.BlindDown(p.id);
							$(toggle).value = 1;
						} else {
							Effect.BlindUp(p.id);
							$(toggle).value = 0;
						}
					}
				});
			});
		});
	}
});
