// Add indexOf function to browsers such as IE that does not support it
if (!Array.indexOf) {
  Array.prototype.indexOf = function (obj, start) {
    for (var i = (start || 0); i < this.length; i++) {
      if (this[i] == obj) {
        return i;
      }
    }
  }
}

function doNothing(){
}
function selectXPath(expr, node) {
	if (document.evaluate) {
		return {
			list : node.evaluate(expr,node,null,XPathResult.ANY_TYPE,null),
			next : function() { 
				return this.list.iterateNext();
			},
			sVal : function() {
				return this.list.iterateNext().textContent;
			}
		}
	} else {
		return {
			list: node.selectNodes(expr),
			i : 0,
			next: function() {
				if (this.i > this.list.length)
  				return null;
				return this.list[this.i++];
			},
			sVal : function() {
				if (this.i > this.list.length)
  				return null;
				return this.list[this.i++].text;
			}
		}
	}
}

function el(id) {
  return document.getElementById(id);
}

function findObj(theObj, theDoc)
{
  var p, i, foundObj;
  
  if(!theDoc) theDoc = document;
  if( (p = theObj.indexOf("?")) > 0 && parent.frames.length){
    theDoc = parent.frames[theObj.substring(p+1)].document;
    theObj = theObj.substring(0,p);
  }
  if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
  for (i=0; !foundObj && i < theDoc.forms.length; i++) {
    foundObj = theDoc.forms[i][theObj];
  }
  for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) {
    foundObj = findObj(theObj,theDoc.layers[i].document);
  }
  if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
  
  return foundObj;
}

function showHideLayers()
{ 
  var i, visStr, obj, args = showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3)
  {
    if ((obj = findObj(args[i])) != null)
    {
      visStr = args[i+2];
      if (obj.style)
      {
        obj = obj.style;
        if(visStr == 'show') visStr = 'visible';
        else if(visStr == 'hide') visStr = 'hidden';
      }
      obj.visibility = visStr;
    }
  }
}

function preloadImages()
{
  if(document.images)
  {
    if(!document.imageArray) document.imageArray = new Array();
    var i,j = document.imageArray.length, args = preloadImages.arguments;
    
    for(i=0; i<args.length; i++)
    {
      if (args[i].indexOf("#")!=0)
      {
        document.imageArray[j] = new Image;
        document.imageArray[j++].src = args[i];
      }
    }
  }
}



function refreshAdverts(){
	RightBarObj = document.getElementById("RightBar");
	RightBarContents = RightBarObj.innerHTML;
	RightBar.innerHTML = RightBarContents;

	LeftBarObj = document.getElementById("LeftBar");
	LeftBarContents = LeftBarObj.innerHTML;
	LeftBar.innerHTML = LeftBarContents;

	BottomBarObj = document.getElementById("BottomBar");
	BottomBarContents = BottomBarObj.innerHTML;
	BottomBar.innerHTML = BottomBarContents;
}

username = "";
session_id = "";
session_name = "";
session_jobtitle = "";
session_place = "";

var httpObject;



function login(){
	var company = $('#company').val();
	var user = $('#username').val();
	var pwd = $('#password').val();
	checkLogin({action:"LOGIN",company:company,username:user,password:pwd});
}


function guestlogin(){
	checkLogin({action:"GUESTLOGIN"});
}

function logout(){
	var _urlParams = {action:"LOGOUT"};
	var _data = addSessionData(_urlParams);	
	checkLogin(_data);
}

var SearchActive = 0;
function BasicSearch(){
	if (SearchActive == 0){
		SearchActive = 1;
		SearchButton = document.getElementById('SearchButton');
		SearchButton.src = "SearchRunning.gif";
		SearchText = document.getElementById('SearchText').value;
		urlParams = "?action=BASICSEARCH&searchtext="+escape(SearchText);
		callSite(urlParams,checkMessage);
		urlParams = "?action=GETPAGELET&page_id=SEARCHRESULTS";
		callSite(urlParams,updateMainPage);
	}
	return false;
}

function stopSubmit(){
	return false;
}

var callSiteList = new Array();
var timeoutv1 = null;
var timeoutv2 = null;

function callSite(_urlParams, _callbackfunc){
	callSiteList.push([_urlParams, _callbackfunc]);
	callNext();
}

function doAjax(_urlParams, _callback){
	var _sessionP = "";
	var _usernameP = "";
	if (session_id != ""){
		_sessionP = "&sessionid="+session_id
	}
	if (username != ""){
		_usernameP = "&username="+username
	}
	var _upid = "&upid=" + new Date().getTime();
	var _url = "DGRAIR.php"+_urlParams+_usernameP+_sessionP+_upid;
		
    $.ajax({
        type: "GET",
        url: _url,
        dataType: "xml",
        success: function(xml) {
        }
    });
}

var locked = 0;

function callNext(){
	if((httpObject == null || httpObject.readyState >= 4 || httpObject.readyState == 0) && callSiteList.length > 0 && locked==0){
		locked=1;
		timeoutv1=setTimeout("timeoutCallSite()",0);
	} else if (callSiteList.length > 0){
		timeoutv1=setTimeout("callNext()",1);
	}
}

function timeoutCallSite(){
	callElements = callSiteList.shift();
	if (callElements != null){
	  _urlParams = callElements[0];
	  _callbackfunc = callElements[1];
	  callWebSite(_urlParams,_callbackfunc);
	}
	locked = 0;
	if (callSiteList.length > 0){
		timeoutv1=setTimeout("callNext()",0);
	}
}

function callWebSite(_urlParams, _callbackfunc){	
	httpObject = getHTTPObject();    
	if (httpObject != null) {
		_sessionP = "";
		_usernameP = "";
		if (session_id != ""){
			_sessionP = "&sessionid="+session_id
		}
		if (username != ""){
			_usernameP = "&username="+username
		}
		var _upid = "&upid=" + new Date().getTime();
		httpObject.open("GET", "DGRAIR.php"+_urlParams+_usernameP+_sessionP+_upid, true);        
		httpObject.onreadystatechange = _callbackfunc;    
		httpObject.send(null);         
	} 
}


function callWebSiteXML(_urlParams, _callbackfunc, _xmlObj){	
	httpObject = getHTTPObject();    
	if (httpObject != null) {
		_sessionP = "";
		_usernameP = "";
		if (session_id != ""){
			_sessionP = "&sessionid="+session_id
		}
		if (username != ""){
			_usernameP = "&username="+username
		}
		
		var _xml = _xmlObj.xml ? _xmlObj.xml : (new XMLSerializer()).serializeToString(_xmlObj);
		_xml = escape(_xml);

		var _upid = "&upid=" + new Date().getTime();
		var parameters = "XML=" + encodeURI( _xml );
					
		httpObject.onreadystatechange = _callbackfunc;    
  		httpObject.open("POST", "DGRAIR.php"+_urlParams+_usernameP+_sessionP+_upid, true);        
   		httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//    	httpObject.setRequestHeader("Content-length", parameters.length);
//     	httpObject.setRequestHeader("Connection", "close");
		httpObject.send(parameters);
	} 
}

function callWebSiteSync(_urlParams){	
	var syncHttpObject = getHTTPObject();    
	if (syncHttpObject != null) {
		_sessionP = "";
		_usernameP = "";
		if (session_id != ""){
			_sessionP = "&sessionid="+session_id
		}
		if (username != ""){
			_usernameP = "&username="+username
		}
		var _upid = "&upid=" + new Date().getTime();
		syncHttpObject.open("GET", "DGRAIR.php"+_urlParams+_usernameP+_sessionP+_upid, false);            
		syncHttpObject.send(null);         
		return syncHttpObject.responseXML;
	} 
}

function callWebSitePost(_urlParams, _callbackfunc, _formname){	
	httpObject = getHTTPObject();    
	if (httpObject != null) {
		_sessionP = "";
		_usernameP = "";
		if (session_id != ""){
			_sessionP = "&sessionid="+session_id
		}
		if (username != ""){
			_usernameP = "&username="+username
		}
		
		var _formData = packForm(_formname,"");
		var parameters = "upid=" + new Date().getTime() + _formData;
		httpObject.onreadystatechange = _callbackfunc;    
  		httpObject.open("POST", "DGRAIR.php"+_urlParams+_usernameP+_sessionP, true);        
   		httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//    	httpObject.setRequestHeader("Content-length", parameters.length);
//     	httpObject.setRequestHeader("Connection", "close");
		httpObject.send(parameters);
	} 
}

function formatURL(_urlParams){
	var _sessionP = "";
	var _usernameP = "";
	if (session_id != ""){
		_sessionP = "&sessionid="+session_id
	}
	if (username != ""){
		_usernameP = "&username="+username
	}
	return "DGRAIR.php"+_urlParams+_usernameP+_sessionP;        
}


function checkLogin(_urlParams){		
    $.ajax({
        type: "GET",
        url: "DGRAIR.php",
        data: _urlParams,
        dataType: "xml",
        success: function(xml) {        
			$(xml).find("message").each(function(){
			  var message = $(this);
				if (message != null){
					var action = message.attr("action"); 
					var status = message.attr("status");
					session_name = $(message).find("USER").attr("name");
					session_jobtitle = $(message).find("USER").attr("title");
					session_place = $(message).find("USER").attr("place");
 
					if (status != 'SUCCESS'){
					  if (action != "GUESTLOGIN" && action != "LOGOUT"){alertBox("The username/password entered is invalid, please check your details are correct before retrying.");}
					  username = "";
					  session_id = "";
					  MenuType="";
					  unpackMenu(message);

					  $("#NAV_BUTTON_1").unbind("click");
					  $("#NAV_BUTTON_2").unbind("click");
					  $("#NAV_BUTTON_1").addClass("buttontext").text("Register");
					  $("#NAV_BUTTON_1").click(function(){updateMainPage({action:"GETPAGELET",page_id:"REGISTER"});});
					  $("#NAV_BUTTON_2").addClass("buttontext").text("Login");
					  $("#NAV_BUTTON_2").click(function(){updateMainPage({action:"GETPAGELET",page_id:"LOGINSCREEN"});});
					  if (action != "LOGIN"){
		  			    updateMainPage({action:"GETPAGELET",page_id:"WELCOME"});
					  }
					} else {
					  MenuType="LOGGEDIN";
					  unpackMenu(message);
					  $("#username").val("");
				      $("#password").val("");
					  username = message.attr("username"); 
					  session_id = message.attr("sessionid"); 
					  var homepage = message.attr("homepage");
					  if (typeof homepage == "undefined" || homepage == "" || homepage == "undefined"){homepage = "DECLARATIONLIST"} 
					  updateMainPage({action:"GETPAGELET",page_id:homepage});
					  $("#NAV_BUTTON_1").unbind("click");
					  $("#NAV_BUTTON_2").unbind("click");
					  $("#NAV_BUTTON_1").addClass("buttontext").text("Home");
					  $("#NAV_BUTTON_1").click(function(){updateMainPage({action:"GETPAGELET",page_id:homepage});});
					  $("#NAV_BUTTON_2").addClass("buttontext").text("Logout");
					  $("#NAV_BUTTON_2").click(function(){logout();});
					}   
				} else {
			         alertBox("An unexpected error has occurred");      		
				}
			});
        }
    });
} 

MenuType = "";
MainMenuSelection = 0;
SubMenuSelection = 0;

function unpackMenu(_message){
	mainMenuHTML = "";
	menuXML = _message.find("Menu")[0];
	mainMenuXML = menuXML.getElementsByTagName('Main_Option');
	for (mmNo=0; mmNo < mainMenuXML.length; mmNo++){
	  mainMenuID = mainMenuXML[mmNo].getAttribute("id"); 
	  mainMenuCode = mainMenuXML[mmNo].getAttribute("code"); 
	  mainMenuDesc = mainMenuXML[mmNo].firstChild.nodeValue;
	  mainMenuURL = mainMenuXML[mmNo].getElementsByTagName('url')[0].firstChild.nodeValue;
	  mainMenuURL = replaceString(mainMenuURL,'\\\[ID\\\]',mmNo);
	  mainMenuURL = replaceString(mainMenuURL,'\\\[MENU_ID\\\]',mainMenuID);
	  mainMenuURL = replaceString(mainMenuURL,'\\\[MENU_CODE\\\]',mainMenuCode);
	  mainMenuURL = replaceString(mainMenuURL,'\\\[MENU_DESC\\\]',mainMenuDesc);
	  if (mainMenuHTML == ""){mainMenuHTML = mainMenuHTML+"<table width=\"132\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";}
	  mainMenuHTML = mainMenuHTML+"<tr><td height=\"30\" valign=\"top\" class=\"style2\"><div align=\"center\" class=\"navbutton\"><a href=\"#\" onClick=\""+mainMenuURL+"\" class=\"buttontext\" id=\"MainMenuOption_"+mmNo+"\">"+mainMenuDesc+"</a></div></td><td width=\"12\" height=\"35\" rowspan=\"2\" valign=\"top\" class=\"navbuttonimg\"><div align=\"right\"><img src=\"images/DGRAIR_navbutton.gif\" width=\"8\" height=\"35\"></div></td></tr><tr><td height=6></td></tr>";
	}
	if (mainMenuHTML != ""){
		mainMenuHTML = mainMenuHTML + "</table>";
	}
	$("#MenuOptions").html(mainMenuHTML);
}

function selectMainMenuOption(_object,_option,_code){
	oldMenuObj = document.getElementById('MainMenuOption_'+MainMenuSelection);
	menuObj = document.getElementById('MainMenuOption_'+_option);
	if (oldMenuObj != null){
		oldMenuObj.className = "TopMenuBar";
	}
	MainMenuSelection = _option;
	menuObj.className = "TopMenuBarSelected";
	
	SubMenuObj = document.getElementById('SubMenuOptions');
	SubMenuObj.innerHTML = subMenuHTML[_option];	
}

function selectSubMenuOption(_object,_option,_code){
	oldMenuObj = document.getElementById('SubMenuOption_'+SubMenuSelection);
	if (oldMenuObj != null){
		oldMenuObj.className = "BottomMenuBar";
	}
	SubMenuSelection = _option;
	_object.className = "BottomMenuBarSelected";
}


function replaceString(_sourceText,_findText,_replaceText){
	var expr = new RegExp(_findText, "g");
	var Text = _sourceText.replace(expr,_replaceText);
	return Text;
}



function checkMessage(){
    if(httpObject.readyState == 4){
		var message;
		if (httpObject.responseXML.documentElement != null){
	        message = httpObject.responseXML.documentElement;
		} else {
	        message = httpObject.responseXML.xml.getElementsByTagName('message')[0];
		}
		if (message != null){
			var action = message.getAttribute("action"); 
			var status = message.getAttribute("status"); 
			if (status != 'SUCCESS'){
			  alertBox("checkMessage: An unexpected error occurred");
			}   
		}
		callNext();
	} 
} 

function addSessionData(_urlParams){
	var _data = _urlParams;
	
	if (session_id != ""){
		_data = $.extend(_data,{sessionid:session_id});
	}
	if (username != ""){
		_data = $.extend(_data,{username:username});
	}
	var _upid = new Date().getTime();
	_data = $.extend(_data,{upid:_upid});
	
	return _data;
}

function addFormData(_urlParams,formName){
	var _data = _urlParams;
	$("#"+formName+" input:hidden,input:password,input:text,input:checkbox:checked,select").each(function(){
		var fieldName = $(this).attr("id");
		var fieldValue = $(this).val();
		$(_data).attr(fieldName,fieldValue);
	});
	return _data;
}


function updateMainPage(_urlParams){
	$.validationEngine.closePrompt(".formError",true);
	$(".ui-autocomplete-input").autocomplete("destroy");
	var _data = addSessionData(_urlParams);	
    $.ajax({
        type: "GET",
        url: "DGRAIR.php",
        data: _data,
        dataType: "xml",
        success: function(xml) {        
			$(xml).find("message").each(function(){
				var message = $(this);
				var page_id="";		
				if (message != null){
					var action = message.attr("action"); 
					var status = message.attr("status"); 
					if (status == "SESSION INVALID"){
						guestlogin();
					} else if (status != 'SUCCESS'){
						alertBox("updateMainPage: An unexpected error occurred");
					} else {	
						page_id = message.attr("page_id"); 
						page_body = message.contents()[0].nodeValue;
						$("#MainPage").html(page_body);
						page_script = message.find("script")[0];
						if (page_script != null && page_script.firstChild != null && page_script.firstChild.nodeValue != null){
							eval(page_script.firstChild.nodeValue);
						}
					}  
				}
				if (page_id != "SHIPPERSDECLARATION" && page_id != "DGR_CHECKLIST" && page_id != "VEHICLEMANIFEST" && page_id != "PRODUCT_DETAIL" && page_id != "ORDER" && page_id != "NOTOC"){
				  $("#MenuOptions").show(); // must show the object otherwose clientwidth and clientheight will return 0
				} else {
				  $("#MenuOptions").hide(); // must show the object otherwose clientwidth and clientheight will return 0
				}
			});
		}
	}); 
}

function loadHelpVideo(_pagePrefix,_videoName){
	var VideoContent  = '<video width="576" height="480" autoplay controls >';
		  VideoContent += '  <source src="movies/'+_videoName+'.mp4" type="video/mp4" />';
		  VideoContent += '  <source src="movies/'+_videoName+'.webm" type="video/webm" />';
		  VideoContent += '  <source src="movies/'+_videoName+'.ogg" type="video/ogg" />';
		  VideoContent += '  <object width="640" height="360" type="application/x-shockwave-flash" data="media_player.swf">';
		  VideoContent += '    <param name="movie" value="media_player.swf" />';
		  VideoContent += '    <param name="flashvars" value="image='+_videoName+'.jpg&amp;file=movies/'+_videoName+'.mp4" />';
		  VideoContent += '    <img src="'+_videoName+'.jpg" width="576" height="480" alt="'+_videoName+'"';
		  VideoContent += '     title="No video playback capabilities, please download the video below" />';
		  VideoContent += '  </object>';
			VideoContent += '</video>';
	
	$("#"+_pagePrefix+"_VideoPanel").html(VideoContent);
	$("#"+_pagePrefix+"_HelpPanel").hide();
	$("#"+_pagePrefix+"_VideoPanel").show();
}

function loadMainPagelet(_page_id,_params){
	urlParams = "?action=GETPAGELET&page_id="+_page_id;
	if (_params != "") {urlParams += _params;}
	callSite(urlParams,updateMainPage);
//	refreshAdverts();
}					  

function loadMainPageletToDiv(_page_id,_params,_divId){
	urlParams = "?action=GETPAGELET&page_id="+_page_id;
	if (_params != "") {urlParams += _params;}
		var _callBack = new Function("updateDiv('"+_divId+"');");
	callSite(urlParams,_callBack);
}					  

function loadMainPage(_action,_params){
	urlParams = "?action="+_action;
	if (_params != "") {urlParams += _params;}
	callSite(urlParams,updateMainPage);
}					  

function closePopup(){
	$("#POPUP").hide();
	$("#MASK").hide();
}

function loadPopup(_page_id,_urlParams){
/*
urlParams = "?action=GETPAGELET&page_id="+_page_id;
	if (_params != "") {urlParams += _params;}
	callSite(urlParams,updatePopup);
*/
	var _action = {action:"GETPAGELET",page_id:_page_id};
	var _data = addSessionData(_urlParams);	
	$.extend(_data,_action);
    $.ajax({
        type: "GET",
        url: "DGRAIR.php",
        data: _data,
        dataType: "xml",
        success: function(xml) {        
			$(xml).find("message").each(function(){
				var message = $(this);
				var page_id="";		
				if (message != null){
					var action = message.attr("action"); 
					var status = message.attr("status"); 
					if (status != 'SUCCESS'){
						alertBox("loadPopup: An unexpected error occurred");
					} else {	
		        var maskHeight = $(document).height();  
		        var maskWidth = $(window).width();  
		      
		        //Set height and width to mask to fill up the whole screen  
		        $('#MASK').css({'width':maskWidth,'height':maskHeight});  
		          
		        //transition effect       
		        $('#MASK').fadeIn(1000);      
						
						page_id = message.attr("page_id"); 
						popup_body = message.contents()[0].nodeValue;
						var width        = window.innerWidth  ? window.innerWidth  : document.documentElement.clientWidth;
						var height       = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
						$("#POPUP").html(popup_body);
						popup_script = message.find("script")[0];
						PopupPageObj = $('#POPUP')[0];
						$('#POPUP').show(); // must show the object otherwose clientwidth and clientheight will return 0
						PopupPageObj.style.left = (document.documentElement.scrollLeft+(width -PopupPageObj.clientWidth )/2)+'px';
						PopupPageObj.style.top  = (document.documentElement.scrollTop +(height-PopupPageObj.clientHeight)/2)+'px';
						if (popup_script != null && popup_script.firstChild != null && popup_script.firstChild.nodeValue != null){
							eval(popup_script.firstChild.nodeValue);
						}
						// POPUP = DragHandler.attach('POPUP',80,6,null,17);
					}  
				}
			});
		}
	}); 
}					  

var popupmessage;
function getpopupmessage(){
	return popupmessage;
}

var POPUP;

function updatePopup(){
    if(httpObject.readyState == 4){
		var page_id="";
		var message;
		var width        = window.innerWidth  ? window.innerWidth  : document.documentElement.clientWidth;
		var height       = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
		if (httpObject.responseXML.documentElement != null){
			messageDoc = httpObject.responseXML;
	        message = httpObject.responseXML.documentElement;
		} else {
			messageDoc = httpObject.responseXML.xml;
			message = httpObject.responseXML.xml.getElementsByTagName('message')[0];
		}
		popupmessage = message;
		if (message != null){
			var action = message.getAttribute("action"); 
			var status = message.getAttribute("status"); 
			if (status != 'SUCCESS'){
				alertBox("updatePopup: An unexpected error occurred : "+httpObject.responseText);
			} else {	
				page_id = message.getAttribute("page_id"); 
				PopupPageObj = document.getElementById('POPUP');
				popup_page_body = message.firstChild.nodeValue;
				PopupPageObj.innerHTML = popup_page_body;
				popup_page_script = message.getElementsByTagName('script')[0];
				if (popup_page_script != null && popup_page_script.firstChild != null && popup_page_script.firstChild.nodeValue != null){
					eval(popup_page_script.firstChild.nodeValue);
				}				
				div_action('POPUP', 'SHOW'); // must show the object otherwose clientwidth and clientheight will return 0
				PopupPageObj.style.left = (document.documentElement.scrollLeft+(width -PopupPageObj.clientWidth )/2)+'px';
				PopupPageObj.style.top  = (document.documentElement.scrollTop +(height-PopupPageObj.clientHeight)/2)+'px';
			}  
		}
		callNext();
	} 
}

function div_action(_objid, _action){
	var _obj = null; 
	_obj = findObj(_objid);
	if (_obj != null){
		switch (_action){
			case 'SHOW':
				_obj.style.visibility = "";
				if (_obj.style.display != null){
					_obj.style.display = "block";
				}
				break;
			case 'HIDE':
				_obj.style.visibility = "Hidden";
				if (_obj.style.display != null){
					_obj.style.display = "none";
				}
				break;
			default:
				_obj.style.visibility = "";
				if (_obj.style.display != null){
					_obj.style.display = _action;
				}
		}
	}
	return false;
}

function updateInnerHTML(){
    if(httpObject.readyState == 4){
		var message;
		if (httpObject.responseXML.documentElement != null){
			messageDoc = httpObject.responseXML;
	        message = httpObject.responseXML.documentElement;
		} else {
			messageDoc = httpObject.responseXML.xml;
	        message = httpObject.responseXML.xml.getElementsByTagName('message')[0];
		}
		if (message != null){
			var action = message.getAttribute("action"); 
			var status = message.getAttribute("status"); 
			if (status != 'SUCCESS'){
				alertBox("An unexpected error occurred:"+message.firstChild.nodeValue);
			} else {	
				var field_id = message.getAttribute("field_id"); 
				fieldObj = document.getElementById(field_id);
				_html = message.firstChild.nodeValue;
				fieldObj.innerHTML = _html;				page_script = message.getElementsByTagName('script')[0];
				if (page_script != null && page_script.firstChild != null && page_script.firstChild.nodeValue != null){
					eval(page_script.firstChild.nodeValue);
				}

			}  
		}
		callNext();
	} 
}

function updateDiv(_divId){
    if(httpObject.readyState == 4){
		var message;
		if (httpObject.responseXML.documentElement != null){
			messageDoc = httpObject.responseXML;
	        message = httpObject.responseXML.documentElement;
		} else {
			messageDoc = httpObject.responseXML.xml;
	        message = httpObject.responseXML.xml.getElementsByTagName('message')[0];
		}
		if (message != null){
			var action = message.getAttribute("action"); 
			var status = message.getAttribute("status"); 
			if (status != 'SUCCESS'){
				alertBox("An unexpected error occurred:"+message.firstChild.nodeValue);
			} else {	
				var divObj = document.getElementById(_divId);
				_html = message.firstChild.nodeValue;
				divObj.innerHTML = _html;
				page_script = message.getElementsByTagName('script')[0];
				if (page_script != null && page_script.firstChild != null && page_script.firstChild.nodeValue != null){
					eval(page_script.firstChild.nodeValue);
				}
			}  
		}
		callNext();
	} 
}

function getFieldSync(field_id,_urlParams){	
	var _xml = callWebSiteSync(_urlParams); 
	var message;
	if (_xml.documentElement != null){
		messageDoc = _xml;
		message = _xml.documentElement;
	} else {
		messageDoc = _xml.xml;
		message = _xml.xml.getElementsByTagName('message')[0];
	}
	if (message != null){
		var action = message.getAttribute("action"); 
		var status = message.getAttribute("status"); 
		if (status != 'SUCCESS'){
			alertBox("An unexpected error occurred:"+message.firstChild.nodeValue);
		} else {	
			fieldObj = document.getElementById(field_id);
			_html = message.firstChild.nodeValue;
			fieldObj.innerHTML = _html;
			page_script = message.getElementsByTagName('script')[0];
			if (page_script != null && page_script.firstChild != null && page_script.firstChild.nodeValue != null){
				eval(page_script.firstChild.nodeValue);
			}
		}  
	}
}

function getComboSync(field_id,_urlParams){	
	var _xml = callWebSiteSync(_urlParams); 
	var message;

	if (_xml.documentElement != null){
		messageDoc = _xml;
		message = _xml.documentElement;
	} else {
		messageDoc = _xml.xml;
		message = _xml.xml.getElementsByTagName('message')[0];
	}
	if (message != null){
		var action = message.getAttribute("action"); 
		var status = message.getAttribute("status"); 
		if (status != 'SUCCESS'){
			alertBox("An unexpected error occurred:"+message.firstChild.nodeValue);
		} else {	
			_html = message.firstChild.nodeValue;
			$("#"+field_id).html(_html);
			page_script = message.getElementsByTagName('script')[0];
			if (page_script != null && page_script.firstChild != null && page_script.firstChild.nodeValue != null){
				eval(page_script.firstChild.nodeValue);
			}
		}  
	}
}

function alertBox(alertText,alertTitle,iconType){
		if (alertTitle == "" || typeof alertTitle == "undefined"){alertTitle = "Error";}
		if (iconType == "" || typeof iconType == "undefined"){iconType = "alert";}
		var alertBox = $("<div></div>")
			.html("<span class='ui-icon ui-icon-"+iconType+"' style='float:left; margin:0 7px 50px 0;'></span>"+alertText)
			.dialog({
				autoOpen: false,
				title: alertTitle,
				modal: true,
				resizable: false,
				height: 140,
				buttons: {
					"OK": function() {
						$(this).dialog("close");
					}
				}			
			});
		alertBox.dialog("open");
}

function updateComboOptions(){
    if(httpObject.readyState == 4){
		var message;
		if (httpObject.responseXML.documentElement != null){
			var messageDoc = httpObject.responseXML;
	        var message = httpObject.responseXML.documentElement;
		} else {
			var messageDoc = httpObject.responseXML.xml;
	        var message = httpObject.responseXML.xml.getElementsByTagName('message')[0];
		}
		if (message != null){
			var action = message.getAttribute("action"); 
			var status = message.getAttribute("status"); 
			if (status != 'SUCCESS'){
				alertBox("An unexpected error occurred:"+message.firstChild.nodeValue);
			} else {	
				var field_id = message.getAttribute("field_id"); 
				fieldObj = document.getElementById(field_id);
				fieldObj.innerHTML = "";
				optionsXML = message.getElementsByTagName('option');
				for (optionNo=0; optionNo < optionsXML.length; optionNo++){
				  optionValue = optionsXML[optionNo].getAttribute("value"); 
				  optionSelected = optionsXML[optionNo].getAttribute("selected"); 
				  if(optionsXML[optionNo].firstChild !=null){optionText = optionsXML[optionNo].firstChild.nodeValue;} else {optionText="";} 
				  var newOpt = new Option(optionText, optionValue);
				  fieldObj.options[optionNo] = newOpt;
				  if (optionSelected=="true"){
					  fieldObj.options[optionNo].selected = true;
				  }
				}
			}  
		}
		callNext();
	} 
}

function getHTTPObject(){
   if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
   else if (window.XMLHttpRequest) return new XMLHttpRequest();   
   else {
         alertBox("Your browser does not support AJAX.");      
		 return null;   
   }
}    

function getFieldValue(fieldID)
{
	var field = findObj(fieldID);

	var value = "";
	
	if (field != null){
		if (field.tagName == "SELECT") {
			if (field.options.length > 0){
				value = field.options[field.options.selectedIndex].value;
			}
		} else {
			if (field.type != "checkbox" || field.checked){
				value = field.value;
			}
		}
	}
	return value;
}

function getFieldText(fieldID)
{
	var field = findObj(fieldID);

	var text = "";
	
	if (field != null){
		if (field.tagName == "SELECT") {
			if (field.options.length > 0){
				text = field.options[field.options.selectedIndex].text;
			}
		} else {
			text = field.value;
		}
	}
	return text;
}

/*
function getXMLValue(_xml,_nodename,_no){
	if (_no == null){_no = 0;} 
	_value = "";
	_node = _xml.getElementsByTagName(_nodename);
	if (_node != null){
		if (_node.length > _no){
			_value = _node[_no].textContent;
		}
	}
	return _value;
}
*/

function getXMLValue(_xml,_nodename,_no){
	return $($(_xml).find(_nodename)[_no]).text();
}

/*
function getNodeValue(_node){
	var _value = "";
	if (_node != null){
		_value = _node.textContent;
	}
	return _value;
}
*/
function getNodeValue(_node){
	return $(_node).text();
}

/*
function setXMLValue(_xml,_nodename,_no,_value){
	if (_no == null){_no = 0;} 
	_obj = null;
	_node = _xml.getElementsByTagName(_nodename);
	if (_node != null){
		if (_node.length > _no){
			_obj = _node[_no];
			_node[_no].textContent = _value;
		}
	}
	return _obj;
}
*/
function setXMLValue(_xml,_nodename,_no,_value){
	_obj = getXMLObj(_xml,_nodename,_no);
	$(_obj).text(_value);
	return _obj;
}

function getXMLObj(_xml,_nodename,_no){
	if (_no == null){_no = 0;} 
	_obj = null;
	_node = _xml.getElementsByTagName(_nodename);
	if (_node != null){
		if (_node.length > _no){
			_obj = _node[_no];
		}
	}
	return _obj;
}

function getXMLAttribute(_xml,_nodename,_no,_attribute){
	var _obj = getXMLObj(_xml,_nodename,_no);
	var _value = "";
	if (_obj != null){
		if (_obj.attributes != null){
			_attributeNode = _obj.attributes.getNamedItem(_attribute)
			if (_attributeNode != null){
				_value = _attributeNode.nodeValue;
			}
		}
	}
	return _value;

}
function getNodeAttribute(_obj,_attribute){
	var _value = "";
	if (_obj != null){
		if (_obj.attributes != null){
			_attributeNode = _obj.attributes.getNamedItem(_attribute)
			if (_attributeNode != null){
				_value = _attributeNode.nodeValue;
			}
		}
	}
	return _value;
}

function addXMLNode(_xml,_parent,_nodename,_value){
	var _node = _xml.createElement(_nodename);
	var _valueNode = _xml.createTextNode(_value);
    _node.appendChild(_valueNode);
    _parent.appendChild(_node);
	return _node;
}

function setFieldValue(fieldID,value){
	var field = findObj(fieldID);

	if (field != null){
		if (field.tagName == "SELECT") {
			for (i=0; i<field.options.length; i++) {
				if (field.options[i].value == value) {
					field.selectedIndex = i;
				}
			}
		} else {
			if (field.type == "checkbox"){
				field.checked = (field.value == value);
			} else {
				field.value = value;
			}
		}
	}
}

function contactus(){
		var _urlParams = ({
							action:"CONTACTUS",
						   	contactusName:$("#contactusName").val(),
						   	contactusEmail:$("#contactusEmail").val(),
						   	contactusSubject:$("#contactusSubject").val(),
						   	contactusBody:$("#contactusBody").val()
						  });
	    $.ajax({
	        type: "POST",
	        url: "DGRAIR.php",
	        data: _urlParams,
	        dataType: "xml",
	        success: function(xml) {
				$(xml).find("message").each(function(){
					var message = $(this);	
					if (message != null){
						var action = message.attr("action"); 
						var status = message.attr("status"); 
						if (status != 'SUCCESS'){
						  alertBox("Unfortunately we were unable to send your message at this time. ");
						} else {
						  alertBox("Thankyou, your message has been sent.");
						  updateMainPage({action:"GETPAGELET",page_id:"WELCOME"});
						}   
					}
				});
			}
		}); 

}

function packForm(formName,prefix)
{
	var elementsInputs;
	var elementsSelects;
	var elementsTextarea;
	var packedData = '';

	currentForm = document.getElementById(formName);

	if(currentForm != null){
		elementsInputs = currentForm.getElementsByTagName("input");
		for (var intCounter = 0; intCounter < elementsInputs.length; intCounter++){
			if (elementsInputs[intCounter].id.substr(0,prefix.length) == prefix || prefix == ""){
				if (elementsInputs[intCounter].type != "checkbox" || elementsInputs[intCounter].checked){
					packedData += '&' + elementsInputs[intCounter].id + "=" + encodeURIComponent(elementsInputs[intCounter].value);
				}
			}
		}
		elementsSelects = currentForm.getElementsByTagName("select");
		for (var intCounter = 0; intCounter < elementsSelects.length; intCounter++){
			if (elementsSelects[intCounter].id.substr(0,prefix.length) == prefix || prefix == ""){
				packedData += '&' + elementsSelects[intCounter].id + "=" + encodeURIComponent(elementsSelects[intCounter].options[elementsSelects[intCounter].options.selectedIndex].value);
			}
		}
		elementsTextarea = currentForm.getElementsByTagName("textarea");
		for (var intCounter = 0; intCounter < elementsTextarea.length; intCounter++){
			if (elementsTextarea[intCounter].id.substr(0,prefix.length) == prefix || prefix == ""){
				packedData += '&' + elementsTextarea[intCounter].id + "=" + encodeURIComponent(elementsTextarea[intCounter].value);
			}
		}
	}
	return packedData;
}

/*
var DragHandler = {


    // private property.
    _oElem : null,


    // public method. Attach drag handler to an element.
    attach : function(ID,barX,barY,barWidth,barHeight) {
		oElem = document.getElementById(ID);
		oElem.onmousedown = DragHandler._dragBegin;

		oElem.barX = barX;
		oElem.barY = barY;
		oElem.barWidth = oElem.clientWidth - barX; 
		oElem.barHeight = oElem.clientHeight - barY; 
		if (barWidth != null) {oElem.barWidth = barWidth;}
		if (barHeight != null) {oElem.barHeight = barHeight;}

	// callbacks
        oElem.dragBegin = new Function();
        oElem.drag = new Function();
        oElem.dragEnd = new Function();

        return oElem;
    },


    // private method. Begin drag process.
    _dragBegin : function(e) {
        var oElem = DragHandler._oElem = this;

        if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; }
        if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; }

        var x = parseInt(oElem.style.left);
        var y = parseInt(oElem.style.top);

        e = e ? e : window.event;
		
//		alertBox(oElem.barHeight);
//		alertBox('clientX:'+e.clientX+', clientY:'+e.clientY+', X:'+(x+oElem.barX)+', Y:'+(y+oElem.barY)+', width:'+(x+oElem.barX+oElem.barWidth)+', height:'+(y+oElem.barY+oElem.barHeight));

		if (e.clientX >= x+oElem.barX && e.clientX <= x+oElem.barX+oElem.barWidth && e.clientY >= y+oElem.barY && e.clientY <= y+oElem.barY+oElem.barHeight){
			oElem.mouseX = e.clientX;
			oElem.mouseY = e.clientY;
			oElem.dragBegin(oElem, x, y);
	
			document.onmousemove = DragHandler._drag;
			document.onmouseup = DragHandler._dragEnd;
	        return false;
		}
	},


    // private method. Drag (move) element.
    _drag : function(e) {
        var oElem = DragHandler._oElem;

        var x = parseInt(oElem.style.left);
        var y = parseInt(oElem.style.top);

        e = e ? e : window.event;
        oElem.style.left = x + (e.clientX - oElem.mouseX) + 'px';
        oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';

        oElem.mouseX = e.clientX;
        oElem.mouseY = e.clientY;

        oElem.drag(oElem, x, y);

        return false;
    },


    // private method. Stop drag process.
    _dragEnd : function() {
        var oElem = DragHandler._oElem;

        var x = parseInt(oElem.style.left);
        var y = parseInt(oElem.style.top);

        oElem.dragEnd(oElem, x, y);

        document.onmousemove = null;
        document.onmouseup = null;
        DragHandler._oElem = null;
    }

}
*/

function IsNumeric(sText){
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
      }
   }
   return IsNumber;   
}

function IsInteger(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
      }
   }
   return IsNumber;   
}

function IsUNID(sText){
   var ValidChars = "0123456789";
   var IsValid=true;
   var Char;
   
   if (substr(sText,0,2) == 'UN' || substr(sText,0,2) == 'ID'){ 
	   for (i = 0; i < sText.length && IsNumber == true; i++) { 
		  Char = sText.charAt(i); 
		  if (ValidChars.indexOf(Char) == -1) {
			 IsValid = false;
		  }
	   }
   } else {
	   IsValid = false;
   }
   return IsValid;   
}

function buildCheckBox(_fieldID,_setValue,_value,_classname){
	_cbDiv = document.createElement("div");
	_cbDiv.id = "FLD_"+_fieldID;
	
	if(_classname != ""){
		_cbDiv.className = _classname;
	} else {
		_cbDiv.style.display = "inline";
	}

	_checked = "";
	if (_setValue == _value){_checked = "checked";}

	_cbDiv.innerHTML = "<input type='checkbox' id='"+_fieldID+"' name='"+_fieldID+"' value='"+_setValue+"' "+_checked+"/>";

	return _cbDiv;
}

function buildText(_fieldID,_value,_classname){

	var _tbDiv = el("TXT_"+_fieldID);

	if (_tbDiv == null){ 
		_tbDiv = document.createElement("div");
		_tbDiv.id = "TXT_"+_fieldID;
	}
	
	if(_classname != ""){
		_tbDiv.className = _classname;
	} else {
		_tbDiv.style.display = "inline";
	}
	
	if (_value == ""){
		_tbDiv.innerHTML = "&nbsp;";
	} else {
		_tbDiv.innerHTML = _value;
	}


	return _tbDiv;
}

function buildInput(_fieldID,_value,_size,_classname){

	var _tbDiv = el("FLD_"+_fieldID);

	if (_tbDiv == null){ 
		_tbDiv = document.createElement("div");
		_tbDiv.id = "FLD_"+_fieldID;
	}
	
	if(_classname != ""){
		_tbDiv.className = _classname;
	} else {
		_tbDiv.style.display = "inline";
	}

    var input_element 		= document.createElement("input");
	input_element.id 		= _fieldID;
	input_element.name 		= _fieldID;
	input_element.size 		= _size;
	input_element.value 	= _value;
	_tbDiv.appendChild(input_element);

	return _tbDiv;
}

function buildHidden(_fieldID,_value){

    var input_element 		= document.createElement("input");
	input_element.type		= "hidden";
	input_element.id 		= _fieldID;
	input_element.name 		= _fieldID;
	input_element.value 	= _value;

	return input_element;
}

function cutzero(_value) { 
	if (typeof(_value) == "undefined"){
		return 0;
	}
	return _value.replace("/(\.\d+?)0+$/", "$1", _value)*1;
}

var c_liquids = new Array("L","ML","BASE");
var c_weight = new Array("KG","G","Kg G","BASE");
var c_radac = new Array("TBQ","BQ","GBQ","MBQ","PBQ","cBQ","dBQ","daBQ","hBQ","kBQ","nBQ","uBQ","BASE");

var v_liquids = new Array(0,-3,0);
var v_weight = new Array(0,-3,0,0);
var v_radac = new Array(12,0,9,6,15,-2,-1,1,2,3,-9,-6,12);

function Convert_UOM(_fromUOM,_toUOM,_pAmount){
	var _fromUOMType = "";
	var _fromUOMFactor = 0;
	var _amount = parseFloat(_pAmount);
	if (c_liquids.indexOf(_fromUOM) > -1){
		_fromUOMType = "L";
		_fromUOMFactor = v_liquids[c_liquids.indexOf(_fromUOM)];
	} else 	if (c_weight.indexOf(_fromUOM) > -1){
		_fromUOMType = "W";
		_fromUOMFactor = v_weight[c_weight.indexOf(_fromUOM)];
	} else 	if (c_radac.indexOf(_fromUOM) > -1){
		_fromUOMType = "R";
		_fromUOMFactor = v_radac[c_radac.indexOf(_fromUOM)];	
	}

	var _toUOMType = "";
	var _toUOMFactor = 0;
	if (c_liquids.indexOf(_toUOM) > -1){
		_toUOMType = "L";
		_toUOMFactor = v_liquids[c_liquids.indexOf(_toUOM)];
	} else 	if (c_weight.indexOf(_toUOM) > -1){
		_toUOMType = "W";
		_toUOMFactor = v_weight[c_weight.indexOf(_toUOM)];
	} else 	if (c_radac.indexOf(_toUOM) > -1){
		_toUOMType = "R";
		_toUOMFactor = v_radac[c_radac.indexOf(_toUOM)];
	}

	if (_fromUOM == _toUOM){
		_returnAmount = _amount;
	} else {
		if (_fromUOMFactor == 0){
			_fromAmount = _amount;
		} else {
			_fromAmount = (_amount * (Math.pow(10,(_fromUOMFactor))));
		}
		if (_toUOMFactor == 0){
			_toAmount = _fromAmount;
		} else {
			_toAmount = (_fromAmount * (Math.pow(10,(-1 * _toUOMFactor))));
		}
		_returnAmount = _toAmount;
	}
	return _returnAmount;
}

function findBestUOM(_pAmount, _UOM){
	var returnUOM = _UOM; 
	var _amount = parseFloat(_amount);
	var returnAmount = parseFloat(_amount);
	var _UOMType = "";
	var stringAmount = cutzero(number_format(returnAmount,15,'.',''));
	if (stringAmount == "NaN"){
		strngAmount = "999999999999.999999999999999";
	}
	
	if (c_liquids.indexOf(_UOM) > -1){
		_UOMType = "L";
	} else 	if (c_weight.indexOf(_UOM) > -1){
		_UOMType = "W";
	} else 	if (c_radac.indexOf(_UOM) > -1){
		_UOMType = "R";
	}
	
	var CodeArray = new Array(); 
	
	if (_UOMType != ""){
		switch (_UOMType){
			case "L":
				CodeArray = c_liquids;
				ValueArray = v_liquids;
				break;
			case "W":
				CodeArray = c_weight;
				ValueArray = v_weight;
				break;
			case "R":
				CodeArray = c_radac;
				ValueArray = v_radac;
				break;
		}
		for (var i=0; i<CodeArray.length; i++){
			var _newAmount = _amount;
			if (ValueArray[i] != 0){
				_newAmount = (_amount * (Math.pow(10,ValueArray[i])));
			}
			newStringAmount = cutzero(number_format(_newAmount,15,'.',''));
			if (newStringAmount != "NaN"){
				if(String(newStringAmount).length < String(stringAmount).length){
					stringAmount = newStringAmount;
					returnUOM = CodeArray[i];
					returnAmount = _newAmount;
				}
			}
		}
	}
	return parseFloat(returnUOM);
}

Array.prototype.contains = function(obj) {
  var i = this.length;
  while (i--) {
    if (this[i] === obj) {
      return true;
    }
  }
  return false;
}

function integerInput(evt) {
    evt = (evt) ? evt : window.event
    var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        status = "This field accepts numbers only."
        return false
    }
    status = ""
    return true
}

function compareXMLs(_XML1,_XML2){
	
	var xmlText1 = xmlText(_XML1);
	var xmlText2 = xmlText(_XML2);

	return (xmlText1 != xmlText2);
}

function xmlText(_xmlNode) {
	var tmpText = "";
	if(_xmlNode.hasChildNodes()) {		
		tmpText += ('<'+_xmlNode.tagName+'>');
		var nodes=_xmlNode.childNodes.length;
		for(var i=0; i<_xmlNode.childNodes.length; i++){
			tmpText += xmlText(_xmlNode.childNodes(i));
		}
	} else {
		if (typeof _xmlNode.tagName != "undefined"){
			tmpText += ('<'+_xmlNode.tagName+'>');
		}
		tmpText += (_xmlNode.textContent);
	}
	return tmpText;
}

function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function str_rep(n) {
   var s = "", t = this.toString()
   while (--n >= 0) s += t
   return s
}

String.prototype.rep = str_rep

